Lock Screen: Force cache on setup
This commit is contained in:
parent
c5c44eddd2
commit
9b2cb2730a
@ -202,7 +202,7 @@ addActionHandler('deleteDeviceToken', (global) => {
|
|||||||
|
|
||||||
addActionHandler('lockScreen', async (global) => {
|
addActionHandler('lockScreen', async (global) => {
|
||||||
const sessionJson = JSON.stringify({ ...loadStoredSession(), userId: global.currentUserId });
|
const sessionJson = JSON.stringify({ ...loadStoredSession(), userId: global.currentUserId });
|
||||||
const globalJson = serializeGlobal();
|
const globalJson = serializeGlobal(global);
|
||||||
|
|
||||||
await encryptSession(sessionJson, globalJson);
|
await encryptSession(sessionJson, globalJson);
|
||||||
forgetPasscode();
|
forgetPasscode();
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { addActionHandler, setGlobal, getGlobal } from '../../index';
|
|||||||
import { clearPasscodeSettings, updatePasscodeSettings } from '../../reducers';
|
import { clearPasscodeSettings, updatePasscodeSettings } from '../../reducers';
|
||||||
import { clearStoredSession, loadStoredSession, storeSession } from '../../../util/sessions';
|
import { clearStoredSession, loadStoredSession, storeSession } from '../../../util/sessions';
|
||||||
import { clearEncryptedSession, encryptSession, setupPasscode } from '../../../util/passcode';
|
import { clearEncryptedSession, encryptSession, setupPasscode } from '../../../util/passcode';
|
||||||
import { serializeGlobal } from '../../cache';
|
import { forceUpdateCache, serializeGlobal } from '../../cache';
|
||||||
import { onBeforeUnload } from '../../../util/schedulers';
|
import { onBeforeUnload } from '../../../util/schedulers';
|
||||||
|
|
||||||
onBeforeUnload(() => {
|
onBeforeUnload(() => {
|
||||||
@ -19,7 +19,11 @@ addActionHandler('setPasscode', async (global, actions, { passcode }) => {
|
|||||||
await setupPasscode(passcode);
|
await setupPasscode(passcode);
|
||||||
|
|
||||||
const sessionJson = JSON.stringify({ ...loadStoredSession(), userId: global.currentUserId });
|
const sessionJson = JSON.stringify({ ...loadStoredSession(), userId: global.currentUserId });
|
||||||
const globalJson = serializeGlobal();
|
const globalJson = serializeGlobal(updatePasscodeSettings(getGlobal(), {
|
||||||
|
hasPasscode: true,
|
||||||
|
error: undefined,
|
||||||
|
isLoading: false,
|
||||||
|
}));
|
||||||
|
|
||||||
await encryptSession(sessionJson, globalJson);
|
await encryptSession(sessionJson, globalJson);
|
||||||
|
|
||||||
@ -28,6 +32,8 @@ addActionHandler('setPasscode', async (global, actions, { passcode }) => {
|
|||||||
error: undefined,
|
error: undefined,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
forceUpdateCache(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
addActionHandler('clearPasscode', (global) => {
|
addActionHandler('clearPasscode', (global) => {
|
||||||
|
|||||||
@ -260,15 +260,21 @@ function updateCache() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
forceUpdateCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function forceUpdateCache(noEncrypt = false) {
|
||||||
|
const global = getGlobal();
|
||||||
const { hasPasscode, isScreenLocked } = global.passcode;
|
const { hasPasscode, isScreenLocked } = global.passcode;
|
||||||
const serializedGlobal = serializeGlobal();
|
const serializedGlobal = serializeGlobal(global);
|
||||||
|
|
||||||
if (hasPasscode) {
|
if (hasPasscode) {
|
||||||
if (!isScreenLocked) {
|
if (!isScreenLocked && !noEncrypt) {
|
||||||
void encryptSession(undefined, serializedGlobal);
|
void encryptSession(undefined, serializedGlobal);
|
||||||
}
|
}
|
||||||
|
|
||||||
localStorage.setItem(GLOBAL_STATE_CACHE_KEY, JSON.stringify(clearGlobalForLockScreen(global)));
|
const serializedGlobalClean = JSON.stringify(clearGlobalForLockScreen(global));
|
||||||
|
localStorage.setItem(GLOBAL_STATE_CACHE_KEY, serializedGlobalClean);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -276,8 +282,7 @@ function updateCache() {
|
|||||||
localStorage.setItem(GLOBAL_STATE_CACHE_KEY, serializedGlobal);
|
localStorage.setItem(GLOBAL_STATE_CACHE_KEY, serializedGlobal);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function serializeGlobal() {
|
export function serializeGlobal(global: GlobalState) {
|
||||||
const global = getGlobal();
|
|
||||||
const reducedGlobal: GlobalState = {
|
const reducedGlobal: GlobalState = {
|
||||||
...INITIAL_STATE,
|
...INITIAL_STATE,
|
||||||
...pick(global, [
|
...pick(global, [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user