aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-03-04 09:23:03 -0800
committerAdam Soltys <[email protected]>2026-03-04 09:23:03 -0800
commitba579c4f801be258128294e7cb1f4d2e518e37ca (patch)
tree2ffbee38d5d82d06580a68ffddd798c1930d6ded /src
parente39b182ac4c2134157eca3f4cc7c8c7dfd389484 (diff)
downloadcoinos-ui-ba579c4f801be258128294e7cb1f4d2e518e37ca.tar.gz
coinos-ui-ba579c4f801be258128294e7cb1f4d2e518e37ca.zip
fix api calls
Diffstat (limited to 'src')
-rw-r--r--src/components/Event.svelte6
-rw-r--r--src/components/Menu.svelte2
-rw-r--r--src/components/Password.svelte2
-rw-r--r--src/components/Pin.svelte2
-rw-r--r--src/lib/ark.ts8
-rw-r--r--src/lib/bitcoinSync.ts2
-rw-r--r--src/lib/keyWrapping.ts2
-rw-r--r--src/lib/nostr.ts2
-rw-r--r--src/lib/utils.ts2
-rw-r--r--src/routes/(app)/+layout.svelte4
-rw-r--r--src/routes/(app)/[username]/(profile)/+page.svelte6
-rw-r--r--src/routes/(app)/account/[id]/+page.svelte2
-rw-r--r--src/routes/(app)/account/ark/+page.svelte2
-rw-r--r--src/routes/(app)/account/new/+page.svelte2
-rw-r--r--src/routes/(app)/account/pass/+page.svelte6
-rw-r--r--src/routes/(app)/account/seed/+page.svelte6
-rw-r--r--src/routes/(app)/api/[...path]/+server.ts25
-rw-r--r--src/routes/(app)/firehose/+page.svelte2
-rw-r--r--src/routes/(app)/funds/+page.server.ts10
-rw-r--r--src/routes/(app)/funds/+page.svelte54
-rw-r--r--src/routes/(app)/send/[...text]/+page.svelte21
-rw-r--r--src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte2
-rw-r--r--src/routes/(app)/send/invoice/[id]/+page.svelte4
-rw-r--r--src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte2
-rw-r--r--src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte4
-rw-r--r--src/routes/(app)/settings/+layout.svelte2
-rw-r--r--src/routes/(app)/settings/account/+page.svelte2
-rw-r--r--src/routes/(app)/settings/security/+page.svelte4
-rw-r--r--src/routes/(app)/tag/[tag]/+page.svelte2
-rw-r--r--src/routes/(static)/register/auth/+page.svelte11
-rw-r--r--src/routes/(static)/support/+page.svelte4
31 files changed, 116 insertions, 89 deletions
diff --git a/src/components/Event.svelte b/src/components/Event.svelte
index eef48868..c833c5a9 100644
--- a/src/components/Event.svelte
+++ b/src/components/Event.svelte
@@ -21,11 +21,11 @@
const body = new FormData();
if (!user) return goto(`/register?redirect=${$page.url.pathname}`);
- let request = await post("/api/zapRequest", { amount, id });
- let { pr: payreq } = await post("/api/zap", {
+ let request = await post("/zapRequest", { amount, id });
+ let { pr: payreq } = await post("/zap", {
event: await sign(request),
});
- await post("/api/payments", { amount, payreq });
+ await post("/payments", { amount, payreq });
} catch (e: any) {
console.log(e);
fail(e.message);
diff --git a/src/components/Menu.svelte b/src/components/Menu.svelte
index 5ffd7a75..4b0204fd 100644
--- a/src/components/Menu.svelte
+++ b/src/components/Menu.svelte
@@ -4,6 +4,7 @@
import PhLifebuoyBold from "virtual:icons/ph/lifebuoy-bold";
import PhMapTrifoldBold from "virtual:icons/ph/map-trifold-bold";
import PhChatBold from "virtual:icons/ph/chat-bold";
+ import PhLightningFill from "virtual:icons/ph/lightning-fill";
import PhMoonStarsBold from "virtual:icons/ph/moon-stars-bold";
import PhSignOutBold from "virtual:icons/ph/sign-out-bold";
import CoinosLogo from "virtual:icons/coinos/logo";
@@ -15,6 +16,7 @@
let showMenu = $state(false);
let menuButtons = [
+ { key: "nav.funds", icon: PhLightningFill, href: `/funds` },
{ key: "nav.settings", icon: PhFadersBold, href: `/settings` },
{ key: "nav.support", icon: PhLifebuoyBold, href: `/support` },
{ key: "nav.map", icon: PhMapTrifoldBold, href: `/map` },
diff --git a/src/components/Password.svelte b/src/components/Password.svelte
index 7651d5a1..ab1b7d9d 100644
--- a/src/components/Password.svelte
+++ b/src/components/Password.svelte
@@ -13,7 +13,7 @@
let submit = async (e) => {
e.preventDefault();
try {
- let res = await post("/api/password", { password });
+ let res = await post("/password", { password });
$passwordPrompt = false;
$pw = password;
} catch (e) {
diff --git a/src/components/Pin.svelte b/src/components/Pin.svelte
index c8ead368..da0c6aeb 100644
--- a/src/components/Pin.svelte
+++ b/src/components/Pin.svelte
@@ -27,7 +27,7 @@
if (p?.length !== 6) return;
let result;
try {
- result = await post("/api/pin", { pin: hashPin(p) });
+ result = await post("/pin", { pin: hashPin(p) });
} catch (e) {
console.log("Pin check failed", e);
}
diff --git a/src/lib/ark.ts b/src/lib/ark.ts
index e223d013..dac5cb2a 100644
--- a/src/lib/ark.ts
+++ b/src/lib/ark.ts
@@ -303,7 +303,7 @@ const _syncTransactions = async (aid: string) => {
const bal = await wallet.getBalance();
const balance = (bal.available || 0) + (bal.preconfirmed || 0);
- const result = await post("/api/ark/sync", { transactions, aid, balance, arkAddress: walletAddr });
+ const result = await post("/ark/sync", { transactions, aid, balance, arkAddress: walletAddr });
cacheVaultSnapshot(); // fire-and-forget
return result;
};
@@ -456,14 +456,14 @@ export const sendArkViaForward = async ({
try {
const txid = await sendArk(serverArkAddress, amount);
- await post("/api/ark/vault-send", { hash: txid, amount, aid });
+ await post("/ark/vault-send", { hash: txid, amount, aid });
const invoice: any = { type: "ark", amount, aid };
if (forward) invoice.forward = forward;
- const inv = await post("/api/invoice", { invoice, user });
+ const inv = await post("/invoice", { invoice, user });
- return await post("/api/ark/receive", { amount, hash: txid, iid: inv.id });
+ return await post("/ark/receive", { amount, hash: txid, iid: inv.id });
} finally {
vaultForwarding = false;
}
diff --git a/src/lib/bitcoinSync.ts b/src/lib/bitcoinSync.ts
index 92d3382b..3b31d6c0 100644
--- a/src/lib/bitcoinSync.ts
+++ b/src/lib/bitcoinSync.ts
@@ -6,7 +6,7 @@ export const syncBitcoinVault = async (aid: string) => {
if (syncing) return;
syncing = true;
try {
- return await post("/api/bitcoin/sync", { aid });
+ return await post("/bitcoin/sync", { aid });
} finally {
syncing = false;
}
diff --git a/src/lib/keyWrapping.ts b/src/lib/keyWrapping.ts
index fb46f767..971b929c 100644
--- a/src/lib/keyWrapping.ts
+++ b/src/lib/keyWrapping.ts
@@ -45,7 +45,7 @@ export async function resolveCanonicalKey(
export async function saveEncryptedKeys(
encryptedKeys: Record<string, string>,
): Promise<void> {
- await post("/api/user", { encryptedKeys });
+ await post("/user", { encryptedKeys });
}
export function passwordMethodId(): string {
diff --git a/src/lib/nostr.ts b/src/lib/nostr.ts
index 4b7316e8..e91e33f5 100644
--- a/src/lib/nostr.ts
+++ b/src/lib/nostr.ts
@@ -136,7 +136,7 @@ export const sign = async (event: any, user?: any) => {
};
export const send = (event: EventTemplate) => {
- return post("/api/event", { event });
+ return post("/event", { event });
};
const getPassword = async (): Promise<string> => {
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index cb1e5ec7..74e05f17 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -14,7 +14,7 @@ export function scroll(section: any) {
setTimeout(() => section.scrollIntoView({ behavior: "smooth" }), 500);
}
-const base = browser ? "" : PUBLIC_COINOS_URL;
+const base = browser ? "/api" : PUBLIC_COINOS_URL;
let getIp: (() => string | undefined) | undefined;
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte
index 248206fb..991171be 100644
--- a/src/routes/(app)/+layout.svelte
+++ b/src/routes/(app)/+layout.svelte
@@ -104,8 +104,8 @@
try {
const { serverArkAddress, amount, iid } = result.forward;
const txid = await sendArk(serverArkAddress, amount);
- await post("/api/ark/vault-send", { hash: txid, amount, aid });
- await post("/api/ark/receive", { amount, hash: txid, iid });
+ await post("/ark/vault-send", { hash: txid, amount, aid });
+ await post("/ark/receive", { amount, hash: txid, iid });
} catch (e) {
console.error("Ark custodial forward failed:", e);
} finally {
diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte
index 4ed8eaaf..123a14e8 100644
--- a/src/routes/(app)/[username]/(profile)/+page.svelte
+++ b/src/routes/(app)/[username]/(profile)/+page.svelte
@@ -11,7 +11,7 @@
import { installPrompt, password, cachedAccounts, cachedRates } from "$lib/store";
import { goto, invalidate } from "$app/navigation";
import { page } from "$app/stores";
- import { versions, post, fail, getCookie } from "$lib/utils";
+ import { get, versions, post, fail, getCookie } from "$lib/utils";
let { data } = $props();
@@ -46,14 +46,14 @@
const mn = entropyToMnemonic(entropy, wordlist);
const seed = await mnemonicToSeed(mn);
const master = HDKey.fromMasterSeed(seed, versions);
- const existing = await fetch("/api/accounts").then((r) => r.json());
+ const existing = await get("/accounts");
const nextIdx = existing
.filter((a: any) => a.pubkey && a.fingerprint)
.reduce((max: number, a: any) => Math.max(max, (a.accountIndex ?? 0) + 1), 0);
const child = master.derive(`m/84'/0'/${nextIdx}'`);
const pubkey = child.publicExtendedKey;
const fingerprint = child.fingerprint.toString(16).padStart(8, "0");
- await post("/api/accounts", {
+ await post("/accounts", {
fingerprint,
pubkey,
name: $t("accounts.vault"),
diff --git a/src/routes/(app)/account/[id]/+page.svelte b/src/routes/(app)/account/[id]/+page.svelte
index 582fe3ec..6f1d9921 100644
--- a/src/routes/(app)/account/[id]/+page.svelte
+++ b/src/routes/(app)/account/[id]/+page.svelte
@@ -131,7 +131,7 @@
let del = async () => {
try {
- await post("/api/account/delete", { id });
+ await post("/account/delete", { id });
goto(`/${user.username}`);
} catch (e: any) {
fail(e.message);
diff --git a/src/routes/(app)/account/ark/+page.svelte b/src/routes/(app)/account/ark/+page.svelte
index 65d03aad..268109fa 100644
--- a/src/routes/(app)/account/ark/+page.svelte
+++ b/src/routes/(app)/account/ark/+page.svelte
@@ -42,7 +42,7 @@
const identity = SingleKey.fromHex(arkHex);
const wallet = await Wallet.create({ identity, arkServerUrl });
arkAddress = await wallet.getAddress();
- await post("/api/accounts", { name, type, arkAddress });
+ await post("/accounts", { name, type, arkAddress });
goto(`/${user.username}`);
} catch (e: any) {
console.log("Ark account creation failed", e);
diff --git a/src/routes/(app)/account/new/+page.svelte b/src/routes/(app)/account/new/+page.svelte
index 1761f3f6..4365dedd 100644
--- a/src/routes/(app)/account/new/+page.svelte
+++ b/src/routes/(app)/account/new/+page.svelte
@@ -37,7 +37,7 @@
const wallet = await Wallet.create({ identity, arkServerUrl });
const arkAddress = await wallet.getAddress();
- await post("/api/accounts", { name: $t("accounts.savings"), type: "ark", arkAddress });
+ await post("/accounts", { name: $t("accounts.savings"), type: "ark", arkAddress });
goto(`/${user.username}`);
} catch (e: any) {
console.log("Ark account creation failed", e);
diff --git a/src/routes/(app)/account/pass/+page.svelte b/src/routes/(app)/account/pass/+page.svelte
index a76494c0..5aebb1d9 100644
--- a/src/routes/(app)/account/pass/+page.svelte
+++ b/src/routes/(app)/account/pass/+page.svelte
@@ -5,7 +5,7 @@
import Spinner from "$comp/Spinner.svelte";
import { entropyToMnemonic, mnemonicToSeed } from "@scure/bip39";
import { wordlist } from "@scure/bip39/wordlists/english.js";
- import { versions, fail, post } from "$lib/utils";
+ import { get, versions, fail, post } from "$lib/utils";
import { goto } from "$app/navigation";
import { HDKey } from "@scure/bip32";
@@ -41,14 +41,14 @@
await mnemonicToSeed(mn),
versions,
);
- const accounts = await fetch("/api/accounts").then((r) => r.json());
+ const accounts = await get("/accounts");
const nextIdx = (accounts || [])
.filter((a: any) => a.pubkey && a.fingerprint && a.type !== "ark")
.reduce((max: number, a: any) => Math.max(max, (a.accountIndex ?? 0) + 1), 0);
const child = master.derive(`m/84'/0'/${nextIdx}'`);
const pubkey = child.publicExtendedKey;
const fingerprint = child.fingerprint.toString(16).padStart(8, "0");
- await post("/api/accounts", {
+ await post("/accounts", {
fingerprint,
pubkey,
name: $t("accounts.vault"),
diff --git a/src/routes/(app)/account/seed/+page.svelte b/src/routes/(app)/account/seed/+page.svelte
index 70f3fe32..690781f5 100644
--- a/src/routes/(app)/account/seed/+page.svelte
+++ b/src/routes/(app)/account/seed/+page.svelte
@@ -3,7 +3,7 @@
import Mnemonic from "$comp/Mnemonic.svelte";
import { browser } from "$app/environment";
import { tick, onMount } from "svelte";
- import { copy, versions, fail, post } from "$lib/utils";
+ import { copy, get, versions, fail, post } from "$lib/utils";
import { t } from "$lib/translations";
import { mnemonic } from "$lib/store";
import { generateMnemonic, mnemonicToSeed, entropyToMnemonic } from "@scure/bip39";
@@ -27,14 +27,14 @@
const mn = entropyToMnemonic(entropy, wordlist);
const seed = await mnemonicToSeed(mn);
const master = HDKey.fromMasterSeed(seed, versions);
- const accounts = await fetch("/api/accounts").then((r) => r.json());
+ const accounts = await get("/accounts");
const nextIdx = (accounts || [])
.filter((a: any) => a.pubkey && a.fingerprint && a.type !== "ark")
.reduce((max: number, a: any) => Math.max(max, (a.accountIndex ?? 0) + 1), 0);
const child = master.derive(`m/84'/0'/${nextIdx}'`);
const pubkey = child.publicExtendedKey;
const fingerprint = child.fingerprint.toString(16).padStart(8, "0");
- await post("/api/accounts", {
+ await post("/accounts", {
fingerprint,
pubkey,
name: $t("accounts.vault"),
diff --git a/src/routes/(app)/api/[...path]/+server.ts b/src/routes/(app)/api/[...path]/+server.ts
deleted file mode 100644
index bc12494f..00000000
--- a/src/routes/(app)/api/[...path]/+server.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { PUBLIC_COINOS_URL as base } from "$env/static/public";
-import { auth } from "$lib/utils";
-
-function getHeaders(cookies, request) {
- const headers: Record<string, string> = {};
- const authHeader = request.headers.get("authorization");
- if (authHeader) {
- headers.authorization = authHeader;
- } else {
- Object.assign(headers, auth(cookies));
- }
- return headers;
-}
-
-export async function GET({ cookies, fetch, params, request }) {
- return fetch(`${base}/${params.path}`, { headers: getHeaders(cookies, request) });
-}
-
-export async function POST({ cookies, fetch, params, request }) {
- return fetch(`${base}/${params.path}`, {
- method: "POST",
- body: JSON.stringify(await request.json()),
- headers: { "Content-Type": "application/json", ...getHeaders(cookies, request) },
- });
-}
diff --git a/src/routes/(app)/firehose/+page.svelte b/src/routes/(app)/firehose/+page.svelte
index 2a5e8fa6..84dc7000 100644
--- a/src/routes/(app)/firehose/+page.svelte
+++ b/src/routes/(app)/firehose/+page.svelte
@@ -23,7 +23,7 @@
const subscription = relay.subscribe([{ kinds: [1], limit: 20 }], {
async onevent(event: any) {
if (paused) return;
- const { parts, names } = await post("/api/parseEvent", { event });
+ const { parts, names } = await post("/parseEvent", { event });
event.author = await get(`/api/users/${event.pubkey}`);
event.parts = parts;
event.names = names;
diff --git a/src/routes/(app)/funds/+page.server.ts b/src/routes/(app)/funds/+page.server.ts
new file mode 100644
index 00000000..e6836596
--- /dev/null
+++ b/src/routes/(app)/funds/+page.server.ts
@@ -0,0 +1,10 @@
+import getRates from "$lib/rates";
+import { auth, get } from "$lib/utils";
+
+export const load = async ({ cookies, parent }) => {
+ const { user } = await parent();
+ const funds = await get("/funds", auth(cookies));
+ const rates = await getRates();
+ const rate = rates[user?.currency || "USD"];
+ return { funds, rate };
+};
diff --git a/src/routes/(app)/funds/+page.svelte b/src/routes/(app)/funds/+page.svelte
new file mode 100644
index 00000000..678f1937
--- /dev/null
+++ b/src/routes/(app)/funds/+page.svelte
@@ -0,0 +1,54 @@
+<script lang="ts">
+ import PhLightningFill from "virtual:icons/ph/lightning-fill";
+ import PhPlusBold from "virtual:icons/ph/plus-bold";
+ import { t } from "$lib/translations";
+ import { s, f, loc, sats } from "$lib/utils";
+ import { fiat } from "$lib/store";
+
+ let { data } = $props();
+ let funds = $derived(data.funds);
+ let user = $derived(data.user);
+ let rate = $derived(data.rate);
+ let currency = $derived(user?.currency || "USD");
+ let locale = $derived(loc(user));
+</script>
+
+<div class="container px-4 max-w-lg mx-auto space-y-5 mt-20">
+ <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold">Funds</h1>
+
+ <a href="/send/fund" class="block">
+ <button type="button" class="btn btn-accent">
+ <PhPlusBold width="24" />
+ <div class="my-auto">Create a fund</div>
+ </button>
+ </a>
+
+ {#if funds.length}
+ <div class="space-y-3">
+ {#each funds as fund}
+ <a href={`/fund/${fund.id}`} class="block">
+ <div class="flex items-center justify-between p-4 rounded-2xl bg-base-200 hover:bg-base-300">
+ <div class="flex items-center gap-3">
+ <PhLightningFill width="24" class="text-yellow-300" />
+ <div>
+ <p class="font-mono text-sm opacity-60">{fund.id.slice(0, 8)}...</p>
+ {#if fund.managers > 0}
+ <p class="text-xs opacity-50">{fund.managers} manager{fund.managers > 1 ? 's' : ''}</p>
+ {/if}
+ </div>
+ </div>
+ <div class="text-right font-semibold">
+ {#if $fiat && rate}
+ {f(parseFloat(((fund.amount * rate) / sats).toFixed(2)), currency, locale)}
+ {:else}
+ {s(fund.amount, locale)} sats
+ {/if}
+ </div>
+ </div>
+ </a>
+ {/each}
+ </div>
+ {:else}
+ <p class="text-center opacity-60">No funds yet. Create one to get started.</p>
+ {/if}
+</div>
diff --git a/src/routes/(app)/send/[...text]/+page.svelte b/src/routes/(app)/send/[...text]/+page.svelte
index 49a3853e..430355a5 100644
--- a/src/routes/(app)/send/[...text]/+page.svelte
+++ b/src/routes/(app)/send/[...text]/+page.svelte
@@ -2,7 +2,6 @@
import PhCameraBold from "virtual:icons/ph/camera-bold";
import PhClipboardTextBold from "virtual:icons/ph/clipboard-text-bold";
import PhPaperPlaneRightBold from "virtual:icons/ph/paper-plane-right-bold";
- import PhLightningFill from "virtual:icons/ph/lightning-fill";
import PhPushPinFill from "virtual:icons/ph/push-pin-fill";
import PhPushPinBold from "virtual:icons/ph/push-pin-bold";
import PhStarFill from "virtual:icons/ph/star-fill";
@@ -27,7 +26,7 @@
let loaded = $state();
let loadMore = async () => {
loaded = true;
- all = await fetch("/api/contacts").then((r) => r.json());
+ all = await get("/contacts");
};
let el: any = $state(),
@@ -48,12 +47,12 @@
e.stopPropagation();
if (pinned) {
- await post("/api/pins/delete", { id });
+ await post("/pins/delete", { id });
} else {
- await post("/api/pins", { id });
+ await post("/pins", { id });
}
- if (all) all = await fetch("/api/contacts").then((r) => r.json());
+ if (all) all = await get("/contacts");
invalidate("app:contacts");
};
@@ -62,12 +61,12 @@
e.stopPropagation();
if (trusted) {
- await post("/api/trust/delete", { id });
+ await post("/trust/delete", { id });
} else {
- await post("/api/trust", { id });
+ await post("/trust", { id });
}
- if (all) all = await fetch("/api/contacts").then((r) => r.json());
+ if (all) all = await get("/contacts");
invalidate("app:contacts");
};
@@ -120,12 +119,6 @@
<div class="my-auto">{$t("user.send.next")}</div>
</button>
- <a href="/send/fund" class="block">
- <button type="button" class="btn">
- <PhLightningFill width="24" class="text-yellow-300" />
- <div class="my-auto">{$t("payments.createFund")}</div>
- </button>
- </a>
</form>
{#if contacts.length}
diff --git a/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte
index bb3229b9..ced8dfce 100644
--- a/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte
+++ b/src/routes/(app)/send/ark/[address]/[amount]/[...feeRate]/+page.svelte
@@ -35,7 +35,7 @@
});
} else {
const txid = await sendArk(address, parseInt(amount));
- p = await post("/api/ark/vault-send", {
+ p = await post("/ark/vault-send", {
hash: txid,
amount: parseInt(amount),
aid: account.id,
diff --git a/src/routes/(app)/send/invoice/[id]/+page.svelte b/src/routes/(app)/send/invoice/[id]/+page.svelte
index a0af8482..ffdfc259 100644
--- a/src/routes/(app)/send/invoice/[id]/+page.svelte
+++ b/src/routes/(app)/send/invoice/[id]/+page.svelte
@@ -70,9 +70,9 @@
e.stopPropagation();
if (trusted) {
- await post("/api/trust/delete", { id: recipient.id });
+ await post("/trust/delete", { id: recipient.id });
} else {
- await post("/api/trust", { id: recipient.id });
+ await post("/trust", { id: recipient.id });
}
invalidate("app:trust");
diff --git a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte
index 5669ee1e..b22d954a 100644
--- a/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte
+++ b/src/routes/(app)/send/lightning/[payreq]/[...memo]/+page.svelte
@@ -70,7 +70,7 @@
(async () => {
try {
- const inv = await post("/api/invoice", {
+ const inv = await post("/invoice", {
invoice: {
type: "bitcoin",
amount: parseInt(amount),
diff --git a/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte b/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte
index 21090d23..98e0d8c8 100644
--- a/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte
+++ b/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte
@@ -29,8 +29,8 @@
try {
loading = false;
event = await sign(request);
- let { pr: payreq } = await post("/api/zap", { event });
- await post("/api/payments", { amount, payreq, pin: $pin });
+ let { pr: payreq } = await post("/zap", { event });
+ await post("/payments", { amount, payreq, pin: $pin });
goto(`/e/${id}`);
} catch (e: any) {
console.log(e);
diff --git a/src/routes/(app)/settings/+layout.svelte b/src/routes/(app)/settings/+layout.svelte
index 2b3de9f5..d447f9e3 100644
--- a/src/routes/(app)/settings/+layout.svelte
+++ b/src/routes/(app)/settings/+layout.svelte
@@ -195,7 +195,7 @@
user.verified = false;
- await post("/api/request", { email });
+ await post("/request", { email });
warning($t("user.settings.verifying"), false);
} catch (e: any) {
diff --git a/src/routes/(app)/settings/account/+page.svelte b/src/routes/(app)/settings/account/+page.svelte
index fb8a9538..115f46c5 100644
--- a/src/routes/(app)/settings/account/+page.svelte
+++ b/src/routes/(app)/settings/account/+page.svelte
@@ -58,7 +58,7 @@
}
if (subscription) {
- await post("/api/subscription", { subscription });
+ await post("/subscription", { subscription });
}
};
run(() => {
diff --git a/src/routes/(app)/settings/security/+page.svelte b/src/routes/(app)/settings/security/+page.svelte
index 6ba91240..6e779eb8 100644
--- a/src/routes/(app)/settings/security/+page.svelte
+++ b/src/routes/(app)/settings/security/+page.svelte
@@ -136,7 +136,7 @@
let enable2fa = async (twoFa?: any) => {
try {
if (setting2fa && token && token.length === 6) {
- await post("/api/2fa", { token });
+ await post("/2fa", { token });
success("2FA enabled");
user.twofa = 1;
cancel();
@@ -150,7 +150,7 @@
let disable2fa = async (_?: any) => {
try {
if (disabling2fa && token && token.length === 6) {
- await post("/api/disable2fa", { token });
+ await post("/disable2fa", { token });
success("2FA disabled");
delete user.twofa;
disabling2fa = false;
diff --git a/src/routes/(app)/tag/[tag]/+page.svelte b/src/routes/(app)/tag/[tag]/+page.svelte
index 6446c265..a811e8fa 100644
--- a/src/routes/(app)/tag/[tag]/+page.svelte
+++ b/src/routes/(app)/tag/[tag]/+page.svelte
@@ -27,7 +27,7 @@
async onevent(event: any) {
if (paused) return;
if (events.find((e) => e.id === event.id)) return;
- const { parts, names } = await post("/api/parseEvent", { event });
+ const { parts, names } = await post("/parseEvent", { event });
event.author = await get(`/api/users/${event.pubkey}`);
event.parts = parts;
event.names = names;
diff --git a/src/routes/(static)/register/auth/+page.svelte b/src/routes/(static)/register/auth/+page.svelte
index c45d63f6..0aeee6de 100644
--- a/src/routes/(static)/register/auth/+page.svelte
+++ b/src/routes/(static)/register/auth/+page.svelte
@@ -174,7 +174,7 @@
console.log("Nostr key derivation failed", e);
}
- await post("/api/user", nostrPubkey ? { encryptedKeys, pubkey: nostrPubkey } : { encryptedKeys });
+ await post("/user", nostrPubkey ? { encryptedKeys, pubkey: nostrPubkey } : { encryptedKeys });
} catch (e) {
console.log("Canonical key generation failed", e);
}
@@ -269,14 +269,7 @@
// Clean up the account created by passkeyCreate if passkey registration failed
if (passkeyToken) {
try {
- await fetch("/api/user/delete", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- authorization: `Bearer ${passkeyToken}`,
- },
- body: JSON.stringify({}),
- });
+ await post("/user/delete", {}, { authorization: `Bearer ${passkeyToken}` });
} catch {}
}
if (e.name !== "NotAllowedError") {
diff --git a/src/routes/(static)/support/+page.svelte b/src/routes/(static)/support/+page.svelte
index 6af80f86..a7316129 100644
--- a/src/routes/(static)/support/+page.svelte
+++ b/src/routes/(static)/support/+page.svelte
@@ -31,7 +31,7 @@
let submit = (e: any) => {
e.preventDefault();
if (isTor) {
- post("/api/email", {
+ post("/email", {
username: user?.username || `${username} (unverified)`,
email,
message,
@@ -43,7 +43,7 @@
}
grecaptcha.ready(() => {
grecaptcha.execute(recaptchaSiteKey, { action: "submit" }).then((token) =>
- post("/api/email", {
+ post("/email", {
username: user?.username || `${username} (unverified)`,
email,
message,