7
7
} from "../utils/crypto" ;
8
8
import { Keys , getKeys } from "../utils/keys" ;
9
9
import { storage } from "../utils/storage" ;
10
+ import { NetWork , useNetwork } from "./useNetwork" ;
11
+ import { ChainParams , P2PKHAddress } from "bsv-wasm-web" ;
12
+ import { useBsvWasm } from "./useBsvWasm" ;
10
13
11
14
export type KeyStorage = {
12
15
encryptedKeys : string ;
@@ -19,6 +22,14 @@ export const useKeys = () => {
19
22
const [ ordAddress , setOrdAddress ] = useState ( "" ) ;
20
23
const [ bsvPubKey , setBsvPubKey ] = useState ( "" ) ;
21
24
const [ ordPubKey , setOrdPubKey ] = useState ( "" ) ;
25
+ const { network } = useNetwork ( ) ;
26
+ const { bsvWasmInitialized } = useBsvWasm ( ) ;
27
+
28
+ const getChainParams = ( network : NetWork ) : ChainParams => {
29
+ return network === NetWork . Mainnet ? ChainParams . mainnet ( ) : ChainParams . testnet ( ) ;
30
+ }
31
+
32
+
22
33
const generateSeedAndStoreEncrypted = (
23
34
password : string ,
24
35
mnemonic ?: string
@@ -42,20 +53,32 @@ export const useKeys = () => {
42
53
[ "encryptedKeys" , "passKey" , "salt" ] ,
43
54
async ( result : KeyStorage ) => {
44
55
try {
56
+ if ( ! bsvWasmInitialized ) throw Error ( "bsv-wasm not initialized!" ) ;
45
57
if ( ! result . encryptedKeys || ! result . passKey ) return ;
46
58
const d = decrypt ( result . encryptedKeys , result . passKey ) ;
47
59
const keys : Keys = JSON . parse ( d ) ;
48
- setBsvAddress ( keys . walletAddress ) ;
49
- setOrdAddress ( keys . ordAddress ) ;
60
+
61
+ const walletAddress = P2PKHAddress . from_string ( keys . walletAddress )
62
+ . set_chain_params ( getChainParams ( network ) )
63
+ . to_string ( ) ;
64
+
65
+ const ordAddress = P2PKHAddress . from_string ( keys . ordAddress )
66
+ . set_chain_params ( getChainParams ( network ) )
67
+ . to_string ( ) ;
68
+ setBsvAddress ( walletAddress ) ;
69
+ setOrdAddress ( ordAddress ) ;
50
70
setBsvPubKey ( keys . walletPubKey ) ;
51
71
setOrdPubKey ( keys . ordPubKey ) ;
52
72
if ( password ) {
53
73
const isVerified = await verifyPassword ( password ) ;
54
- isVerified ? resolve ( keys ) : reject ( "Unauthorized!" ) ;
74
+ isVerified ? resolve ( Object . assign ( { } , keys , {
75
+ ordAddress,
76
+ walletAddress,
77
+ } ) ) : reject ( "Unauthorized!" ) ;
55
78
} else {
56
79
resolve ( {
57
- ordAddress : keys . ordAddress ,
58
- walletAddress : keys . walletAddress ,
80
+ ordAddress,
81
+ walletAddress,
59
82
walletPubKey : keys . walletPubKey ,
60
83
ordPubKey : keys . ordPubKey ,
61
84
} ) ;
@@ -82,9 +105,10 @@ export const useKeys = () => {
82
105
} ;
83
106
84
107
useEffect ( ( ) => {
108
+ if ( ! bsvWasmInitialized ) return
85
109
retrieveKeys ( ) ;
86
110
// eslint-disable-next-line react-hooks/exhaustive-deps
87
- } , [ ] ) ;
111
+ } , [ bsvWasmInitialized ] ) ;
88
112
89
113
return {
90
114
generateSeedAndStoreEncrypted,
0 commit comments