mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-23 23:11:12 +02:00
fix sharing n auth flow
This commit is contained in:
@@ -36,7 +36,7 @@ export function Share({
|
||||
const newVal = e.target.checked;
|
||||
setVal(newVal);
|
||||
if (newVal) {
|
||||
const token = await window.user.getIdToken();
|
||||
const token = await window.user.firebaseUser.getIdToken();
|
||||
let res;
|
||||
try {
|
||||
res = await fetch(
|
||||
|
@@ -23,7 +23,8 @@ import {
|
||||
getCompleteHtml,
|
||||
getFilenameFromUrl,
|
||||
prettify,
|
||||
sanitizeSplitSizes
|
||||
sanitizeSplitSizes,
|
||||
persistAuthUserLocally
|
||||
} from '../utils';
|
||||
import {
|
||||
linearizeFiles,
|
||||
@@ -183,9 +184,24 @@ export default class App extends Component {
|
||||
if (authUser) {
|
||||
log('You are -> ', authUser);
|
||||
alertsService.add('You are now logged in!');
|
||||
this.setState({ user: authUser });
|
||||
window.user = authUser;
|
||||
window.localStorage.setItem('user', authUser);
|
||||
|
||||
let newUser = {
|
||||
uid: authUser.uid,
|
||||
photoURL: authUser.photoURL
|
||||
};
|
||||
// port some keys from localstorage user to new auth user
|
||||
const keysToPort = ['isPro', 'displayName', 'settings'];
|
||||
keysToPort.forEach(key => {
|
||||
if (user && user[key] !== undefined) {
|
||||
newUser[key] = user[key];
|
||||
}
|
||||
});
|
||||
// storing actual firebase user object for accessing functions like updateProfile
|
||||
newUser.firebaseUser = authUser;
|
||||
|
||||
this.setState({ user: newUser });
|
||||
window.user = newUser;
|
||||
// window.localStorage.setItem('user', authUser);
|
||||
trackEvent('fn', 'loggedIn', window.IS_EXTENSION ? 'extension' : 'web');
|
||||
|
||||
if (!window.localStorage[LocalStorageKeys.ASKED_TO_IMPORT_CREATIONS]) {
|
||||
@@ -201,17 +217,23 @@ export default class App extends Component {
|
||||
trackEvent('ui', 'askToImportModalSeen');
|
||||
});
|
||||
}
|
||||
// storing actual firebase user object for accessing functions like updateProfile
|
||||
// window.user.firebaseUser = authUser
|
||||
|
||||
window.db.getUser(authUser.uid).then(customUser => {
|
||||
if (customUser) {
|
||||
const prefs = { ...this.state.prefs };
|
||||
Object.assign(prefs, authUser.settings);
|
||||
const newUser = { ...authUser, isPro: false, ...customUser };
|
||||
window.localStorage.setItem('user', newUser);
|
||||
Object.assign(prefs, customUser.settings);
|
||||
|
||||
// spreading authUser doesn't work below anymore because the required properties are
|
||||
// not enumerable anymore
|
||||
newUser = {
|
||||
...newUser,
|
||||
isPro: false,
|
||||
...customUser
|
||||
};
|
||||
window.user = newUser;
|
||||
this.setState({ user: newUser, prefs }, this.updateSetting);
|
||||
}
|
||||
persistAuthUserLocally(newUser);
|
||||
});
|
||||
} else {
|
||||
// User is signed out.
|
||||
|
@@ -157,7 +157,7 @@ function getArrayFromQuerySnapshot(querySnapshot) {
|
||||
return {};
|
||||
}
|
||||
const user = doc.data();
|
||||
window.user = { ...window.user, ...user };
|
||||
|
||||
return user;
|
||||
});
|
||||
}
|
||||
|
13
src/utils.js
13
src/utils.js
@@ -417,7 +417,7 @@ export function getCompleteHtml(html, css, js, item, isForExport) {
|
||||
? chrome.extension.getURL('lib/screenlog.js')
|
||||
: `${location.origin}${
|
||||
window.DEBUG ? '' : BASE_PATH
|
||||
}/lib/screenlog.js`) +
|
||||
}/lib/screenlog.js`) +
|
||||
'"></script>';
|
||||
}
|
||||
|
||||
@@ -661,3 +661,14 @@ export function showConfetti(time = 4) {
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
||||
/**
|
||||
* Persists the firebase user with a subset of it's keys.
|
||||
* @param {object} user User object from firebase
|
||||
*/
|
||||
export function persistAuthUserLocally(user) {
|
||||
const keys = ['uid', 'displayName', 'photoURL', 'isPro', 'settings'];
|
||||
const obj = {};
|
||||
keys.map(key => (obj[key] = user[key]));
|
||||
window.localStorage.setItem('user', JSON.stringify(obj));
|
||||
}
|
||||
|
Reference in New Issue
Block a user