From ca63fcb64e3481574da5a75f26ea31e4a1bcc8b8 Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Tue, 24 Sep 2024 16:32:04 -0700 Subject: [PATCH] adding seal modal --- .../mobile/src/settings/Settings.styled.ts | 5 +- app/client/mobile/src/settings/Settings.tsx | 161 ++++++++++++++++++ 2 files changed, 165 insertions(+), 1 deletion(-) diff --git a/app/client/mobile/src/settings/Settings.styled.ts b/app/client/mobile/src/settings/Settings.styled.ts index 367ec3bc..10c9923e 100644 --- a/app/client/mobile/src/settings/Settings.styled.ts +++ b/app/client/mobile/src/settings/Settings.styled.ts @@ -49,7 +49,6 @@ export const styles = StyleSheet.create({ modalLabel: { width: '100%', fontSize: 20, - paddingLeft: 16, }, modalClose: { position: 'absolute', @@ -64,6 +63,9 @@ export const styles = StyleSheet.create({ paddingTop: 16, justifyContent: 'flex-end', }, + modalDescription: { + paddingTop: 16, + }, header: { fontSize: 22, textAlign: 'center', @@ -188,6 +190,7 @@ export const styles = StyleSheet.create({ display: 'flex', justifyContent: 'flex-begin', height: '100%', + backgroundColor: 'transparent', }, label: { fontSize: 16, diff --git a/app/client/mobile/src/settings/Settings.tsx b/app/client/mobile/src/settings/Settings.tsx index 3bc3d983..c4c1901b 100644 --- a/app/client/mobile/src/settings/Settings.tsx +++ b/app/client/mobile/src/settings/Settings.tsx @@ -12,9 +12,14 @@ export function Settings({ showLogout }: { showLogout: boolean }) { const [alert, setAlert] = useState(false); const [details, setDetails] = useState(false); const [sealing, setSealing] = useState(false); + const [sealDelete, setSealDelete] = useState(false); + const [sealReset, setSealReset] = useState(false); + const [sealConfig, setSealConfig] = useState(false); + const [savingSeal, setSavingSeal] = useState(false); const [savingDetails, setSavingDetails] = useState(false); const [savingRegistry, setSavingRegistry] = useState(false); const [savingNotifications, setSavingNotifications] = useState(false); + const [showPassword, setShowPassword] = useState(false); const selectImage = async () => { try { @@ -32,6 +37,96 @@ export function Settings({ showLogout }: { showLogout: boolean }) { } } + const setSeal = async () => { + if (!savingSeal) { + setSealDelete(false); + setSealReset(false); + setSealConfig(false); + actions.setSealPassword(''); + actions.setSealConfirm(''); + actions.setSealDelete(''); + sealOpen(); + setSavingSeal(true); + setSavingSeal(false); + } + } + + const sealUnlock = async () => { + if (!savingSeal) { + setSavingSeal(true); + try { + await actions.unlockSeal(); + setSealing(false); + } catch (err) { + console.log(err); + setSealing(false); + setAlert(true); + } + setSavingSeal(false) + } + } + + const sealForget = async () => { + if (!savingSeal) { + setSavingSeal(true); + try { + await actions.forgetSeal(); + setSealing(false); + } catch (err) { + console.log(err); + setSealing(false); + setAlert(true); + } + setSavingSeal(false); + } + } + + const sealRemove = async () => { + if (!savingSeal) { + setSavingSeal(true); + try { + await actions.clearSeal(); + setSealing(false); + } catch (err) { + console.log(err); + setSealing(false); + setAlert(true); + } + setSavingSeal(false); + } + } + + const sealCreate = async () => { + if (!savingSeal) { + setSavingSeal(true); + try { + await new Promise(r => setTimeout(r, 100)); + await actions.setSeal(); + setSealing(false); + } catch (err) { + console.log(err); + setSealing(false); + setAlert(true); + } + setSavingSeal(false); + } + } + + const sealUpdate = async () => { + if (!savingSeal) { + setSavingSeal(true); + try { + await actions.updateSeal(); + setSealing(false); + } catch (err) { + console.log(err); + setSealing(false); + setAlert(true); + } + setSavingSeal(false); + } + } + const saveDetails = async () => { if (!savingDetails) { setSavingDetails(true); @@ -343,6 +438,72 @@ export function Settings({ showLogout }: { showLogout: boolean }) { { state.strings.manageTopics } setSealing(false)} /> + { !sealDelete && !sealReset && state.config.sealSet && state.config.sealUnlocked && ( + <> + seal is unlocked + { !sealConfig && ( + hide options + )} + { sealConfig && ( + show options + )} + + )} + { !sealDelete && sealReset && state.config.sealSet && state.config.sealUnlocked && ( + <> + update seal password + + )} + { !sealDelete && state.config.sealSet && !state.config.sealUnlocked && ( + <> + seal is locked + { !sealConfig && ( + hide options + )} + { sealConfig && ( + show options + )} + + )} + { sealDelete && state.config.sealSet && ( + <> + deleting seal + + )} + { !state.config.sealSet && ( + <> + { state.strings.sealUnset } + } + right={ + showPassword ? ( + setShowPassword(false)} + /> + ) : ( + setShowPassword(true)} + /> + ) + } + onChangeText={value => actions.setPassword(value)} + /> + + + + + + )}