1
0
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:
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;
setVal(newVal);
if (newVal) {
const token = await window.user.getIdToken();
const token = await window.user.firebaseUser.getIdToken();
let res;
try {
res = await fetch(

View File

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

View File

@@ -157,7 +157,7 @@ function getArrayFromQuerySnapshot(querySnapshot) {
return {};
}
const user = doc.data();
window.user = { ...window.user, ...user };
return user;
});
}

View File

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