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