aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-02-16 08:45:37 -0800
committerAdam Soltys <[email protected]>2026-02-16 08:45:37 -0800
commitfe104c2364de35bcdb2a10ca469cd25c12b04289 (patch)
treeac781e1ba58afd43ba93b91c6965797ff8de3eee /src
parent8905ad48f91e24cbb2427256a88128462a51a7a0 (diff)
downloadcoinos-ui-fe104c2364de35bcdb2a10ca469cd25c12b04289.tar.gz
coinos-ui-fe104c2364de35bcdb2a10ca469cd25c12b04289.zip
Prevent duplicate Ark vault accounts
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/routes/(app)/account/ark/+page.server.ts10
-rw-r--r--src/routes/(app)/account/new/+page.server.ts7
-rw-r--r--src/routes/(app)/account/new/+page.svelte22
3 files changed, 30 insertions, 9 deletions
diff --git a/src/routes/(app)/account/ark/+page.server.ts b/src/routes/(app)/account/ark/+page.server.ts
new file mode 100644
index 00000000..90e617ff
--- /dev/null
+++ b/src/routes/(app)/account/ark/+page.server.ts
@@ -0,0 +1,10 @@
+import { auth, get } from "$lib/utils";
+import { redirect } from "@sveltejs/kit";
+
+export async function load({ cookies, parent }) {
+ const { user } = await parent();
+ const accounts = await get("/accounts", auth(cookies));
+ if (accounts.some((a) => a.type === "ark")) {
+ redirect(307, `/${user.username}`);
+ }
+}
diff --git a/src/routes/(app)/account/new/+page.server.ts b/src/routes/(app)/account/new/+page.server.ts
new file mode 100644
index 00000000..8ecbb61c
--- /dev/null
+++ b/src/routes/(app)/account/new/+page.server.ts
@@ -0,0 +1,7 @@
+import { auth, get } from "$lib/utils";
+
+export async function load({ cookies }) {
+ const accounts = await get("/accounts", auth(cookies));
+ const hasArk = accounts.some((a) => a.type === "ark");
+ return { hasArk };
+}
diff --git a/src/routes/(app)/account/new/+page.svelte b/src/routes/(app)/account/new/+page.svelte
index c4045db8..3adb9d28 100644
--- a/src/routes/(app)/account/new/+page.svelte
+++ b/src/routes/(app)/account/new/+page.svelte
@@ -1,5 +1,7 @@
<script lang="ts">
import { t } from "$lib/translations";
+
+ let { data } = $props();
</script>
<div class="space-y-5">
@@ -17,16 +19,18 @@
</div>
</div>
</a>
- <a href="/account/ark" class="block">
- <div class="card card-side shadow shadow-base-300 p-8 hover:bg-base-200 gap-4 items-center">
- <img src="/images/ark.png" class="w-12 h-12 rounded-full object-cover" alt="Ark" />
- <div>
- <div class="text-xl">Ark (Off-chain)</div>
- <div class="text-secondary">
- Experimental layer 2 wallet offering low fees and fast settlement
+ {#if !data.hasArk}
+ <a href="/account/ark" class="block">
+ <div class="card card-side shadow shadow-base-300 p-8 hover:bg-base-200 gap-4 items-center">
+ <img src="/images/ark.png" class="w-12 h-12 rounded-full object-cover" alt="Ark" />
+ <div>
+ <div class="text-xl">Ark (Off-chain)</div>
+ <div class="text-secondary">
+ Experimental layer 2 wallet offering low fees and fast settlement
+ </div>
</div>
</div>
- </div>
- </a>
+ </a>
+ {/if}
</div>
</div>