+
+
+
diff --git a/src/app/components/ThunkStatus.svelte b/src/app/components/ThunkStatus.svelte
index 1a2d44b..031343f 100644
--- a/src/app/components/ThunkStatus.svelte
+++ b/src/app/components/ThunkStatus.svelte
@@ -28,23 +28,25 @@
$: failure = Object.entries($status).find(([url, s]) => [Failure, Timeout].includes(s.status))
-{#if canCancel || isPending}
-
-
- Sending...
- {#if canCancel}
-
- {/if}
-
-{:else if isFailure && failure}
- {@const [url, {message, status}] = failure}
-
-
-
- Failed to send!
+
+ {#if canCancel || isPending}
+
+
+ Sending...
+ {#if canCancel}
+
+ {/if}
-
-{/if}
+ {:else if isFailure && failure}
+ {@const [url, {message, status}] = failure}
+
+
+
+ Failed to send!
+
+
+ {/if}
+
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 9c2b0ca..61c7cde 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -2,6 +2,7 @@
import "@src/app.css"
import {onMount} from "svelte"
import {get} from "svelte/store"
+ import {dev} from "$app/environment"
import {sleep, take, sortBy, ago, now, HOUR} from "@welshman/lib"
import type {TrustedEvent} from "@welshman/util"
import {
@@ -38,7 +39,7 @@
import AppContainer from "@app/components/AppContainer.svelte"
import ModalContainer from "@app/components/ModalContainer.svelte"
import {theme} from "@app/theme"
- import {INDEXER_RELAYS, PLATFORM_LOGO, PLATFORM_ACCENT} from "@app/state"
+ import {INDEXER_RELAYS} from "@app/state"
import {loadUserData} from "@app/commands"
import * as state from "@app/state"
@@ -141,6 +142,12 @@
})
+
+ {#if !dev}
+
+ {/if}
+
+
{#await ready}
{:then}
diff --git a/src/routes/chat/+layout.svelte b/src/routes/chat/+layout.svelte
index 538fa2b..d27091f 100644
--- a/src/routes/chat/+layout.svelte
+++ b/src/routes/chat/+layout.svelte
@@ -8,13 +8,11 @@
import Page from "@lib/components/Page.svelte"
import Button from "@lib/components/Button.svelte"
import SecondaryNav from "@lib/components/SecondaryNav.svelte"
- import SecondaryNavItem from "@lib/components/SecondaryNavItem.svelte"
import SecondaryNavHeader from "@lib/components/SecondaryNavHeader.svelte"
import SecondaryNavSection from "@lib/components/SecondaryNavSection.svelte"
import ChatStart from "@app/components/ChatStart.svelte"
import ChatItem from "@app/components/ChatItem.svelte"
import {chatSearch, pullConservatively} from "@app/state"
- import {makeChatPath} from "@app/routes"
import {pushModal} from "@app/modal"
const startChat = () => pushModal(ChatStart)
@@ -22,7 +20,6 @@
let term = ""
$: chats = $chatSearch.searchOptions(term).filter(c => c.pubkeys.length > 1)
- $: notesPath = makeChatPath([$pubkey!])
onMount(() => {
const filter = {kinds: [WRAP], "#p": [$pubkey!]}
@@ -37,9 +34,6 @@
-
- Your Notes
-
Chats
-
-
-
- Discover spaces
- Find a community based on your hobbies or interests.
-
-
diff --git a/src/routes/notes/+page.svelte b/src/routes/notes/+page.svelte
new file mode 100644
index 0000000..56db421
--- /dev/null
+++ b/src/routes/notes/+page.svelte
@@ -0,0 +1,8 @@
+
+
+
diff --git a/src/routes/spaces/[relay]/+layout.svelte b/src/routes/spaces/[relay]/+layout.svelte
index 426752f..7691385 100644
--- a/src/routes/spaces/[relay]/+layout.svelte
+++ b/src/routes/spaces/[relay]/+layout.svelte
@@ -2,16 +2,11 @@
import {onMount} from "svelte"
import {page} from "$app/stores"
import {load} from "@welshman/app"
- import Icon from "@lib/components/Icon.svelte"
import Page from "@lib/components/Page.svelte"
import Delay from "@lib/components/Delay.svelte"
- import Button from "@lib/components/Button.svelte"
import SecondaryNav from "@lib/components/SecondaryNav.svelte"
import MenuSpace from "@app/components/MenuSpace.svelte"
import {decodeRelay, MEMBERSHIPS} from "@app/state"
- import {pushDrawer} from "@app/modal"
-
- const openMenu = () => pushDrawer(MenuSpace, {url})
$: url = decodeRelay($page.params.relay)
@@ -35,9 +30,3 @@
{/key}
-
-
-
-
-
-
diff --git a/src/routes/spaces/[relay]/[[room]]/+page.svelte b/src/routes/spaces/[relay]/[[room]]/+page.svelte
index 3fb13bd..81eeb42 100644
--- a/src/routes/spaces/[relay]/[[room]]/+page.svelte
+++ b/src/routes/spaces/[relay]/[[room]]/+page.svelte
@@ -22,6 +22,7 @@
import Spinner from "@lib/components/Spinner.svelte"
import PageBar from "@lib/components/PageBar.svelte"
import Divider from "@lib/components/Divider.svelte"
+ import MenuSpace from "@app/components/MenuSpace.svelte"
import ChannelMessage from "@app/components/ChannelMessage.svelte"
import ChannelCompose from "@app/components/ChannelCompose.svelte"
import {
@@ -35,12 +36,15 @@
getMembershipRoomsByUrl,
} from "@app/state"
import {addRoomMembership, removeRoomMembership} from "@app/commands"
+ import {pushDrawer} from "@app/modal"
const {room = GENERAL} = $page.params
const url = decodeRelay($page.params.relay)
const channel = deriveChannel(makeChannelId(url, room))
const thunks = writable({} as Record)
+ const openMenu = () => pushDrawer(MenuSpace, {url})
+
const assertEvent = (e: any) => e as TrustedEvent
const onSubmit = ({content, tags}: EventContent) => {
@@ -96,7 +100,7 @@
+
{#if room !== GENERAL}
{#if getMembershipRoomsByUrl(url, $userMembership).includes(room)}
removeRoomMembership(url, room)}>
@@ -110,6 +114,9 @@
{/if}
{/if}
+
+
+
diff --git a/src/routes/spaces/[relay]/calendar/+page.svelte b/src/routes/spaces/[relay]/calendar/+page.svelte
index 00f40b0..aca87fb 100644
--- a/src/routes/spaces/[relay]/calendar/+page.svelte
+++ b/src/routes/spaces/[relay]/calendar/+page.svelte
@@ -10,15 +10,18 @@
import Spinner from "@lib/components/Spinner.svelte"
import PageBar from "@lib/components/PageBar.svelte"
import Divider from "@lib/components/Divider.svelte"
+ import MenuSpace from "@app/components/MenuSpace.svelte"
import EventItem from "@app/components/EventItem.svelte"
import EventCreate from "@app/components/EventCreate.svelte"
- import {pushModal} from "@app/modal"
+ import {pushModal, pushDrawer} from "@app/modal"
import {deriveEventsForUrl, pullConservatively, decodeRelay} from "@app/state"
const url = decodeRelay($page.params.relay)
const kinds = [EVENT_DATE, EVENT_TIME]
const events = deriveEventsForUrl(url, kinds)
+ const openMenu = () => pushDrawer(MenuSpace, {url})
+
const createEvent = () => pushModal(EventCreate, {url})
const getEnd = (event: TrustedEvent) => parseInt(event.tags.find(t => t[0] === "end")?.[1] || "")
@@ -69,6 +72,11 @@
Calendar
+
+
+
+
+
{#each items as { event, dateDisplay }, i (event.id)}
diff --git a/src/routes/spaces/[relay]/threads/+page.svelte b/src/routes/spaces/[relay]/threads/+page.svelte
index bb39fd2..075f11a 100644
--- a/src/routes/spaces/[relay]/threads/+page.svelte
+++ b/src/routes/spaces/[relay]/threads/+page.svelte
@@ -10,10 +10,11 @@
import Button from "@lib/components/Button.svelte"
import PageBar from "@lib/components/PageBar.svelte"
import Spinner from "@lib/components/Spinner.svelte"
+ import MenuSpace from "@app/components/MenuSpace.svelte"
import ThreadItem from "@app/components/ThreadItem.svelte"
import ThreadCreate from "@app/components/ThreadCreate.svelte"
- import {pushModal} from "@app/modal"
import {deriveEventsForUrl, decodeRelay} from "@app/state"
+ import {pushModal, pushDrawer} from "@app/modal"
const url = decodeRelay($page.params.relay)
const kinds = [NOTE]
@@ -21,6 +22,8 @@
const events = deriveEventsForUrl(url, kinds)
const loader = feedLoader.getLoader(feed, {})
+ const openMenu = () => pushDrawer(MenuSpace, {url})
+
const createThread = () => pushModal(ThreadCreate, {url})
let limit = 5
@@ -52,6 +55,11 @@
Threads
+
+
+
+
+
{#each $events.slice(0, limit) as event (event.id)}
diff --git a/svelte.config.js b/svelte.config.js
index be353a7..18351f1 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -16,12 +16,12 @@ export default {
},
csp: {
directives: {
- 'script-src': ['self', 'plausible.io'],
- 'worker-src': ['self', 'blob:'],
- 'style-src': ['self', 'unsafe-inline'],
- 'frame-src': ['open.spotify.com', 'embed.tidal.com'],
- 'child-src': ['none'],
- 'form-action': ['none'],
+ "script-src": ["self", "plausible.io"],
+ "worker-src": ["self", "blob:"],
+ "style-src": ["self", "unsafe-inline"],
+ "frame-src": ["open.spotify.com", "embed.tidal.com"],
+ "child-src": ["none"],
+ "form-action": ["none"],
},
},
},
diff --git a/vite.config.ts b/vite.config.ts
index dce464d..3eb7639 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,8 +1,6 @@
-import fs from "fs"
import dotenv from "dotenv"
-import * as path from "path"
import {defineConfig} from "vite"
-import {SvelteKitPWA} from '@vite-pwa/sveltekit'
+import {SvelteKitPWA} from "@vite-pwa/sveltekit"
import {sveltekit} from "@sveltejs/kit/vite"
import svg from "@poppanator/sveltekit-svg"
@@ -29,6 +27,7 @@ export default defineConfig({
short_name: process.env.VITE_PLATFORM_NAME,
theme_color: process.env.VITE_PLATFORM_ACCENT,
description: process.env.VITE_PLATFORM_DESCRIPTION,
+ // @ts-ignore
permissions: ["clipboardRead", "clipboardWrite", "unlimitedStorage"],
icons: [
{src: "pwa-64x64.png", sizes: "64x64", type: "image/png"},