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 @@