Skip to content

Commit 99fb52f

Browse files
authored
fix(restore): fix not restoring all addresses on Android (#885)
1 parent 732812f commit 99fb52f

File tree

1 file changed

+42
-41
lines changed

1 file changed

+42
-41
lines changed

src/utils/wallet/index.ts

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2035,6 +2035,9 @@ export const createDefaultWallet = async ({
20352035
selectedNetwork,
20362036
}: ICreateWallet): Promise<Result<IWallets>> => {
20372037
try {
2038+
if (!selectedNetwork) {
2039+
selectedNetwork = getSelectedNetwork();
2040+
}
20382041
if (!addressTypes) {
20392042
// if nothing else specified use only Native Segwit by default
20402043
addressTypes = { p2wpkh: getAddressTypes().p2wpkh };
@@ -2069,47 +2072,45 @@ export const createDefaultWallet = async ({
20692072
const lastUsedAddressIndex = defaultWalletShape.lastUsedAddressIndex;
20702073
const lastUsedChangeAddressIndex =
20712074
defaultWalletShape.lastUsedChangeAddressIndex;
2072-
await Promise.all([
2073-
setKeychainSlashtagsPrimaryKey(seed),
2074-
Object.values(addressTypes).map(async ({ type, path }) => {
2075-
if (!selectedNetwork) {
2076-
selectedNetwork = getSelectedNetwork();
2077-
}
2078-
const pathObject = getKeyDerivationPathObject({
2079-
path,
2080-
selectedNetwork,
2081-
});
2082-
if (pathObject.isErr()) {
2083-
return err(pathObject.error.message);
2084-
}
2085-
const generatedAddresses = await generateAddresses({
2086-
selectedWallet: walletName,
2087-
selectedNetwork,
2088-
addressAmount,
2089-
changeAddressAmount,
2090-
keyDerivationPath: pathObject.value,
2091-
addressType: type,
2092-
});
2093-
if (generatedAddresses.isErr()) {
2094-
return err(generatedAddresses.error);
2095-
}
2096-
const { addresses, changeAddresses } = generatedAddresses.value;
2097-
const addressIndexFilter = Object.values(addresses).find(
2098-
(a) => a.index === 0,
2099-
);
2100-
if (addressIndexFilter) {
2101-
addressIndex[selectedNetwork][type] = addressIndexFilter;
2102-
}
2103-
const changeAddressIndexFilter = Object.values(changeAddresses).find(
2104-
(a) => a.index === 0,
2105-
);
2106-
if (changeAddressIndexFilter) {
2107-
changeAddressIndex[selectedNetwork][type] = changeAddressIndexFilter;
2108-
}
2109-
addressesObj[selectedNetwork][type] = addresses;
2110-
changeAddressesObj[selectedNetwork][type] = changeAddresses;
2111-
}),
2112-
]);
2075+
2076+
await setKeychainSlashtagsPrimaryKey(seed);
2077+
2078+
for (const { type, path } of Object.values(addressTypes)) {
2079+
const pathObject = getKeyDerivationPathObject({
2080+
path,
2081+
selectedNetwork,
2082+
});
2083+
if (pathObject.isErr()) {
2084+
return err(pathObject.error.message);
2085+
}
2086+
const generatedAddresses = await generateAddresses({
2087+
selectedWallet: walletName,
2088+
selectedNetwork,
2089+
addressAmount,
2090+
changeAddressAmount,
2091+
keyDerivationPath: pathObject.value,
2092+
addressType: type,
2093+
});
2094+
if (generatedAddresses.isErr()) {
2095+
return err(generatedAddresses.error);
2096+
}
2097+
const { addresses, changeAddresses } = generatedAddresses.value;
2098+
const addressZeroIndex = Object.values(addresses).find(
2099+
(a) => a.index === 0,
2100+
);
2101+
const changeAddressZeroIndex = Object.values(changeAddresses).find(
2102+
(a) => a.index === 0,
2103+
);
2104+
if (addressZeroIndex) {
2105+
addressIndex[selectedNetwork][type] = addressZeroIndex;
2106+
}
2107+
if (changeAddressZeroIndex) {
2108+
changeAddressIndex[selectedNetwork][type] = changeAddressZeroIndex;
2109+
}
2110+
addressesObj[selectedNetwork][type] = addresses;
2111+
changeAddressesObj[selectedNetwork][type] = changeAddresses;
2112+
}
2113+
21132114
const payload: IWallets = {
21142115
[walletName]: {
21152116
...defaultWalletShape,

0 commit comments

Comments
 (0)