From 658c758a7297bd3e9ee06ae477a8c714a39d668b Mon Sep 17 00:00:00 2001 From: NguyenAnhQuan Date: Tue, 28 Oct 2025 01:24:42 +0700 Subject: [PATCH] 281025/sync_value_between_18_input_grid_and_full_text_input --- src/composables/useNeptuneWallet.ts | 23 ++++ .../Auth/components/ImportWalletComponent.vue | 89 ++++++++++++--- src/views/Auth/components/LoginTab.vue | 10 +- .../Auth/components/OpenWalletComponent.vue | 108 ++++++++++++++++-- 4 files changed, 198 insertions(+), 32 deletions(-) diff --git a/src/composables/useNeptuneWallet.ts b/src/composables/useNeptuneWallet.ts index 3aa5f29..a01b301 100644 --- a/src/composables/useNeptuneWallet.ts +++ b/src/composables/useNeptuneWallet.ts @@ -143,6 +143,28 @@ export function useNeptuneWallet() { return JSON.parse(resultJson) } + const importFromViewKey = async (viewKeyHex: string): Promise<{ receiver_identifier: string }> => { + try { + store.setLoading(true) + store.setError(null) + + const result = await decodeViewKey(viewKeyHex) + + store.setViewKey(viewKeyHex) + store.setReceiverId(result.receiver_identifier) + // Note: When importing from viewkey, we don't have the seed phrase + // and address needs to be derived from viewkey + + return result + } catch (err) { + const errorMsg = err instanceof Error ? err.message : 'Failed to import from view key' + store.setError(errorMsg) + throw err + } finally { + store.setLoading(false) + } + } + // ===== API METHODS ===== const getUtxos = async ( @@ -275,6 +297,7 @@ export function useNeptuneWallet() { initWasm: ensureWasmInitialized, generateWallet, importWallet, + importFromViewKey, getViewKeyFromSeed, getAddressFromSeed, validateSeedPhrase, diff --git a/src/views/Auth/components/ImportWalletComponent.vue b/src/views/Auth/components/ImportWalletComponent.vue index aa33cfa..6fd4d7c 100644 --- a/src/views/Auth/components/ImportWalletComponent.vue +++ b/src/views/Auth/components/ImportWalletComponent.vue @@ -1,32 +1,71 @@