From a0d5c5598fd9dc40c9dde2b2cfd7707a167f5593 Mon Sep 17 00:00:00 2001 From: Nico Date: Tue, 28 Apr 2026 19:54:32 +0200 Subject: [PATCH] fix: implement AI review feedback --- .../settings/components/passkeys-section.tsx | 76 ++++++++++++------- .../migration.sql | 2 +- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/app/client/modules/settings/components/passkeys-section.tsx b/app/client/modules/settings/components/passkeys-section.tsx index 2a85e301..24a58f54 100644 --- a/app/client/modules/settings/components/passkeys-section.tsx +++ b/app/client/modules/settings/components/passkeys-section.tsx @@ -84,38 +84,54 @@ export function PasskeysSection() { return; } setIsRenaming(true); - const { error } = await authClient.$fetch("/passkey/update-passkey", { - method: "POST", - body: { id: renameTarget.id, name }, - }); - setIsRenaming(false); - if (error) { - logger.error(error); - toast.error("Failed to rename passkey", { description: error.message }); - return; + try { + const { error } = await authClient.$fetch("/passkey/update-passkey", { + method: "POST", + body: { id: renameTarget.id, name }, + }); + if (error) { + logger.error(error); + toast.error("Failed to rename passkey", { description: error.message }); + return; + } + toast.success("Passkey renamed"); + setRenameTarget(null); + setRenameValue(""); + await refetch(); + } catch (err) { + logger.error(err); + toast.error("Failed to rename passkey", { + description: err instanceof Error ? err.message : "Unknown error", + }); + } finally { + setIsRenaming(false); } - toast.success("Passkey renamed"); - setRenameTarget(null); - setRenameValue(""); - await refetch(); }; const handleDelete = async () => { if (!deleteTarget) return; setIsDeleting(true); - const { error } = await authClient.$fetch("/passkey/delete-passkey", { - method: "POST", - body: { id: deleteTarget.id }, - }); - setIsDeleting(false); - if (error) { - logger.error(error); - toast.error("Failed to delete passkey", { description: error.message }); - return; + try { + const { error } = await authClient.$fetch("/passkey/delete-passkey", { + method: "POST", + body: { id: deleteTarget.id }, + }); + if (error) { + logger.error(error); + toast.error("Failed to delete passkey", { description: error.message }); + return; + } + toast.success("Passkey deleted"); + setDeleteTarget(null); + await refetch(); + } catch (err) { + logger.error(err); + toast.error("Failed to delete passkey", { + description: err instanceof Error ? err.message : "Unknown error", + }); + } finally { + setIsDeleting(false); } - toast.success("Passkey deleted"); - setDeleteTarget(null); - await refetch(); }; const list = (passkeys ?? []) as PasskeyEntry[]; @@ -160,6 +176,8 @@ export function PasskeysSection() { - diff --git a/app/drizzle/20260428161759_productive_namor/migration.sql b/app/drizzle/20260428161759_productive_namor/migration.sql index db0c7c27..a3971135 100644 --- a/app/drizzle/20260428161759_productive_namor/migration.sql +++ b/app/drizzle/20260428161759_productive_namor/migration.sql @@ -14,4 +14,4 @@ CREATE TABLE `passkey` ( ); --> statement-breakpoint CREATE INDEX `passkey_userId_idx` ON `passkey` (`user_id`);--> statement-breakpoint -CREATE INDEX `passkey_credentialID_idx` ON `passkey` (`credential_id`); \ No newline at end of file +CREATE UNIQUE INDEX `passkey_credentialID_idx` ON `passkey` (`credential_id`);