Skip to content

Commit cd70ab9

Browse files
committed
feat(wallet): sort accounts by property in response
1 parent 0884785 commit cd70ab9

File tree

13 files changed

+50
-19
lines changed

13 files changed

+50
-19
lines changed

packages/features/src/account-management/components/account-details.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const AccountDetails = ({
2929
removeCredential,
3030
credentials,
3131
setCredential,
32-
setCurrentWallet,
32+
updateCurrentWallet,
3333
keyAgentName,
3434
} = useVault()
3535

@@ -53,7 +53,7 @@ export const AccountDetails = ({
5353
) {
5454
removeCredential(account?.credentialName)
5555
setCredential(serializedList[0])
56-
setCurrentWallet({
56+
updateCurrentWallet({
5757
keyAgentName,
5858
credentialName: serializedList[0]?.credentialName,
5959
currentAccountIndex:

packages/features/src/account-management/index.stories.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const accounts: SingleCredentialState[] = [
2323
address: "B62qjzAXN9NkX8K6JfGzYz4qVQoMrkL4uJ3FgkFjVZd4W5X5cQFQkCG",
2424
encryptedPrivateKeyBytes: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
2525
},
26+
lastSelected: undefined,
2627
},
2728
{
2829
credentialName: "Second",
@@ -40,6 +41,7 @@ const accounts: SingleCredentialState[] = [
4041
address: "B62qjzAXN9NkX8K6JfGzYz4qVQoMrkL4uJ3FgkFjVZd4W5X5cQFQkCF",
4142
encryptedPrivateKeyBytes: new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 11]),
4243
},
44+
lastSelected: undefined,
4345
},
4446
]
4547

packages/features/src/account-management/routes/account-management.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { AccountManagementView } from "../views/account-management"
77
export const AccountManagementRoute = () => {
88
const navigate = useNavigate()
99
const {
10-
setCurrentWallet,
10+
updateCurrentWallet,
1111
setCredential,
1212
keyAgentName,
1313
credentials,
@@ -23,7 +23,7 @@ export const AccountManagementRoute = () => {
2323
const selectAccount = (account: SingleCredentialState) => {
2424
setSelectedAccount(account)
2525
setCredential(account)
26-
setCurrentWallet({
26+
updateCurrentWallet({
2727
keyAgentName,
2828
credentialName: account?.credentialName,
2929
currentAccountIndex: account?.credential?.accountIndex ?? 0,

packages/features/src/account-management/routes/edit-account.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const EditAccountRoute = () => {
1010
credentials,
1111
setCredential,
1212
removeCredential,
13-
setCurrentWallet,
13+
updateCurrentWallet,
1414
keyAgentName,
1515
} = useVault()
1616
const { t } = useTranslation()
@@ -45,7 +45,7 @@ export const EditAccountRoute = () => {
4545
removeCredential(editingAccount.credentialName)
4646
setEditingAccount(updatedAccount)
4747
setCredential(updatedAccount)
48-
setCurrentWallet({
48+
updateCurrentWallet({
4949
keyAgentName,
5050
credentialName: updatedAccount?.credentialName,
5151
currentAccountIndex: updatedAccount?.credential?.accountIndex ?? 0,

packages/vault/src/credentials/credentialsState.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ export type SingleCredentialState = {
1010
credentialName: CredentialName
1111
keyAgentName: KeyAgentName
1212
credential: StoredCredential
13+
lastSelected: number | undefined
1314
}
1415

1516
export const initialCredentialState: SingleCredentialState = {
1617
credentialName: "",
1718
keyAgentName: "",
1819
credential: undefined,
20+
lastSelected: undefined,
1921
}
2022

2123
export type CredentialStore = {

packages/vault/src/credentials/credentialsStore.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ export const credentialSlice: StateCreator<CredentialStore> = (set, get) => ({
2222
}),
2323
)
2424
},
25-
setCredential: (credentialState) => {
26-
const { credentialName } = credentialState
25+
setCredential: (singleCredentialState) => {
26+
const { credentialName } = singleCredentialState
2727
set(
2828
produce((state) => {
29-
state.credentials[credentialName] = credentialState
29+
state.credentials[credentialName] = singleCredentialState
3030
}),
3131
)
3232
},

packages/vault/src/vault/utils/derive-account.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export async function deriveAccountHelper(get: any, credentialName: string) {
1313
setKnownAccounts,
1414
addAccount,
1515
getNetworkId,
16-
setCurrentWallet,
16+
updateCurrentWallet,
1717
setCredential,
1818
credentials,
1919
} = get()
@@ -52,7 +52,7 @@ export async function deriveAccountHelper(get: any, credentialName: string) {
5252
}
5353

5454
setCredential(singleCredentialState)
55-
setCurrentWallet({
55+
updateCurrentWallet({
5656
keyAgentName,
5757
credentialName,
5858
currentAccountIndex: 0,

packages/vault/src/vault/utils/restore-wallet.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export async function restoreWalletHelper(
2323
initialiseKeyAgent,
2424
restoreKeyAgent,
2525
setCredential,
26-
setCurrentWallet,
26+
updateCurrentWallet,
2727
_syncWallet,
2828
ensureAccount,
2929
setKnownAccounts,
@@ -58,7 +58,7 @@ export async function restoreWalletHelper(
5858
// TODO: set the current network info, restore and create wallet
5959
// should take some providerConfig object
6060
setCredential(singleCredentialState)
61-
setCurrentWallet({
61+
updateCurrentWallet({
6262
keyAgentName,
6363
credentialName,
6464
currentAccountIndex: derivedCredential.accountIndex,
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { SingleCredentialState } from "../../credentials"
2+
import { WalletError } from "../../lib/Errors"
3+
import type { CurrentWalletPayload } from "../vaultState"
4+
5+
export async function updateCurrentWalletHelper(
6+
get: any,
7+
payload: CurrentWalletPayload,
8+
) {
9+
const { credentials, _setCurrentWallet, setCredential, getCredential } = get()
10+
const credential = getCredential(payload.credentialName)
11+
if (!credential.credential?.address) {
12+
throw new WalletError("Invalid current wallet or address")
13+
}
14+
const latestSelected = (
15+
Object.values(credentials) as SingleCredentialState[]
16+
).reduce((a, c) => Math.max(c.lastSelected ?? 0, a), 0)
17+
setCredential({
18+
...credential,
19+
lastSelected: latestSelected + 1,
20+
})
21+
_setCurrentWallet(payload)
22+
}

packages/vault/src/vault/utils/validate-current-wallet.ts

Whitespace-only changes.

0 commit comments

Comments
 (0)