From 8d3639f9c9a16cc132d311e7464a5a8e7ce9ff12 Mon Sep 17 00:00:00 2001 From: v-gira Date: Mon, 9 Feb 2026 14:25:38 +0100 Subject: [PATCH 01/20] feat(appLock): add logout flow to app lock modal [WPB-23186] --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index e2dacf03cba..3f49a8da3a1 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -25,6 +25,7 @@ import {StatusCodes as HTTP_STATUS} from 'http-status-codes'; import {container} from 'tsyringe'; import {ValidationUtil} from '@wireapp/commons'; +import {Button, Input, Link, LinkVariant} from '@wireapp/react-ui-kit'; import {WebAppEvents} from '@wireapp/webapp-events'; import * as Icon from 'Components/Icon'; From 9f9844d0482a173f4ba922d778dae9461068e3dd Mon Sep 17 00:00:00 2001 From: v-gira Date: Mon, 9 Feb 2026 14:27:25 +0100 Subject: [PATCH 02/20] use ui kit for input --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index 3f49a8da3a1..a6d99472691 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -271,6 +271,12 @@ const AppLock = ({ } }; + const ErrorMessage = () => ( +

+ {unlockError} +

+ ); + return (
@@ -457,12 +463,9 @@ const AppLock = ({ {state === APPLOCK_STATE.LOCKED && (
-
- {t('modalAppLockPasscode')} -
- -

From 220986d0b92ef62094b8dcd5e8e6ac5d6485b8f1 Mon Sep 17 00:00:00 2001 From: v-gira Date: Mon, 9 Feb 2026 14:27:43 +0100 Subject: [PATCH 03/20] use ui kit for button --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index a6d99472691..a57bc722fa7 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -477,9 +477,9 @@ const AppLock = ({ error={ErrorMessage()} /> -

- {unlockError} -

+ - - -
- -
+
)} From c7c47dfa05bca51da8e4a2a24fcce19f58b8df9e Mon Sep 17 00:00:00 2001 From: v-gira Date: Mon, 9 Feb 2026 14:29:48 +0100 Subject: [PATCH 05/20] use ui kit for input --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index e8b977941b4..c00a60545dc 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -467,7 +467,6 @@ const AppLock = ({ aria-label={t('modalAppLockLockedTitle', {brandName: Config.getConfig().BRAND_NAME})} label={t('modalAppLockPasscode')} autoFocus - className="modal__input" type="password" id={Math.random().toString()} name="password" From c9d6c29c66df39cc6d8360d8647842190bdf4cf8 Mon Sep 17 00:00:00 2001 From: v-gira Date: Wed, 11 Feb 2026 18:46:22 +0100 Subject: [PATCH 06/20] remove wipe database steps from app lock modal --- .../src/script/page/AppLock/AppLock.tsx | 175 +++++------------- 1 file changed, 48 insertions(+), 127 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index c00a60545dc..63e3b2fe02c 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -21,11 +21,10 @@ import {useCallback, useEffect, useRef, useState, Fragment, FormEvent} from 'rea import {amplify} from 'amplify'; import cx from 'classnames'; -import {StatusCodes as HTTP_STATUS} from 'http-status-codes'; import {container} from 'tsyringe'; import {ValidationUtil} from '@wireapp/commons'; -import {Button, Input, Link, LinkVariant} from '@wireapp/react-ui-kit'; +import {Button, ButtonVariant, Input, Link, LinkVariant} from '@wireapp/react-ui-kit'; import {WebAppEvents} from '@wireapp/webapp-events'; import * as Icon from 'Components/Icon'; @@ -42,11 +41,10 @@ import {t} from 'Util/LocalizerUtil'; export enum APPLOCK_STATE { FORGOT = 'applock.forgot', LOCKED = 'applock.locked', + LOGOUT = 'applock.logout', NONE = 'applock.none', SETUP = 'applock.setup', SETUP_CHANGE = 'applock.setup_change', - WIPE_CONFIRM = 'applock.wipe-confirm', - WIPE_PASSWORD = 'applock.wipe-password', } const DEFAULT_INACTIVITY_APP_LOCK_TIMEOUT_IN_SEC = 60; @@ -72,7 +70,6 @@ const AppLock = ({ appLockRepository = container.resolve(AppLockRepository), }: AppLockProps) => { const [state, setState] = useState(APPLOCK_STATE.NONE); - const [wipeError, setWipeError] = useState(''); const [unlockError, setUnlockError] = useState(''); const [isVisible, setIsVisible] = useState(false); const [isLoading, setIsLoading] = useState(false); @@ -208,22 +205,22 @@ const AppLock = ({ startScheduledTimeout(); }; - const onWipeDatabase = async (event: FormEvent) => { - const target = event.target as HTMLFormElement & {password: HTMLInputElement}; - try { - setIsLoading(true); - const currentClientId = clientState.currentClient.id; - await clientRepository.clientService.deleteClient(currentClientId, target.password.value); - appLockRepository.removeCode(); - amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, true); - } catch ({code, message}) { - setIsLoading(false); - if ([HTTP_STATUS.BAD_REQUEST, HTTP_STATUS.UNAUTHORIZED, HTTP_STATUS.FORBIDDEN].includes(code)) { - return setWipeError(t('modalAppLockWipePasswordError')); - } - setWipeError(message); - } - }; + // const onWipeDatabase = async (event: FormEvent) => { + // const target = event.target as HTMLFormElement & {password: HTMLInputElement}; + // try { + // setIsLoading(true); + // const currentClientId = clientState.currentClient.id; + // await clientRepository.clientService.deleteClient(currentClientId, target.password.value); + // appLockRepository.removeCode(); + // amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, true); + // } catch ({code, message}) { + // setIsLoading(false); + // if ([HTTP_STATUS.BAD_REQUEST, HTTP_STATUS.UNAUTHORIZED, HTTP_STATUS.FORBIDDEN].includes(code)) { + // return setWipeError(t('modalAppLockWipePasswordError')); + // } + // setWipeError(message); + // } + // }; const changePassphrase = () => { setState(APPLOCK_STATE.SETUP); @@ -237,12 +234,10 @@ const AppLock = ({ const isSetupPassphraseLength = passwordRegexLength.test(setupPassphrase); const isSetupPassphraseSpecial = passwordRegexSpecial.test(setupPassphrase); - const clearWipeError = () => setWipeError(''); const clearUnlockError = () => setUnlockError(''); const onGoBack = () => setState(APPLOCK_STATE.LOCKED); const onClickForgot = () => setState(APPLOCK_STATE.FORGOT); - const onClickWipe = () => setState(APPLOCK_STATE.WIPE_CONFIRM); - const onClickWipeConfirm = () => setState(APPLOCK_STATE.WIPE_PASSWORD); + const onClickLogout = () => setState(APPLOCK_STATE.LOGOUT); const onClosed = () => { setState(APPLOCK_STATE.NONE); setSetupPassphrase(''); @@ -260,12 +255,10 @@ const AppLock = ({ return t('modalAppLockSetupTitle'); case APPLOCK_STATE.LOCKED: return t('modalAppLockLockedTitle', {brandName: Config.getConfig().BRAND_NAME}); + case APPLOCK_STATE.LOGOUT: + return t('modalAccountLogoutHeadline'); case APPLOCK_STATE.FORGOT: return t('modalAppLockForgotTitle'); - case APPLOCK_STATE.WIPE_CONFIRM: - return t('modalAppLockWipeConfirmTitle'); - case APPLOCK_STATE.WIPE_PASSWORD: - return t('modalAppLockWipePasswordTitle', {brandName: Config.getConfig().BRAND_NAME}); default: return ''; } @@ -308,22 +301,15 @@ const AppLock = ({ data-uie-name="label-applock-set-text" /> - - {/* eslint jsx-a11y/no-autofocus : "off" */} - setSetupPassphrase(event.target.value)} + onChange={(event: React.ChangeEvent) => setSetupPassphrase(event.target.value)} data-uie-status={isSetupPassphraseValid ? 'valid' : 'invalid'} data-uie-name="input-applock-set-a" autoComplete="new-password" @@ -374,24 +360,24 @@ const AppLock = ({
{!isAppLockEnforced && ( - + )} - +
)} @@ -410,17 +396,14 @@ const AppLock = ({ data-uie-name="label-applock-set-text" /> -
- {t('modalAppLockPasscode')} -
- - setSetupPassphrase(event.target.value)} + onChange={(event: React.ChangeEvent) => setSetupPassphrase(event.target.value)} data-uie-status={isSetupPassphraseValid ? 'valid' : 'invalid'} data-uie-name="input-applock-set-a" autoComplete="new-password" @@ -449,14 +432,9 @@ const AppLock = ({

- +
)} @@ -498,87 +476,30 @@ const AppLock = ({ {t('modalAppLockForgotMessage')}
- - -
- -
+ + )} - {state === APPLOCK_STATE.WIPE_CONFIRM && ( + {state === APPLOCK_STATE.LOGOUT && (
{t('modalAppLockWipeConfirmMessage')}
-
- + - -
+
)} - - {state === APPLOCK_STATE.WIPE_PASSWORD && ( -
- - -

- {wipeError} -

- -
- - - -
-
- )}
); From 446e77e1bc1e8f813042b9c15cbd825ea002307e Mon Sep 17 00:00:00 2001 From: v-gira Date: Wed, 11 Feb 2026 19:27:18 +0100 Subject: [PATCH 07/20] remove passphrase on logout --- .../src/script/page/AppLock/AppLock.tsx | 25 ++++++------------- .../repositories/user/AppLockRepository.ts | 13 +++++----- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index 63e3b2fe02c..0fef5747c18 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -205,22 +205,13 @@ const AppLock = ({ startScheduledTimeout(); }; - // const onWipeDatabase = async (event: FormEvent) => { - // const target = event.target as HTMLFormElement & {password: HTMLInputElement}; - // try { - // setIsLoading(true); - // const currentClientId = clientState.currentClient.id; - // await clientRepository.clientService.deleteClient(currentClientId, target.password.value); - // appLockRepository.removeCode(); - // amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, true); - // } catch ({code, message}) { - // setIsLoading(false); - // if ([HTTP_STATUS.BAD_REQUEST, HTTP_STATUS.UNAUTHORIZED, HTTP_STATUS.FORBIDDEN].includes(code)) { - // return setWipeError(t('modalAppLockWipePasswordError')); - // } - // setWipeError(message); - // } - // }; + const onLogout = async () => { + if (!isAppLockEnforced) { + appLockRepository.disableFeature(); + } + appLockRepository.removeCode(); + amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, true); + }; const changePassphrase = () => { setState(APPLOCK_STATE.SETUP); @@ -495,7 +486,7 @@ const AppLock = ({ {t('modalAppLockWipeConfirmGoBackButton')} - diff --git a/apps/webapp/src/script/repositories/user/AppLockRepository.ts b/apps/webapp/src/script/repositories/user/AppLockRepository.ts index 952b37821d1..24ab208d051 100644 --- a/apps/webapp/src/script/repositories/user/AppLockRepository.ts +++ b/apps/webapp/src/script/repositories/user/AppLockRepository.ts @@ -75,11 +75,12 @@ export class AppLockRepository { window.removeEventListener('storage', this.handlePassphraseStorageEvent); }; + disableFeature = () => { + this.appLockState.isActivatedInPreferences(false); + window.localStorage.removeItem(this.getEnabledStorageKey()); + }; + setEnabled = (enabled: boolean) => { - const disableFeature = () => { - this.appLockState.isActivatedInPreferences(false); - window.localStorage.removeItem(this.getEnabledStorageKey()); - }; if (enabled) { window.localStorage.setItem(this.getEnabledStorageKey(), 'true'); this.appLockState.isActivatedInPreferences(true); @@ -87,7 +88,7 @@ export class AppLockRepository { // If the user has set a passphrase we want to ask confirmation before disabling the feature PrimaryModal.show(PrimaryModal.type.CONFIRM, { primaryAction: { - action: disableFeature, + action: this.disableFeature, text: t('AppLockDisableTurnOff'), }, secondaryAction: { @@ -99,7 +100,7 @@ export class AppLockRepository { }, }); } else { - disableFeature(); + this.disableFeature(); } }; From 3da645186c1d942680c0a11029911588aed1996a Mon Sep 17 00:00:00 2001 From: v-gira Date: Thu, 12 Feb 2026 11:51:53 +0100 Subject: [PATCH 08/20] implement checkbox to clear data on logout --- .../src/script/page/AppLock/AppLock.tsx | 35 ++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index 0fef5747c18..44adbb50a72 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -24,7 +24,7 @@ import cx from 'classnames'; import {container} from 'tsyringe'; import {ValidationUtil} from '@wireapp/commons'; -import {Button, ButtonVariant, Input, Link, LinkVariant} from '@wireapp/react-ui-kit'; +import {Button, ButtonVariant, Checkbox, CheckboxLabel, Input, Link, LinkVariant} from '@wireapp/react-ui-kit'; import {WebAppEvents} from '@wireapp/webapp-events'; import * as Icon from 'Components/Icon'; @@ -74,6 +74,7 @@ const AppLock = ({ const [isVisible, setIsVisible] = useState(false); const [isLoading, setIsLoading] = useState(false); const [setupPassphrase, setSetupPassphrase] = useState(''); + const [clearData, setClearData] = useState(false); const [inactivityTimeoutId, setInactivityTimeoutId] = useState(); const [scheduledTimeoutId, setScheduledTimeoutId] = useState(); const {isAppLockActivated, isAppLockEnabled, isAppLockEnforced} = useKoSubscribableChildren(appLockState, [ @@ -82,6 +83,8 @@ const AppLock = ({ 'isAppLockEnforced', ]); + const isTemporaryClient = clientState.currentClient?.isTemporary(); + // We log the user out if there is a style change on the app element // i.e. if there is an attempt to remove the blur effect const {current: appObserver} = useRef( @@ -205,12 +208,12 @@ const AppLock = ({ startScheduledTimeout(); }; - const onLogout = async () => { + const onLogout = (clearData: boolean) => { if (!isAppLockEnforced) { appLockRepository.disableFeature(); } appLockRepository.removeCode(); - amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, true); + amplify.publish(WebAppEvents.LIFECYCLE.SIGN_OUT, SIGN_OUT_REASON.USER_REQUESTED, clearData); }; const changePassphrase = () => { @@ -228,7 +231,13 @@ const AppLock = ({ const clearUnlockError = () => setUnlockError(''); const onGoBack = () => setState(APPLOCK_STATE.LOCKED); const onClickForgot = () => setState(APPLOCK_STATE.FORGOT); - const onClickLogout = () => setState(APPLOCK_STATE.LOGOUT); + const onClickLogout = async () => { + if (isTemporaryClient) { + await clientRepository.logoutClient(); + } else { + setState(APPLOCK_STATE.LOGOUT); + } + }; const onClosed = () => { setState(APPLOCK_STATE.NONE); setSetupPassphrase(''); @@ -478,15 +487,25 @@ const AppLock = ({ {state === APPLOCK_STATE.LOGOUT && ( -
- {t('modalAppLockWipeConfirmMessage')} -
+ ) => { + const value = event.target.checked; + setClearData(value); + }} + > + + {t('modalAccountLogoutOption')} + + -
From 01680546a1fc4141adbccc07cd9fbf6f77c5840b Mon Sep 17 00:00:00 2001 From: v-gira Date: Thu, 12 Feb 2026 12:09:10 +0100 Subject: [PATCH 09/20] remove unused setter --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index 44adbb50a72..e649ca3eaf8 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -72,7 +72,6 @@ const AppLock = ({ const [state, setState] = useState(APPLOCK_STATE.NONE); const [unlockError, setUnlockError] = useState(''); const [isVisible, setIsVisible] = useState(false); - const [isLoading, setIsLoading] = useState(false); const [setupPassphrase, setSetupPassphrase] = useState(''); const [clearData, setClearData] = useState(false); const [inactivityTimeoutId, setInactivityTimeoutId] = useState(); @@ -271,7 +270,7 @@ const AppLock = ({ ); return ( - +
{!isAppLockEnforced && !isAppLockActivated && (

{t('modalAppLockForgotMessage')}

+

{t('modalAppLockForgotSecondMessage')}

- - - +
+ + +
)} @@ -502,13 +512,20 @@ const AppLock = ({ - +
+ - + +
)}
diff --git a/apps/webapp/src/script/page/AppLock/Applock.styles.ts b/apps/webapp/src/script/page/AppLock/Applock.styles.ts index 8982237d692..45a66faf032 100644 --- a/apps/webapp/src/script/page/AppLock/Applock.styles.ts +++ b/apps/webapp/src/script/page/AppLock/Applock.styles.ts @@ -19,15 +19,14 @@ import {CSSObject} from '@emotion/react'; -const unlockButtonStyle: CSSObject = { - margin: '16px 0', -}; const buttonGroupStyle: CSSObject = { margin: '32px 0', + display: 'flex', + justifyContent: 'space-around', }; -const bodyStyle: CSSObject = { - padding: '16px 16px 32px', +const buttonStyle: CSSObject = { + width: '160px', }; const headerStyle: CSSObject = { @@ -36,11 +35,6 @@ const headerStyle: CSSObject = { textTransform: 'initial', }; -const labelStyle: CSSObject = { - marginBottom: '0', - fontSize: 'var(--font-size-xsmall)', -}; - const linkStyle: CSSObject = { margin: '32px 0', fontSize: 'var(--font-size-base)', @@ -49,46 +43,14 @@ const linkStyle: CSSObject = { justifyContent: 'center', }; -const inputErrorStyle: CSSObject = { - minHeight: '14px', -}; - -const passcodeInfoStyle: CSSObject = { - margin: '2px 0', - color: 'var(--foreground)', - fontSize: 'var(--font-size-xsmall)', - fontWeight: 600, - lineHeight: 'var(--line-height-sm)', - '&:before': { - position: 'relative', - top: '2px', - display: 'block', - width: '12px', - height: '12px', - backgroundImage: - "url(\"data:image/svg+xml;utf8,\")", - backgroundRepeat: 'no-repeat', - backgroundSize: 'contain', - content: "''", - float: 'left', - }, -}; - -const passcodeInfoValidStyle: CSSObject = { - '&:before': { - backgroundImage: - "url(\"data:image/svg+xml;utf8,\")", - }, +const unlockButtonStyle: CSSObject = { + margin: '16px 0', }; export const applockStyles = { buttonGroupStyle, - bodyStyle, + buttonStyle, headerStyle, - labelStyle, linkStyle, - inputErrorStyle, - passcodeInfoStyle, - passcodeInfoValidStyle, unlockButtonStyle, }; From 6e0cbee73038cebf3015bf1092cc96d4cf9b897d Mon Sep 17 00:00:00 2001 From: v-gira Date: Fri, 13 Feb 2026 15:57:59 +0100 Subject: [PATCH 16/20] apply styling changes --- apps/webapp/src/script/page/AppLock/AppLock.tsx | 2 ++ apps/webapp/src/script/page/AppLock/Applock.styles.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index f0214c16a89..1573fff9499 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -38,6 +38,8 @@ import {Config} from 'src/script/Config'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {t} from 'Util/LocalizerUtil'; +import {applockStyles} from './Applock.styles'; + export enum APPLOCK_STATE { FORGOT = 'applock.forgot', LOCKED = 'applock.locked', diff --git a/apps/webapp/src/script/page/AppLock/Applock.styles.ts b/apps/webapp/src/script/page/AppLock/Applock.styles.ts index 45a66faf032..b1e81c96f71 100644 --- a/apps/webapp/src/script/page/AppLock/Applock.styles.ts +++ b/apps/webapp/src/script/page/AppLock/Applock.styles.ts @@ -20,7 +20,7 @@ import {CSSObject} from '@emotion/react'; const buttonGroupStyle: CSSObject = { - margin: '32px 0', + margin: '16px 0', display: 'flex', justifyContent: 'space-around', }; From 1966f68fa15812022050ac1ca5495a006cbb2483 Mon Sep 17 00:00:00 2001 From: v-gira Date: Fri, 13 Feb 2026 15:58:32 +0100 Subject: [PATCH 17/20] add localization strings --- apps/webapp/src/i18n/en-US.json | 5 +++-- apps/webapp/src/script/page/AppLock/AppLock.tsx | 2 +- apps/webapp/src/types/i18n.d.ts | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/webapp/src/i18n/en-US.json b/apps/webapp/src/i18n/en-US.json index 9167e9ef313..f940f0d033c 100644 --- a/apps/webapp/src/i18n/en-US.json +++ b/apps/webapp/src/i18n/en-US.json @@ -1261,15 +1261,16 @@ "modalAcknowledgeHeadline": "Something went wrong", "modalAppLockForgotGoBackButton": "Back", "modalAppLockForgotMessage": "The data stored on this device can only be accessed with your app lock passcode.", - "modalAppLockForgotSecondMessage":"If you have forgotten your passcode, you can log out of this account and set a new passcode the next time you log in.", + "modalAppLockForgotSecondMessage":"If you have forgotten your passcode, you can log out of this account and set a new passcode the next time you log in.", "modalAppLockForgotTitle": "Forgot passcode?", "modalAppLockLockedError": "Wrong passcode", "modalAppLockLockedForgotCTA": "Forgot passcode?", + "modalAppLockLogoutCancelButton": "Cancel", "modalAppLockInputPlaceholder": "Enter passcode", "modalAppLockLockedTitle": "Enter passcode to unlock {brandName}", "modalAppLockLockedUnlockButton": "Unlock", "modalAppLockPasscode": "Passcode", - "modalAppLockSetupAcceptButton": "Set passcode", + "modalAppLockSetupAcceptButton": "Create Passcode", "modalAppLockSetupChangeMessage": "Your organization needs to lock your app when {brandName} is not in use to keep the team safe.[br]Create a passlock to unlock {brandName}. Please, remember it, as it can not be recovered.", "modalAppLockSetupChangeTitle": "There was a change at {brandName}", "modalAppLockSetupCloseBtn": "Close window, Set app lock passcode?", diff --git a/apps/webapp/src/script/page/AppLock/AppLock.tsx b/apps/webapp/src/script/page/AppLock/AppLock.tsx index 1573fff9499..145734437ef 100644 --- a/apps/webapp/src/script/page/AppLock/AppLock.tsx +++ b/apps/webapp/src/script/page/AppLock/AppLock.tsx @@ -521,7 +521,7 @@ const AppLock = ({ onClick={onGoBack} data-uie-name="do-go-back" > - {t('modalAppLockForgotGoBackButton')} + {t('modalAppLockLogoutCancelButton')}