Skip to content

Commit d90b284

Browse files
committed
Fix updating offchain account names
1 parent ef54e88 commit d90b284

2 files changed

Lines changed: 30 additions & 29 deletions

File tree

client/src/components/AccountCard.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ export function AccountCard() {
102102
}
103103

104104
const addAccountSchema = zfd.formData({
105+
id: zfd.text(z.coerce.number().optional()),
105106
name: zfd.text(z.string().optional()),
106107
description: zfd.text(z.string().optional()),
107108
addressOrName: zfd.text(z.string().optional()),
@@ -164,6 +165,8 @@ function AccountDialog({
164165
onSubmit={handleAddAccount}
165166
className="flex flex-col gap-4"
166167
>
168+
<input type="hidden" name="id" value={selectedAccount?.id} />
169+
167170
<div className="flex flex-col gap-1.5">
168171
<Label htmlFor="name" className="gap-1">
169172
Name{' '}
@@ -173,7 +176,6 @@ function AccountDialog({
173176
</Label>
174177
<Input
175178
name="name"
176-
placeholder="My Account"
177179
autoComplete="off"
178180
data-1p-ignore
179181
defaultValue={selectedAccount?.name}
@@ -187,19 +189,15 @@ function AccountDialog({
187189
(optional)
188190
</span>
189191
</Label>
190-
<Input
191-
name="description"
192-
placeholder="My Account"
193-
autoComplete="off"
194-
/>
192+
<Input name="description" autoComplete="off" />
195193
</div>
196194

197195
<div className="flex flex-col gap-1.5">
198196
<Label htmlFor="addressOrName">Address or ENS name</Label>
199197
<Input
200198
name="addressOrName"
201-
placeholder="0x1234567890123456789012345678901234567890"
202199
defaultValue={selectedAccount?.address ?? ''}
200+
disabled={!!selectedAccount?.id}
203201
autoComplete="off"
204202
data-1p-ignore
205203
/>

server/src/handlers/accounts.ts

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export async function getAccounts(c: Context) {
6666
// }
6767

6868
const addAccountSchema = z.object({
69+
id: z.coerce.number().optional(),
6970
addressOrName: z.string().optional(),
7071
name: z.string().optional(),
7172
description: z.string().optional(),
@@ -79,7 +80,7 @@ export async function addAccount(c: Context) {
7980
return c.json({ error: safeParse.error }, 400)
8081
}
8182

82-
let { addressOrName, name, description } = safeParse.data
83+
let { id, addressOrName, name, description } = safeParse.data
8384

8485
if (!addressOrName && !name) {
8586
return c.json(
@@ -88,15 +89,28 @@ export async function addAccount(c: Context) {
8889
)
8990
}
9091

92+
// Handle offchain accounts
9193
if (!addressOrName) {
92-
// Treat this as a manual account
93-
await db
94-
.insertInto('accounts')
95-
.values({
96-
name: name!,
97-
description,
98-
})
99-
.execute()
94+
if (id) {
95+
// Update an existing offchain account
96+
await db
97+
.updateTable('accounts')
98+
.set({
99+
name,
100+
description,
101+
})
102+
.where('id', '=', id)
103+
.execute()
104+
} else {
105+
// Create a new offchain account
106+
await db
107+
.insertInto('accounts')
108+
.values({
109+
name: name!,
110+
description,
111+
})
112+
.execute()
113+
}
100114

101115
return c.json({ success: true })
102116
}
@@ -137,21 +151,10 @@ export async function addAccount(c: Context) {
137151
.executeTakeFirst()
138152

139153
if (existingAddress) {
140-
// Treat this as an update
141-
await db
142-
.updateTable('accounts')
143-
.set(data)
144-
.where('id', '=', existingAddress.id)
145-
.execute()
146-
147-
return c.json({ success: true })
154+
return c.json({ error: 'Account already exists' }, 400)
148155
}
149156

150-
await db
151-
.insertInto('accounts')
152-
.values(data)
153-
.onConflict((oc) => oc.column('id').doUpdateSet(data))
154-
.execute()
157+
await db.insertInto('accounts').values(data).execute()
155158

156159
return c.json({ success: true })
157160
}

0 commit comments

Comments
 (0)