aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.env.staging8
-rw-r--r--src/routes/(app)/+layout.server.ts91
-rw-r--r--src/routes/(app)/[username]/(profile)/+page.svelte48
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts76
-rw-r--r--src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte11
-rw-r--r--src/routes/+layout.server.ts7
6 files changed, 124 insertions, 117 deletions
diff --git a/.env.staging b/.env.staging
index 9f7d8f4b..fa6cb6ff 100644
--- a/.env.staging
+++ b/.env.staging
@@ -1,6 +1,10 @@
-PUBLIC_COINOS_URL=https://dev.coinos.io/api
+PUBLIC_COINOS_URL=http://localhost:3119
PUBLIC_BTC=6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d
PUBLIC_SOCKET=wss://dev.coinos.io/ws
PUBLIC_EXPLORER=https://mempool.space
+PUBLIC_LIQUID_EXPLORER=https://liquid.network
PUBLIC_DOMAIN=dev.coinos.io
-ORIGIN=https://dev.coinos.io
+PUBLIC_COINOS_PUBKEY=ba80990666ef0b6f4ba5059347beb13242921e54669e680064ca755256a1e3a6
+PUBLIC_COINOS_RELAY=wss://relay.coinos.io
+PUBLIC_COINOS_NETWORK=regtest
+PUBLIC_VAPID_PUBKEY=BEfgMDTeAn1F8ZQUGC6v5iKTD86zYXaa3QVr1E-ylKXC5c24JplcfSAN9PDlXAsVtUd3cU6j4-LsX_TKQzz_yDQ
diff --git a/src/routes/(app)/+layout.server.ts b/src/routes/(app)/+layout.server.ts
index 5824d36a..b5a279f2 100644
--- a/src/routes/(app)/+layout.server.ts
+++ b/src/routes/(app)/+layout.server.ts
@@ -1,56 +1,59 @@
+import { auth, get, protectedRoutes, sleep } from "$lib/utils";
import { error, redirect } from "@sveltejs/kit";
-import { get, auth, protectedRoutes } from "$lib/utils";
export async function load({ cookies, request, url, params }) {
- let { pathname } = url;
- let { username } = params;
- let token = cookies.get("token");
- let rate,
- rates = { USD: 1 };
+ const { pathname } = url;
+ const { username } = params;
+ const token = cookies.get("token");
+ let rate;
+ let rates = { USD: 1 };
- let user;
- if (token) {
- try {
- user = await get("/me", auth(cookies));
- } catch (e) {}
- }
+ let user;
+ if (token) {
+ try {
+ user = await get("/me", auth(cookies));
+ } catch (e) {
+ if (e.message.startsWith("Rate")) await sleep(3000);
+ user = await get("/me", auth(cookies));
+ }
+ }
- let subject;
- if (username) {
- try {
- subject = await get(`/users/${username}`);
- } catch (e) {
- error(500, "Unable to retrieve user account data");
- }
- }
+ let subject;
+ if (username) {
+ try {
+ subject = await get(`/users/${username}`);
+ } catch (e) {
+ error(500, "Unable to retrieve user account data");
+ }
+ }
- if (user?.needsMigration) {
- redirect(307, `/migrate`);
- }
+ if (user?.needsMigration) {
+ redirect(307, "/migrate");
+ }
- if (
- user &&
- ["/login", "/register"].includes(pathname) &&
- request.method === "GET"
- ) {
- redirect(307, `/${user.username}`);
- }
+ if (
+ user &&
+ ["/login", "/register"].includes(pathname) &&
+ request.method === "GET"
+ ) {
+ redirect(307, `/${user.username}`);
+ }
- if (protectedRoutes.find((p) => pathname.match(p)) && !user) {
- redirect(307, "/login");
- }
+ if (protectedRoutes.find((p) => pathname.match(p)) && !user) {
+ redirect(307, "/login");
+ }
- if (user && !user.pubkey && !pathname.includes("generate")) {
- console.log("user missing pubkey", user);
- redirect(303, `/generate`);
- }
+ if (user && !user.pubkey && !pathname.includes("generate")) {
+ console.log("user missing pubkey", user);
+ redirect(303, "/generate");
+ }
- try {
- rate = await get("/rate");
- rates = await get("/rates");
- } catch (e) {
- console.log(e);
- }
+ try {
+ rate = await get("/rate");
+ rates = await get("/rates");
+ } catch (e) {
+ console.log(e);
+ }
- return { user, token, rate, rates, subject };
+ return { user, token, rate, rates, subject };
}
diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte
index bd9537b1..7de6ec37 100644
--- a/src/routes/(app)/[username]/(profile)/+page.svelte
+++ b/src/routes/(app)/[username]/(profile)/+page.svelte
@@ -40,34 +40,32 @@
{/each}
</div>
- <div class="flex justify-center gap-2">
- <a href={`/account/savings`} class="contents">
- <button
- class="rounded-2xl py-5 px-6 hover:opacity-80 flex w-full justify-center bg-primary"
- >
- <div class="mx-auto flex gap-2">
- <Icon icon="plus" style="w-8 mx-auto" />
- <div class="my-auto text-xl whitespace-nowrap">
- {$t("accounts.addAccount")}
- </div>
+ <a href={`/account/savings`} class="contents">
+ <button
+ class="rounded-2xl py-5 px-6 hover:opacity-80 flex w-full justify-center bg-primary"
+ >
+ <div class="mx-auto flex gap-2">
+ <Icon icon="plus" style="w-8 mx-auto" />
+ <div class="my-auto text-xl whitespace-nowrap">
+ {$t("accounts.addAccount")}
</div>
- </button>
- </a>
+ </div>
+ </button>
+ </a>
- {#if $installPrompt}
- <button
- class="rounded-2xl border py-5 px-6 font-bold hover:opacity-80 flex bg-black text-white xl:hidden w-full justify-center"
- on:click={install}
- >
- <div class="mx-auto flex gap-2">
- <Icon icon="save" style="w-8 mx-auto invert" />
- <div class="my-auto text-xl whitespace-nowrap">
- {$t("user.install")}
- </div>
+ {#if $installPrompt}
+ <button
+ class="rounded-2xl border py-5 px-6 font-bold hover:opacity-80 flex bg-black text-white xl:hidden w-full justify-center"
+ on:click={install}
+ >
+ <div class="mx-auto flex gap-2">
+ <Icon icon="save" style="w-8 mx-auto invert" />
+ <div class="my-auto text-xl whitespace-nowrap">
+ {$t("user.install")}
</div>
- </button>
- {/if}
- </div>
+ </div>
+ </button>
+ {/if}
{/if}
<Items {items} {subject} {user} {total} {currency} {rate} />
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
index 77fd8a4d..1122e689 100644
--- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
+++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.server.ts
@@ -1,49 +1,49 @@
+import { auth, fd, get, post } from "$lib/utils";
import { fail, redirect } from "@sveltejs/kit";
-import { auth, get, post, fd } from "$lib/utils";
export async function load({ params: { address, amount, feeRate }, cookies }) {
- let aid = cookies.get("aid");
+ const aid = cookies.get("aid");
- try {
- let { fee, fees, inputs, ourfee, hex } = await post(
- "/bitcoin/fee",
- { address, amount, feeRate, aid },
- auth(cookies),
- );
+ try {
+ const { fee, fees, inputs, ourfee, hex } = await post(
+ "/bitcoin/fee",
+ { address, amount, feeRate, aid },
+ auth(cookies),
+ );
- let account = await get(`/account/${aid}`, auth(cookies));
+ const account = await get(`/account/${aid}`, auth(cookies));
- return {
- account,
- amount,
- address,
- fee,
- fees,
- feeRate,
- ourfee,
- hex,
- inputs,
- };
- } catch (e: any) {
- return { amount, address, feeRate, message: e.message };
- }
+ return {
+ account,
+ amount,
+ address,
+ fee,
+ fees,
+ feeRate,
+ ourfee,
+ hex,
+ inputs,
+ };
+ } catch (e: any) {
+ return { amount, address, feeRate, message: e.message };
+ }
}
export const actions = {
- default: async ({
- cookies,
- params: { address, amount, feeRate },
- request,
- }) => {
- let p;
- try {
- let body = await fd(request);
- p = await post("/bitcoin/send", body, auth(cookies));
- } catch (e: any) {
- console.log("problem sending bitcoin", e);
- return fail(400, { address, amount, feeRate, message: e.message });
- }
+ default: async ({
+ cookies,
+ params: { address, amount, feeRate },
+ request,
+ }) => {
+ let p;
+ try {
+ const body = await fd(request);
+ p = await post("/bitcoin/send", body, auth(cookies));
+ } catch (e: any) {
+ console.log("problem sending bitcoin", e);
+ return fail(400, { address, amount, feeRate, message: e.message });
+ }
- redirect(307, `/sent/${p.id}`);
- },
+ redirect(307, `/sent/${p.id}`);
+ },
};
diff --git a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
index ba87436f..903bd372 100644
--- a/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
+++ b/src/routes/(app)/send/bitcoin/[address]/[amount]/[...feeRate]/+page.svelte
@@ -98,7 +98,7 @@
data);
if (!fees) return;
delete fees.minimumFee;
- feeRate = closest(Object.values(fees), feeRate);
+ feeRate = feeRate ? closest(Object.values(fees), feeRate) : fees.halfHourFee;
if (!$rate) $rate = rates[currency];
};
@@ -106,10 +106,9 @@
let submitting, submit, showSettings;
let feeNames = {
- fastestFee: "Fastest",
- halfHourFee: "Fast",
- hourFee: "Medium",
- economyFee: "Slow",
+ fastestFee: $t("payments.fastest"),
+ halfHourFee: $t("payments.fast"),
+ hourFee: $t("payments.medium"),
};
let toggleSettings = () => (showSettings = !showSettings);
@@ -152,7 +151,7 @@
on:change={setFee}
class="border text-lg bg-white p-4 rounded-2xl text-center my-auto"
>
- {#each Object.keys(fees) as feeName}
+ {#each Object.keys(feeNames) as feeName}
<option value={fees[feeName]}
>{feeNames[feeName]} &mdash; ⚡️{fees[feeName]}/vb</option
>
diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts
index a18ba506..b4022e69 100644
--- a/src/routes/+layout.server.ts
+++ b/src/routes/+layout.server.ts
@@ -3,7 +3,7 @@ import {
loadTranslations,
locales,
} from "$lib/translations/index";
-import { auth, get } from "$lib/utils";
+import { auth, get, sleep } from "$lib/utils";
export const load = async ({ cookies, request, url }) => {
const { host, pathname } = url;
@@ -12,7 +12,10 @@ export const load = async ({ cookies, request, url }) => {
if (token) {
try {
user = await get("/me", auth(cookies));
- } catch (e) {}
+ } catch (e) {
+ if (e.message.startsWith("Rate")) await sleep(3000);
+ user = await get("/me", auth(cookies));
+ }
}
// Try to get the locale from cookie