Skip to content

Commit cabe3b9

Browse files
committed
feat(multi account): wrap up
1 parent a300b7b commit cabe3b9

File tree

8 files changed

+62
-19
lines changed

8 files changed

+62
-19
lines changed

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

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { truncateString } from "@/common/lib/string"
22
import { LogoButton } from "@/components/menu-bar"
3+
import { MinaKeyConst } from "@palladxyz/key-management"
34
import { type SingleCredentialState, useVault } from "@palladxyz/vault"
45
import { EyeOff, Pencil } from "lucide-react"
56
import { useTranslation } from "react-i18next"
@@ -13,6 +14,10 @@ type AccountDetailsProps = {
1314
onCopyWalletAddress: () => void
1415
}
1516

17+
function getDerivationPath(accountIndex: number, addressIndex: number) {
18+
return `m/${MinaKeyConst.PURPOSE}'/${MinaKeyConst.MINA_COIN_TYPE}'/${accountIndex}'/0/${addressIndex}`
19+
}
20+
1621
export const AccountDetails = ({
1722
account,
1823
onCopyWalletAddress,
@@ -30,15 +35,15 @@ export const AccountDetails = ({
3035

3136
const dropdownOptions = [
3237
{
33-
name: t("Remove"),
38+
name: t("accountManagement.remove"),
3439
icon: <EyeOff className="w-4 h-4" />,
3540
onClick: async (account: SingleCredentialState) => {
3641
const serializedList = Object.values(credentials)
3742
if (
3843
account.credential?.accountIndex === 0 ||
3944
account.credential?.addressIndex === 0
4045
) {
41-
toast.error("Cannot remove first credential")
46+
toast.error(t("accountManagement.cannotRemoveFirstCredential"))
4247
return
4348
}
4449

@@ -56,14 +61,14 @@ export const AccountDetails = ({
5661
currentAddressIndex:
5762
serializedList[0]?.credential?.addressIndex ?? 0,
5863
})
59-
toast.success("Account removed")
64+
toast.success(t("accountManagement.accountRemoved"))
6065
} else {
61-
toast.error("Only the last credential can be removed")
66+
toast.error(t("accountManagement.onlyLastCredentialCanBeRemoved"))
6267
}
6368
},
6469
},
6570
{
66-
name: t("Edit"),
71+
name: t("accountManagement.edit"),
6772
icon: <Pencil className="w-4 h-4" />,
6873
onClick: async (account: SingleCredentialState) => {
6974
navigate(`/accounts/edit/${account.credential?.addressIndex}`)
@@ -80,7 +85,7 @@ export const AccountDetails = ({
8085
<DetailsDropdown options={dropdownOptions} account={account} />
8186
</nav>
8287
<div className="flex w-full justify-between">
83-
<div className="flex flex-col py-3 justify-end">
88+
<div className="flex flex-col py-3 justify-end items-start text-left">
8489
<div className="text-xl text-secondary">
8590
{account?.credentialName &&
8691
truncateString({
@@ -97,6 +102,12 @@ export const AccountDetails = ({
97102
firstCharCount: 5,
98103
})}
99104
</div>
105+
<div className="text-xl text-secondary">
106+
{getDerivationPath(
107+
account?.credential?.accountIndex ?? 0,
108+
account?.credential?.addressIndex ?? 0,
109+
)}
110+
</div>
100111
</div>
101112
{account?.credential?.address && (
102113
<QRCode

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const AddAccountRoute = () => {
1818

1919
return (
2020
<AddEditAccountView
21-
title={t("account-management.addAccount")}
21+
title={t("accountManagement.addAccount")}
2222
handleAddEditAccount={handleAddAccount}
2323
isLoading={isLoading}
2424
/>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ export const EditAccountRoute = () => {
5252
currentAddressIndex: updatedAccount?.credential?.addressIndex ?? 0,
5353
})
5454
}
55-
toast.success("Account updated")
55+
toast.success(t("accountManagement.accountEdited"))
5656
navigate(-1)
5757
}
5858
setIsLoading(false)
5959
}
6060

6161
return (
6262
<AddEditAccountView
63-
title={t("account-management.editAccount")}
63+
title={t("accountManagement.editAccount")}
6464
account={editingAccount}
6565
handleAddEditAccount={handleEditAccount}
6666
isLoading={isLoading}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const AccountManagementView = ({
4040
}}
4141
type="button"
4242
>
43-
Add
43+
{t("accountManagement.addAccount")}
4444
<div className="mx-2">
4545
<Plus />
4646
</div>

packages/features/src/account-management/views/add-edit-account.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ export const AddEditAccountView = ({
2929
const {
3030
register,
3131
handleSubmit,
32-
formState: { errors, dirtyFields },
32+
formState: { errors },
3333
reset,
34+
setValue,
3435
} = useForm({
3536
defaultValues: {
36-
accountName: account ? account.credentialName : getRandomAnimalName(),
37+
accountName: "",
3738
},
3839
resolver: zodResolver(formSchema),
3940
})
@@ -42,9 +43,10 @@ export const AddEditAccountView = ({
4243

4344
useEffect(() => {
4445
if (account) {
45-
reset({ accountName: account.credentialName })
46+
return reset({ accountName: account.credentialName })
4647
}
47-
}, [account, reset])
48+
return setValue("accountName", getRandomAnimalName())
49+
}, [account, reset, setValue])
4850

4951
return (
5052
<AppLayout>
@@ -55,7 +57,7 @@ export const AddEditAccountView = ({
5557
<button
5658
type="button"
5759
className="btn btn-primary max-w-48 w-full"
58-
disabled={!dirtyFields.accountName || isLoading}
60+
disabled={isLoading}
5961
onClick={handleSubmit((data) =>
6062
handleAddEditAccount(data.accountName),
6163
)}
@@ -68,11 +70,11 @@ export const AddEditAccountView = ({
6870
<div className="flex flex-col flex-1 gap-4">
6971
<div className="flex flex-col">
7072
<label htmlFor="accountNameInput" className="label">
71-
{t("account-management.addEditAccount")}
73+
{t("accountManagement.addEditAccount")}
7274
</label>
7375
<input
7476
id="accountNameInput"
75-
placeholder="Set account name"
77+
placeholder={t("accountManagement.setAccountName")}
7678
data-testid="editAccount/accountNameInput"
7779
className="input"
7880
autoComplete="off"

packages/features/src/i18n/locales/en/en.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,5 +147,20 @@
147147
"deny": "Deny",
148148
"sign": "Sign",
149149
"reject": "Reject"
150+
},
151+
"accountManagement": {
152+
"addAccount": "Add Account",
153+
"editAccount": "Edit Account",
154+
"addEditAccount": "Account Label",
155+
"setAccountName": "Set Account Name",
156+
"add": "Add",
157+
"other": "Other",
158+
"wallets": "Wallets",
159+
"remove": "Remove",
160+
"edit": "Edit",
161+
"cannotRemoveFirstCredential": "Cannot remove first credential",
162+
"onlyLastCredentialCanBeRemoved": "Only the last credential can be removed",
163+
"accountRemoved": "Account removed",
164+
"accountEdited": "Account edited"
150165
}
151166
}

packages/features/src/i18n/locales/tr/tr.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,5 +147,20 @@
147147
"deny": "Reddet",
148148
"sign": "İmzala",
149149
"reject": "Reddet"
150+
},
151+
"accountManagement": {
152+
"addAccount": "Hesap Ekle",
153+
"editAccount": "Hesap Düzenle",
154+
"addEditAccount": "Hesap Etiketi",
155+
"setAccountName": "Hesap Adını Ayarla",
156+
"add": "Ekle",
157+
"other": "Diğer",
158+
"wallets": "Cüzdanlar",
159+
"remove": "Kaldır",
160+
"edit": "Düzenle",
161+
"cannotRemoveFirstCredential": "İlk kimlik bilgisi silinemez",
162+
"onlyLastCredentialCanBeRemoved": "Sadece son kimlik bilgisi silinebilir",
163+
"accountRemoved": "Hesap kaldırıldı",
164+
"accountEdited": "Hesap düzenlendi"
150165
}
151166
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export async function deriveAccountHelper(get: any, credentialName: string) {
3131

3232
const args: ChainDerivationArgs = {
3333
network: Network.Mina,
34-
accountIndex: derivedAccountIndex,
34+
accountIndex: 0,
3535
addressIndex: derivedAccountIndex,
3636
}
3737

@@ -55,7 +55,7 @@ export async function deriveAccountHelper(get: any, credentialName: string) {
5555
setCurrentWallet({
5656
keyAgentName,
5757
credentialName,
58-
currentAccountIndex: derivedAccountIndex,
58+
currentAccountIndex: 0,
5959
currentAddressIndex: derivedAccountIndex,
6060
})
6161
setKnownAccounts(derivedCredential.address)

0 commit comments

Comments
 (0)