diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/nostr.js | 9 | ||||
| -rw-r--r-- | src/locales/en.json | 1 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/settings/[...tab]/_security.svelte | 36 |
3 files changed, 35 insertions, 11 deletions
diff --git a/src/lib/nostr.js b/src/lib/nostr.js index 987b89d0..28dbe50f 100644 --- a/src/lib/nostr.js +++ b/src/lib/nostr.js @@ -58,7 +58,7 @@ function typedArrayToBuffer(array) { return array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset); } -let getPrivateKey = async (user) => { +export let getMnemonic = async (user) => { let { cipher, username, salt } = user; let password = get(pw); @@ -85,8 +85,11 @@ let getPrivateKey = async (user) => { ) ); - mnemonic = entropyToMnemonic(entropy, wordlist); - return privateKeyFromSeedWords(mnemonic); + return entropyToMnemonic(entropy, wordlist); +}; + +let getPrivateKey = async (user) => { + return privateKeyFromSeedWords(await getMnemonic(user)); }; export let sign = async ({ event, user }) => { diff --git a/src/locales/en.json b/src/locales/en.json index 1ec8cced..9c098763 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -206,6 +206,7 @@ "placeholder": "Paste a bitcoin address, lightning invoice or coinos username" }, "settings": { + "revealSeed": "Reveal seed phrase", "saveSettings": "Save Settings", "bannerImage": "Banner Image", "profileImage": "Profile Image", diff --git a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte index c01db734..f3df3fa3 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_security.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_security.svelte @@ -1,4 +1,5 @@ <script> + import { getMnemonic } from '$lib/nostr'; import { tick } from 'svelte'; import { t } from '$lib/translations'; import { Pin, Icon, Qr } from '$comp'; @@ -8,18 +9,28 @@ import { page } from '$app/stores'; export let user, submit; - let pin, verify; - let settingPin, setting2fa, disabling2fa, confirming2fa; - let password, revealPassword; - let token = ''; - let old; + let confirming2fa, + disabling2fa, + locked, + mnemonic, + old, + otp, + password, + pin, + revealPassword, + revealSeed, + token = '', + setting2fa, + settingPin, + verify; let togglePassword = () => (revealPassword = !revealPassword); + let toggleSeed = async () => { + mnemonic = await getMnemonic(user); + revealSeed = !revealSeed; + }; - let otp; - - let locked; $: verifying = pin?.length > 5; $: verify && checkPin(pin); let checkPin = async () => { @@ -211,3 +222,12 @@ <option value={8 * 60 * 60}>8 {$t('user.settings.hours')}</option> </select> </div> + +<button type="button" class="primary" on:click={toggleSeed}> + <Icon icon="mobile" style="mr-1" /> + {$t('user.settings.revealSeed')} +</button> + +{#if revealSeed} + {mnemonic} +{/if} |
