mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-26 08:11:17 +02:00
fix sharing n auth flow
This commit is contained in:
@@ -36,7 +36,7 @@ export function Share({
|
|||||||
const newVal = e.target.checked;
|
const newVal = e.target.checked;
|
||||||
setVal(newVal);
|
setVal(newVal);
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
const token = await window.user.getIdToken();
|
const token = await window.user.firebaseUser.getIdToken();
|
||||||
let res;
|
let res;
|
||||||
try {
|
try {
|
||||||
res = await fetch(
|
res = await fetch(
|
||||||
|
@@ -23,7 +23,8 @@ import {
|
|||||||
getCompleteHtml,
|
getCompleteHtml,
|
||||||
getFilenameFromUrl,
|
getFilenameFromUrl,
|
||||||
prettify,
|
prettify,
|
||||||
sanitizeSplitSizes
|
sanitizeSplitSizes,
|
||||||
|
persistAuthUserLocally
|
||||||
} from '../utils';
|
} from '../utils';
|
||||||
import {
|
import {
|
||||||
linearizeFiles,
|
linearizeFiles,
|
||||||
@@ -183,9 +184,24 @@ export default class App extends Component {
|
|||||||
if (authUser) {
|
if (authUser) {
|
||||||
log('You are -> ', authUser);
|
log('You are -> ', authUser);
|
||||||
alertsService.add('You are now logged in!');
|
alertsService.add('You are now logged in!');
|
||||||
this.setState({ user: authUser });
|
|
||||||
window.user = authUser;
|
let newUser = {
|
||||||
window.localStorage.setItem('user', authUser);
|
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');
|
trackEvent('fn', 'loggedIn', window.IS_EXTENSION ? 'extension' : 'web');
|
||||||
|
|
||||||
if (!window.localStorage[LocalStorageKeys.ASKED_TO_IMPORT_CREATIONS]) {
|
if (!window.localStorage[LocalStorageKeys.ASKED_TO_IMPORT_CREATIONS]) {
|
||||||
@@ -201,17 +217,23 @@ export default class App extends Component {
|
|||||||
trackEvent('ui', 'askToImportModalSeen');
|
trackEvent('ui', 'askToImportModalSeen');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// storing actual firebase user object for accessing functions like updateProfile
|
|
||||||
// window.user.firebaseUser = authUser
|
|
||||||
|
|
||||||
window.db.getUser(authUser.uid).then(customUser => {
|
window.db.getUser(authUser.uid).then(customUser => {
|
||||||
if (customUser) {
|
if (customUser) {
|
||||||
const prefs = { ...this.state.prefs };
|
const prefs = { ...this.state.prefs };
|
||||||
Object.assign(prefs, authUser.settings);
|
Object.assign(prefs, customUser.settings);
|
||||||
const newUser = { ...authUser, isPro: false, ...customUser };
|
|
||||||
window.localStorage.setItem('user', newUser);
|
// 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);
|
this.setState({ user: newUser, prefs }, this.updateSetting);
|
||||||
}
|
}
|
||||||
|
persistAuthUserLocally(newUser);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// User is signed out.
|
// User is signed out.
|
||||||
|
@@ -157,7 +157,7 @@ function getArrayFromQuerySnapshot(querySnapshot) {
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
const user = doc.data();
|
const user = doc.data();
|
||||||
window.user = { ...window.user, ...user };
|
|
||||||
return user;
|
return user;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
11
src/utils.js
11
src/utils.js
@@ -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