aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-03-16 23:04:32 -0700
committerAdam Soltys <[email protected]>2023-03-16 23:04:36 -0700
commitcdc3a2677c8728af27084024daba288153c2bd52 (patch)
tree06330e17d9c5efa4bb52a8b8db955d195a25972f
parentbee2cdd4a24787c4bf808de4d03783955610c905 (diff)
downloadcoinos-ui-cdc3a2677c8728af27084024daba288153c2bd52.tar.gz
coinos-ui-cdc3a2677c8728af27084024daba288153c2bd52.zip
admin route
-rw-r--r--README.md1
-rw-r--r--src/locales/en.json2
-rw-r--r--src/locales/es.json2
-rw-r--r--src/locales/pt.json4
-rw-r--r--src/routes/(app)/[username]/(profile)/followers/+page.svelte4
-rw-r--r--src/routes/(app)/[username]/(profile)/follows/+page.svelte4
-rw-r--r--src/routes/(app)/[username]/payments/[...page]/+page.svelte2
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/+page.svelte19
-rw-r--r--src/routes/(app)/admin/+layout.server.js11
-rw-r--r--src/routes/(app)/admin/+layout.svelte10
-rw-r--r--src/routes/(app)/admin/+page.server.js10
-rw-r--r--src/routes/(app)/admin/+page.svelte11
-rw-r--r--src/routes/(app)/payment/[id]/+page.svelte2
-rw-r--r--src/routes/(app)/sent/+page.svelte2
14 files changed, 69 insertions, 15 deletions
diff --git a/README.md b/README.md
index f7dab808..51763e4f 100644
--- a/README.md
+++ b/README.md
@@ -10,4 +10,3 @@ To get started, clone or download the repo, then:
pnpm run dev
You'll need to run [`coinos-server`](https://github.com/coinos/coinos-server) as well
-
diff --git a/src/locales/en.json b/src/locales/en.json
index 180a15f2..28f7db2b 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -185,7 +185,7 @@
"placeholder": "Paste a bitcoin address, lightning invoice or coinos username"
},
"settings": {
- "saveSettings": "Save Settings",
+ "saveSettings": "Save Settings",
"bannerImage": "Banner Image",
"profileImage": "Profile Image",
"oneTimeCode": "Enter one-time code",
diff --git a/src/locales/es.json b/src/locales/es.json
index 5a2a5123..9f6c6e1b 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -178,7 +178,7 @@
"placeholder": "Asigne una dirección de bitcoin, una factura lightning o un usuario de coinos"
},
"settings": {
- "saveSettings": "Guardar ajustes",
+ "saveSettings": "Guardar ajustes",
"tipPrompt": "Solicitar propinas",
"tipPromptDescription": "Pregunta a las personas si quieren agregar una propina antes de pagar sus facturas",
"bannerImage": "Imagen del Banner",
diff --git a/src/locales/pt.json b/src/locales/pt.json
index f73431e3..309511f9 100644
--- a/src/locales/pt.json
+++ b/src/locales/pt.json
@@ -1,5 +1,5 @@
{
- "404": {
+ "404": {
"404": "404",
"pageNotFound": "Página não encontrada."
},
@@ -185,7 +185,7 @@
"placeholder": "Colar um endereço de bitcoin, fatura lightning ou nome de usuário na coinos"
},
"settings": {
- "saveSettings": "Salvar ajustes",
+ "saveSettings": "Salvar ajustes",
"bannerImage": "Imagem do banner",
"profileImage": "Imagem do perfil",
"oneTimeCode": "Entre com o código único",
diff --git a/src/routes/(app)/[username]/(profile)/followers/+page.svelte b/src/routes/(app)/[username]/(profile)/followers/+page.svelte
index 9c425449..56b3ba16 100644
--- a/src/routes/(app)/[username]/(profile)/followers/+page.svelte
+++ b/src/routes/(app)/[username]/(profile)/followers/+page.svelte
@@ -15,7 +15,9 @@
<svelte:window bind:innerWidth={w} />
<div class="px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-8">
- <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold">{$t('user.followers')}</h1>
+ <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold">
+ {$t('user.followers')}
+ </h1>
{#if browser}
{#if followers.length}
diff --git a/src/routes/(app)/[username]/(profile)/follows/+page.svelte b/src/routes/(app)/[username]/(profile)/follows/+page.svelte
index b6256a71..b238c3a7 100644
--- a/src/routes/(app)/[username]/(profile)/follows/+page.svelte
+++ b/src/routes/(app)/[username]/(profile)/follows/+page.svelte
@@ -14,7 +14,9 @@
<svelte:window bind:innerWidth={w} />
<div class="px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-8">
- <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold">{$t('user.following')}</h1>
+ <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold">
+ {$t('user.following')}
+ </h1>
{#if browser}
{#if follows.length}
diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte
index 4e2e6ede..c9cc5c40 100644
--- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte
+++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte
@@ -64,7 +64,7 @@
amount_fiat: f((p.amount * p.rate) / sats, p.currency),
fee_fiat: p.fee ? f((p.fee * p.rate) / sats, p.currency) : null,
tip_fiat: p.tip ? f((p.tip * p.rate) / sats, p.currency) : null,
- total_fiat: f(((p.amount + (p.tip || 0)) * p.rate) / sats, p.currency)
+ total_fiat: f(((p.amount + (p.tip || 0)) * p.rate) / sats, p.currency)
}));
let keys = [
diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
index 06e80c8c..997d8b4a 100644
--- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
+++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
@@ -5,7 +5,7 @@
import { Icon, Spinner, Pin } from '$comp';
import { t } from '$lib/translations';
- import { fail, post, success } from '$lib/utils';
+ import { fail, post, warning, success } from '$lib/utils';
import { avatar, banner, password, pin } from '$lib/store';
import { upload } from '$lib/upload';
import { page } from '$app/stores';
@@ -55,7 +55,12 @@
let data = new FormData(formElement);
if (data.get('password')) {
- data.set('cipher', await reEncryptEntropy(user, data.get('password')));
+ try {
+ data.set('cipher', await reEncryptEntropy(user, data.get('password')));
+ } catch (e) {
+ console.log('Failed to encrypt keys with new password');
+ throw e;
+ }
}
if ($avatar) {
@@ -80,8 +85,12 @@
tags: []
};
- await sign({ event, user });
- await send(event);
+ try {
+ await sign({ event, user });
+ await send(event);
+ } catch (e) {
+ warning('nostr profile could not be updated');
+ }
const response = await fetch(formElement.action, {
method: 'POST',
@@ -150,7 +159,7 @@
{#if loading}
<Spinner />
{:else}
- <div class="my-auto">{$t('user.settings.saveSettings')}</div>
+ <div class="my-auto">{$t('user.settings.saveSettings')}</div>
{/if}
</button>
</div>
diff --git a/src/routes/(app)/admin/+layout.server.js b/src/routes/(app)/admin/+layout.server.js
new file mode 100644
index 00000000..26449467
--- /dev/null
+++ b/src/routes/(app)/admin/+layout.server.js
@@ -0,0 +1,11 @@
+import { auth, get } from '$lib/utils';
+import { redirect } from '@sveltejs/kit';
+
+export async function load({ cookies, parent }) {
+ let token = cookies.get('token');
+ if (!token) throw redirect(307, '/login');
+ let user = await get('/me', auth(cookies));
+ if (!user) throw redirect(307, '/login');
+
+ return { user };
+}
diff --git a/src/routes/(app)/admin/+layout.svelte b/src/routes/(app)/admin/+layout.svelte
new file mode 100644
index 00000000..d7561e32
--- /dev/null
+++ b/src/routes/(app)/admin/+layout.svelte
@@ -0,0 +1,10 @@
+<script>
+ import { LandingHeader } from '$comp';
+ export let data;
+ let { user } = data;
+</script>
+
+<LandingHeader {user} />
+<main class="container px-10 md:px-40 mx-auto min-h-[600px] pb-20">
+ <slot />
+</main>
diff --git a/src/routes/(app)/admin/+page.server.js b/src/routes/(app)/admin/+page.server.js
new file mode 100644
index 00000000..c4079a2f
--- /dev/null
+++ b/src/routes/(app)/admin/+page.server.js
@@ -0,0 +1,10 @@
+import { get } from '$lib/utils';
+import { redirect } from '@sveltejs/kit';
+
+export async function load({ parent }) {
+ let { user } = await parent();
+ if (!user) throw redirect(307, '/login');
+
+ let users = (await get('/users')).sort((a, b) => b.balance - a.balance);
+ return { users };
+}
diff --git a/src/routes/(app)/admin/+page.svelte b/src/routes/(app)/admin/+page.svelte
new file mode 100644
index 00000000..1a747f1f
--- /dev/null
+++ b/src/routes/(app)/admin/+page.svelte
@@ -0,0 +1,11 @@
+<script>
+ export let data;
+ let { users } = data;
+</script>
+
+{#each users as { balance, username }}
+ <div class="grid grid-cols-2">
+ <div>{username}</div>
+ <div>{balance}</div>
+ </div>
+{/each}
diff --git a/src/routes/(app)/payment/[id]/+page.svelte b/src/routes/(app)/payment/[id]/+page.svelte
index 34e2d327..cf30db35 100644
--- a/src/routes/(app)/payment/[id]/+page.svelte
+++ b/src/routes/(app)/payment/[id]/+page.svelte
@@ -62,7 +62,7 @@
<span class="text-lg text-secondary">Total</span>
<div>
{f(fiat(a + (tip || 0), rate), currency)}
- <span class="text-secondary text-lg">⚡️{`${s(a + (tip || 0))}`} </span>
+ <span class="text-secondary text-lg">⚡️{`${s(a + (tip || 0))}`} </span>
</div>
</div>
{/if}
diff --git a/src/routes/(app)/sent/+page.svelte b/src/routes/(app)/sent/+page.svelte
index 72973c50..dbd18c2e 100644
--- a/src/routes/(app)/sent/+page.svelte
+++ b/src/routes/(app)/sent/+page.svelte
@@ -20,7 +20,7 @@
<div class="flex w-full max-w-[200px] mx-auto py-20" in:scale={{ start: 0.5 }}>
<Icon icon="check" style="mx-auto" />
</div>
- <h1 class="text-3xl md:text-4xl font-bold mb-6">{$t('payments.sent')}!</h1>
+ <h1 class="text-3xl md:text-4xl font-bold mb-6">{$t('payments.sent')}!</h1>
<h2 class="text-2xl md:text-3xl font-semibold">
{f(fiat(amount, rate), currency)}
{#if tip}