app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit a15b8afd6eeb97c3f89bae60b905d139c4c49b3d
parent 325b413f29700670390e0b49726cb051948ffc1d
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Tue, 27 Aug 2024 17:34:07 +0000

Update `/settings` with test methods, add share, modify stores and root layout

Diffstat:
M.gitignore | 1+
Msrc/lib/components/layout-trellis.svelte | 2+-
Msrc/lib/stores.ts | 4++--
Msrc/routes/(app)/+page.svelte | 43++++---------------------------------------
Msrc/routes/(app)/settings/+page.svelte | 287+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/routes/(conf)/+layout.ts | 6++++--
Msrc/routes/(conf)/conf/nostr/+page.svelte | 4+++-
Msrc/routes/+layout.svelte | 17+++++++----------
8 files changed, 309 insertions(+), 55 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -50,3 +50,4 @@ dist static/assets/sql-wasm.wasm static/phosphor-icons static/webfonts +git-diff.txt diff --git a/src/lib/components/layout-trellis.svelte b/src/lib/components/layout-trellis.svelte @@ -5,6 +5,6 @@ </script> -<div class={`flex flex-col w-full pt-4 px-4 gap-4 justify-start items-start`}> +<div class={`flex flex-col w-full pt-20 pb-12 px-4 gap-4 justify-start items-start overflow-y-scroll`}> {@render children()} </div> diff --git a/src/lib/stores.ts b/src/lib/stores.ts @@ -5,8 +5,8 @@ import { writable } from "svelte/store"; export const app_thc = writable<ColorMode>(`light`); export const app_thm = writable<ThemeKey>(`os`); -export const app_config = writable<boolean>(true); -export const app_render = writable<boolean>(true); +export const app_config = writable<boolean>(false); +export const app_render = writable<boolean>(false); export const app_lo = writable<AppLayoutKey>(`base`); export const app_win = writable<[number, number]>([0, 0]); diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte @@ -1,7 +1,6 @@ <script lang="ts"> import { goto } from "$app/navigation"; import { cl } from "$lib/client"; - import { _cf } from "$lib/conf"; import { t } from "@radroots/svelte-lib"; </script> @@ -17,51 +16,17 @@ <button class={`button-simple`} onclick={async () => { - const public_key = await cl.preferences.get(_cf.pref_key_active); - await cl.dialog.alert( - `Hi! This is your nostr public key ${public_key}`, - ); - }} - > - {"test #1"} - </button> - <button - class={`button-simple`} - onclick={async () => { - const public_key = await cl.preferences.get(_cf.pref_key_active); - const secret_key = await cl.keystore.get(`nostr:key:${public_key}`); - await cl.dialog.alert( - `Hi! This is your nostr secret key ${secret_key}`, - ); - }} - > - {"test #2"} - </button> - <button - class={`button-simple`} - onclick={async () => { - const confirm = await cl.dialog.confirm( - `Hi! This will delete your nostr key.`, - ); - if (confirm) { - const public_key = await cl.preferences.get( - _cf.pref_key_active, - ); - const key_removed = await cl.keystore.remove( - `nostr:key:${public_key}`, - ); - if (key_removed) location.reload(); - } + await goto(`/settings`); }} > - {"test #3"} + {"settings"} </button> <button class={`button-simple`} onclick={async () => { - await goto(`/settings`); + // }} > - {"settings"} + {"test #1"} </button> </div> diff --git a/src/routes/(app)/settings/+page.svelte b/src/routes/(app)/settings/+page.svelte @@ -1,6 +1,8 @@ <script lang="ts"> import { goto } from "$app/navigation"; + import { cl } from "$lib/client"; import LayoutTrellis from "$lib/components/layout-trellis.svelte"; + import { _cf } from "$lib/conf"; import { app_thc } from "$lib/stores"; import { toggle_color_mode, trellis } from "@radroots/svelte-lib"; </script> @@ -46,6 +48,7 @@ ], }, callback: async () => { + await cl.haptics.impact(); app_thc.set(toggle_color_mode($app_thc)); }, }, @@ -54,4 +57,288 @@ }, }} /> + <svelte:component + this={trellis} + basis={{ + args: { + layer: 1, + title: { + value: `Nostr Keys`, + }, + list: [ + { + touch: { + label: { + left: [ + { + value: `Nostr Key (public)`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + const public_key = await cl.preferences.get( + _cf.pref_key_active, + ); + await cl.dialog.alert( + `Hi! This is your nostr public key ${public_key}`, + ); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Nostr Key (secret)`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + const public_key = await cl.preferences.get( + _cf.pref_key_active, + ); + const secret_key = await cl.keystore.get( + `nostr:key:${public_key}`, + ); + await cl.dialog.alert( + `Hi! This is your nostr secret key ${secret_key}`, + ); + }, + }, + }, + ], + }, + }} + /> + <svelte:component + this={trellis} + basis={{ + args: { + layer: 1, + title: { + value: `Configuration`, + }, + list: [ + { + touch: { + label: { + left: [ + { + value: `Reset Device`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + const confirm = await cl.dialog.confirm( + `Hi! This will delete your saved keys.`, + ); + if (confirm) { + const public_key = await cl.preferences.get( + _cf.pref_key_active, + ); + await cl.keystore.remove( + `nostr:key:${public_key}`, + ); + await cl.preferences.remove( + _cf.pref_key_active, + ); + await cl.window.splash_show(); + location.reload(); + } + }, + }, + }, + ], + }, + }} + /> + <svelte:component + this={trellis} + basis={{ + args: { + layer: 1, + title: { + value: `Haptics`, + }, + list: [ + { + touch: { + label: { + left: [ + { + value: `Haptics Touch (less)`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + await cl.haptics.impact("less"); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Haptics Touch (more)`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + await cl.haptics.impact("more"); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Haptics Vibrate (500ms)`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + await cl.haptics.vibrate(500); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Haptics Selection Start`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + await cl.haptics.selection_start(); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Haptics Selection End`, + classes: `capitalize`, + }, + ], + }, + end: { + icon: { + key: `caret-right`, + }, + }, + callback: async () => { + await cl.haptics.selection_end(); + }, + }, + }, + ], + }, + }} + /> + <svelte:component + this={trellis} + basis={{ + args: { + layer: 1, + title: { + value: `Share`, + }, + list: [ + { + touch: { + label: { + left: [ + { + value: `Share Test #1`, + classes: `capitalize`, + }, + ], + }, + callback: async () => { + const res = await cl.share.open({ + title: `Radroots Home Page`, + text: `Find farmers around the world.`, + url: `https://radroots.org`, + dialog_title: `This is the dialog title`, + }); + + console.log(`res `, res); + }, + }, + }, + { + touch: { + label: { + left: [ + { + value: `Share Test #2`, + classes: `capitalize`, + }, + ], + }, + callback: async () => { + const res = await cl.share.open({ + title: `Radroots Home Page`, + url: `https://radroots.org`, + dialog_title: `This is the dialog title`, + files: [`file-1.png`, `file-2.png`], + }); + + console.log(`res `, res); + }, + }, + }, + ], + }, + }} + /> </LayoutTrellis> diff --git a/src/routes/(conf)/+layout.ts b/src/routes/(conf)/+layout.ts @@ -11,9 +11,11 @@ export const load: LayoutLoad = async ({ url }: LayoutLoadEvent) => { const active_nostr_key = ks_keys?.find( (i) => i === `nostr:key:${key_active}`, ); - if (active_nostr_key) return await goto(`/`); + if (active_nostr_key) { + await goto(`/`); + return + } } - } catch (e) { } finally { return {}; }; diff --git a/src/routes/(conf)/conf/nostr/+page.svelte b/src/routes/(conf)/conf/nostr/+page.svelte @@ -19,7 +19,9 @@ _cf.pref_key_active, pk_hex, ); - if (key_pref_added) await goto("/"); + if (key_pref_added) { + await goto(`/`); + } } }} > diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte @@ -8,6 +8,7 @@ import { app_config, app_key, app_lo, app_pwa_polyfills, app_render, app_sqlite, app_thc, app_thm, app_win } from "$lib/stores"; import { css_static as CssStatic, + sleep, theme_set, type PropChildren, } from "@radroots/svelte-lib"; @@ -58,7 +59,6 @@ try { if (!app_config) return; app_sqlite.set(!!(await cl.db.connect(PUBLIC_DATABASE_NAME))); - const key_active = await cl.preferences.get(_cf.pref_key_active); console.log(`key_active `, key_active) const nostr_key = await cl.keystore.get(`nostr:key:${key_active}`); @@ -67,7 +67,6 @@ else { await cl.preferences.remove(_cf.pref_key_active); await goto(`/conf/nostr`); - return; } } catch (e) { console.log(`(app_config) error `, e); @@ -79,10 +78,7 @@ app_render.subscribe(async (app_render) => { try { if (!app_render) return; - let dev_routes = false; - let route = "/"; - if (dev_routes) route = `/`; - await goto(route); + await sleep(321); } catch (e) { console.log(`(app_render) error `, e); } finally { @@ -90,8 +86,9 @@ } }); </script> - -<LayoutWindow> - {@render children()} -</LayoutWindow> +{#if $app_render} + <LayoutWindow> + {@render children()} + </LayoutWindow> +{/if} <CssStatic />