aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-10-26 14:24:43 -0700
committerAdam Soltys <[email protected]>2023-11-11 00:04:22 -0800
commite2608b3fe00d4575c08846af4f7a192e4f1100ed (patch)
tree1151366d2c615657f5675c6d10c4c9273f408a42
parent7334c3c6b6311807627bfa244429ced4921c3e27 (diff)
downloadcoinos-ui-e2608b3fe00d4575c08846af4f7a192e4f1100ed.tar.gz
coinos-ui-e2608b3fe00d4575c08846af4f7a192e4f1100ed.zip
reveal seed phrase
-rw-r--r--src/lib/nostr.js9
-rw-r--r--src/locales/en.json1
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/_security.svelte36
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}