Lock Screen: Allow switching to other clients, fix qiuick re-lock
This commit is contained in:
parent
745363609e
commit
2d33c88603
@ -107,6 +107,7 @@ const LeftMainHeader: FC<OwnProps & StateProps> = ({
|
||||
openChatByUsername,
|
||||
lockScreen,
|
||||
requestNextSettingsScreen,
|
||||
skipLockOnUnload,
|
||||
} = getActions();
|
||||
|
||||
const lang = useLang();
|
||||
@ -221,7 +222,12 @@ const LeftMainHeader: FC<OwnProps & StateProps> = ({
|
||||
const handleSwitchToWebK = useCallback(() => {
|
||||
setPermanentWebVersion('K');
|
||||
clearWebsync();
|
||||
}, []);
|
||||
skipLockOnUnload();
|
||||
}, [skipLockOnUnload]);
|
||||
|
||||
const handleSwitchToLegacy = useCallback(() => {
|
||||
skipLockOnUnload();
|
||||
}, [skipLockOnUnload]);
|
||||
|
||||
const handleOpenTipsChat = useCallback(() => {
|
||||
openChatByUsername({ username: lang('Settings.TipsUsername') });
|
||||
@ -342,6 +348,7 @@ const LeftMainHeader: FC<OwnProps & StateProps> = ({
|
||||
<MenuItem
|
||||
icon="char-W"
|
||||
href={LEGACY_VERSION_URL}
|
||||
onClick={handleSwitchToLegacy}
|
||||
>
|
||||
Switch to Old Version
|
||||
</MenuItem>
|
||||
|
||||
@ -119,8 +119,11 @@ addActionHandler('goToAuthQrCode', (global) => {
|
||||
});
|
||||
|
||||
addActionHandler('saveSession', (global, actions, payload) => {
|
||||
const { sessionData } = payload;
|
||||
if (global.passcode.isScreenLocked) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { sessionData } = payload;
|
||||
if (sessionData) {
|
||||
storeSession(payload.sessionData, global.currentUserId);
|
||||
} else {
|
||||
|
||||
@ -6,8 +6,9 @@ import { clearEncryptedSession, encryptSession, setupPasscode } from '../../../u
|
||||
import { forceUpdateCache, serializeGlobal } from '../../cache';
|
||||
import { onBeforeUnload } from '../../../util/schedulers';
|
||||
|
||||
let noLockOnUnload = false;
|
||||
onBeforeUnload(() => {
|
||||
if (getGlobal().passcode.hasPasscode) {
|
||||
if (getGlobal().passcode.hasPasscode && !noLockOnUnload) {
|
||||
clearStoredSession();
|
||||
}
|
||||
});
|
||||
@ -80,3 +81,7 @@ addActionHandler('setPasscodeError', (global, actions, payload) => {
|
||||
addActionHandler('clearPasscodeError', (global) => {
|
||||
return updatePasscodeSettings(global, { error: undefined });
|
||||
});
|
||||
|
||||
addActionHandler('skipLockOnUnload', () => {
|
||||
noLockOnUnload = true;
|
||||
});
|
||||
|
||||
@ -5,6 +5,7 @@ import { IS_MOCKED_CLIENT } from '../config';
|
||||
import { initCache, loadCache } from './cache';
|
||||
import { cloneDeep } from '../util/iteratees';
|
||||
import { updatePasscodeSettings } from './reducers';
|
||||
import { clearStoredSession } from '../util/sessions';
|
||||
|
||||
initCache();
|
||||
|
||||
@ -18,6 +19,8 @@ addActionHandler('init', () => {
|
||||
global = updatePasscodeSettings(global, {
|
||||
isScreenLocked: true,
|
||||
});
|
||||
|
||||
clearStoredSession();
|
||||
}
|
||||
|
||||
return global;
|
||||
|
||||
@ -886,6 +886,7 @@ export interface ActionPayloads {
|
||||
resetInvalidUnlockAttempts: never;
|
||||
setPasscodeError: { error: string };
|
||||
clearPasscodeError: never;
|
||||
skipLockOnUnload: never;
|
||||
|
||||
// Settings
|
||||
requestNextSettingsScreen: SettingsScreens;
|
||||
|
||||
@ -54,6 +54,7 @@ export function clearStoredSession() {
|
||||
'dc',
|
||||
...DC_IDS.map((dcId) => `dc${dcId}_auth_key`),
|
||||
...DC_IDS.map((dcId) => `dc${dcId}_hash`),
|
||||
...DC_IDS.map((dcId) => `dc${dcId}_server_salt`),
|
||||
].forEach((key) => {
|
||||
localStorage.removeItem(key);
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user