1
0
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:
Kushagra Gour
2024-04-29 14:20:42 +05:30
parent aa614ec4e3
commit 2e143fb782
4 changed files with 45 additions and 12 deletions

View File

@@ -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(

View File

@@ -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.

View File

@@ -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;
}); });
} }

View File

@@ -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));
}