|
1 | 1 | <script lang="ts">
|
2 |
| - import { getSelectedAccount, selectedAccount } from '@core/account' |
| 2 | + import { selectedAccount } from '@core/account' |
3 | 3 | import { handleError } from '@core/error/handlers/handleError'
|
4 | 4 | import { localize } from '@core/i18n'
|
5 | 5 | import { CHRONICLE_ADDRESS_HISTORY_ROUTE, CHRONICLE_URLS } from '@core/network/constants/chronicle-urls.constant'
|
|
27 | 27 | const activeProfile = getActiveProfile()
|
28 | 28 | const ADDRESS_GAP_LIMIT = 20
|
29 | 29 |
|
| 30 | + let knownAddresses: AccountAddress[] = [] |
| 31 | +
|
30 | 32 | $: accountIndex = $selectedAccount?.index
|
31 | 33 | $: network = activeProfile?.network?.id
|
32 |
| - $: knownAddresses = $selectedAccount?.knownAddresses |
33 | 34 |
|
34 | 35 | let searchURL: string
|
35 | 36 | let searchAddressStartIndex = 0
|
36 | 37 | let currentSearchGap = 0
|
37 | 38 | let isBusy = false
|
38 | 39 |
|
39 | 40 | onMount(() => {
|
40 |
| - knownAddresses = getSelectedAccount().knownAddresses |
| 41 | + knownAddresses = $selectedAccount?.knownAddresses |
| 42 | + if (!knownAddresses?.length) { |
| 43 | + isBusy = true |
| 44 | + $selectedAccount |
| 45 | + .addresses() |
| 46 | + .then((_knownAddresses) => { |
| 47 | + knownAddresses = sortAddresses(_knownAddresses) |
| 48 | + updateAccountPersistedDataOnActiveProfile(accountIndex, { knownAddresses }) |
| 49 | + isBusy = false |
| 50 | + }) |
| 51 | + .finally(() => { |
| 52 | + isBusy = false |
| 53 | + }) |
| 54 | + } |
41 | 55 |
|
42 | 56 | if (CHRONICLE_URLS[network] && CHRONICLE_URLS[network].length > 0) {
|
43 | 57 | const chronicleRoot = CHRONICLE_URLS[network][0]
|
|
77 | 91 |
|
78 | 92 | async function search(): Promise<void> {
|
79 | 93 | currentSearchGap = 0
|
| 94 | + const tmpKnownAddresses = [...knownAddresses] |
80 | 95 | while (currentSearchGap < ADDRESS_GAP_LIMIT) {
|
81 | 96 | const [nextAddressToCheck, addressIndex] = await generateNextUnknownAddress()
|
82 | 97 | if (!nextAddressToCheck) {
|
|
93 | 108 | used: true,
|
94 | 109 | }
|
95 | 110 |
|
96 |
| - knownAddresses.push(accountAddress) |
| 111 | + tmpKnownAddresses.push(accountAddress) |
97 | 112 | } else {
|
98 | 113 | currentSearchGap++
|
99 | 114 | }
|
100 | 115 | }
|
| 116 | + knownAddresses = sortAddresses(tmpKnownAddresses) |
101 | 117 | updateAccountPersistedDataOnActiveProfile(accountIndex, { knownAddresses })
|
102 | 118 | }
|
103 | 119 |
|
|
111 | 127 | isBusy = false
|
112 | 128 | }
|
113 | 129 | }
|
| 130 | +
|
| 131 | + function sortAddresses(addresses: AccountAddress[] = []): AccountAddress[] { |
| 132 | + return addresses.sort((a, b) => a.keyIndex - b.keyIndex) |
| 133 | + } |
114 | 134 | </script>
|
115 | 135 |
|
116 | 136 | <div class="flex flex-col space-y-6">
|
|
0 commit comments