diff --git a/src/app/components/Chat.svelte b/src/app/components/Chat.svelte index 283b6198..97c76f93 100644 --- a/src/app/components/Chat.svelte +++ b/src/app/components/Chat.svelte @@ -249,36 +249,36 @@ - {#snippet title()} - - {/snippet} - {#snippet action()} + + {:else} +
+ +

+ + and + {#if others.length === 2} + + {:else} + {others.length - 1} + {others.length > 2 ? "others" : "other"} + {/if} +

+
+ {/if} + + {#if remove($pubkey, missingRelayLists).length > 0} {@const count = remove($pubkey, missingRelayLists).length} {@const label = count > 1 ? "lists are" : "list is"} @@ -289,7 +289,7 @@ {count} {/if} - {/snippet} +
diff --git a/src/app/components/SpaceBar.svelte b/src/app/components/SpaceBar.svelte new file mode 100644 index 00000000..5d3c2c3f --- /dev/null +++ b/src/app/components/SpaceBar.svelte @@ -0,0 +1,44 @@ + + + +
+ +
+
+
+ {@render title?.()} +
+
+ {displayRelayUrl(url)} +
+
+
+ {@render action?.()} +
+
+
+
diff --git a/src/app/components/SpaceMenuButton.svelte b/src/app/components/SpaceMenuButton.svelte deleted file mode 100644 index 63165ec0..00000000 --- a/src/app/components/SpaceMenuButton.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/app/util/notifications.ts b/src/app/util/notifications.ts index 647435be..1e2ba311 100644 --- a/src/app/util/notifications.ts +++ b/src/app/util/notifications.ts @@ -180,7 +180,6 @@ export const allNotifications = derived( for (const url of getSpaceUrlsFromGroupList($userGroupList)) { const spacePath = makeSpacePath(url) - const spacePathMobile = spacePath + ":mobile" const eventsById = eventsByIdByUrl.get(url) || new Map() const latestEvent = first(sortEventsDesc(eventsById.values())) @@ -194,7 +193,6 @@ export const allNotifications = derived( const latestEvent = find(e => e.tags.some(spec(["h", h])), eventsById.values()) if (hasNotification(roomPath, latestEvent)) { - paths.add(spacePathMobile) paths.add(spacePath) paths.add(roomPath) } @@ -203,7 +201,6 @@ export const allNotifications = derived( const messagesPath = makeSpaceChatPath(url) if (hasNotification(messagesPath, first(eventsById.values()))) { - paths.add(spacePathMobile) paths.add(spacePath) paths.add(messagesPath) } diff --git a/src/app/util/routes.ts b/src/app/util/routes.ts index 1e987533..bff81085 100644 --- a/src/app/util/routes.ts +++ b/src/app/util/routes.ts @@ -1,4 +1,5 @@ import type {Page} from "@sveltejs/kit" +import theme from "tailwindcss/defaultTheme" import {get} from "svelte/store" import * as nip19 from "nostr-tools/nip19" import {goto} from "$app/navigation" @@ -6,7 +7,7 @@ import {page} from "$app/stores" import {nthEq} from "@welshman/lib" import type {TrustedEvent} from "@welshman/util" import {getAddress} from "@welshman/util" -import {tracker, loadRelay} from "@welshman/app" +import {tracker} from "@welshman/app" import {identity} from "@welshman/lib" import { getTagValue, @@ -23,7 +24,6 @@ import { decodeRelay, encodeRelay, userSpaceUrls, - hasNip29, DM_KINDS, ROOM, } from "@app/core/state" @@ -49,10 +49,10 @@ export const goToSpace = async (url: string) => { if (prevPath && prevPath !== makeSpacePath(url)) { goto(prevPath) - } else if (hasNip29(await loadRelay(url))) { + } else if (window.matchMedia(`(min-width: ${theme.screens.md})`).matches) { goto(makeSpacePath(url, "recent")) } else { - goto(makeSpacePath(url, "chat")) + goto(makeSpacePath(url)) } } diff --git a/src/lib/components/PageBar.svelte b/src/lib/components/PageBar.svelte index abe84d25..02418d3d 100644 --- a/src/lib/components/PageBar.svelte +++ b/src/lib/components/PageBar.svelte @@ -1,32 +1,16 @@
-
-
- {@render props.icon?.()} - {@render props.title?.()} -
- {@render props.action?.()} -
- {#if $page.params.relay} -
- {displayRelayUrl(decodeRelay($page.params.relay))} -
- {/if} + {@render children?.()}
diff --git a/src/lib/components/SecondaryNav.svelte b/src/lib/components/SecondaryNav.svelte index 5c7045ce..4962632e 100644 --- a/src/lib/components/SecondaryNav.svelte +++ b/src/lib/components/SecondaryNav.svelte @@ -1,12 +1,19 @@ diff --git a/src/routes/spaces/+page.svelte b/src/routes/spaces/+page.svelte index 7fbb5084..870e44f6 100644 --- a/src/routes/spaces/+page.svelte +++ b/src/routes/spaces/+page.svelte @@ -96,22 +96,18 @@ - {#snippet icon()} -
+
+
+ Your Spaces
- {/snippet} - {#snippet title()} - Your Spaces - {/snippet} - {#snippet action()} {#if $userSpaceUrls.length > 0 && PLATFORM_RELAYS.length === 0} {/if} - {/snippet} +
{#each PLATFORM_RELAYS as url (url)} diff --git a/src/routes/spaces/[relay]/+layout.svelte b/src/routes/spaces/[relay]/+layout.svelte index 512c5cc9..6d31c545 100644 --- a/src/routes/spaces/[relay]/+layout.svelte +++ b/src/routes/spaces/[relay]/+layout.svelte @@ -8,6 +8,7 @@ import SpaceAuthError from "@app/components/SpaceAuthError.svelte" import SpaceTrustRelay from "@app/components/SpaceTrustRelay.svelte" import {pushModal} from "@app/util/modal" + import {makeSpacePath} from "@app/util/routes" import {decodeRelay, relaysPendingTrust} from "@app/core/state" import {deriveRelayAuthError} from "@app/core/commands" @@ -37,11 +38,15 @@ }) - - - - - {#key $page.url.pathname} - {@render children?.()} - {/key} - +{#if $page.url.pathname === makeSpacePath(url)} + {@render children?.()} +{:else} + + + + + {#key $page.url.pathname} + {@render children?.()} + {/key} + +{/if} diff --git a/src/routes/spaces/[relay]/+page.svelte b/src/routes/spaces/[relay]/+page.svelte index b6ea076a..e6ed8ff9 100644 --- a/src/routes/spaces/[relay]/+page.svelte +++ b/src/routes/spaces/[relay]/+page.svelte @@ -1,7 +1,22 @@ + +{#if !window.matchMedia(`(min-width: ${theme.screens.md})`).matches} +
+ +
+ + + +{/if} diff --git a/src/routes/spaces/[relay]/[h]/+page.svelte b/src/routes/spaces/[relay]/[h]/+page.svelte index fb07015b..73bdcc65 100644 --- a/src/routes/spaces/[relay]/[h]/+page.svelte +++ b/src/routes/spaces/[relay]/[h]/+page.svelte @@ -23,9 +23,9 @@ import Button from "@lib/components/Button.svelte" import Divider from "@lib/components/Divider.svelte" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import RoomCompose from "@app/components/RoomCompose.svelte" import RoomComposeParent from "@app/components/RoomComposeParent.svelte" import RoomImage from "@app/components/RoomImage.svelte" @@ -33,7 +33,6 @@ import RoomItem from "@app/components/RoomItem.svelte" import RoomName from "@app/components/RoomName.svelte" import SpaceSearch from "@app/components/SpaceSearch.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import ThunkToast from "@app/components/ThunkToast.svelte" import RoomItemAddMember from "@src/app/components/RoomItemAddMember.svelte" import RoomComposeEdit from "@src/app/components/RoomComposeEdit.svelte" @@ -358,23 +357,18 @@ }) - - {#snippet icon()} - - {/snippet} + {#snippet title()} + {/snippet} {#snippet action()} -
- - - -
+ + {/snippet} -
+
diff --git a/src/routes/spaces/[relay]/calendar/+page.svelte b/src/routes/spaces/[relay]/calendar/+page.svelte index 298a6829..e2ff365b 100644 --- a/src/routes/spaces/[relay]/calendar/+page.svelte +++ b/src/routes/spaces/[relay]/calendar/+page.svelte @@ -8,14 +8,13 @@ import {EVENT_TIME, getTagValue} from "@welshman/util" import {fly} from "@lib/transition" import CalendarMinimalistic from "@assets/icons/calendar-minimalistic.svg?dataurl" - import CalendarAdd from "@assets/icons/calendar-add.svg?dataurl" + import Add from "@assets/icons/add.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import Spinner from "@lib/components/Spinner.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Divider from "@lib/components/Divider.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import CalendarEventItem from "@app/components/CalendarEventItem.svelte" import CalendarEventCreate from "@app/components/CalendarEventCreate.svelte" import {pushModal} from "@app/util/modal" @@ -111,25 +110,18 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} + Calendar {/snippet} {#snippet action()} -
- - -
+ {/snippet} -
+ {#each items as { event, dateDisplay, isFirstFutureEvent }, i (event.id)} diff --git a/src/routes/spaces/[relay]/calendar/[address]/+page.svelte b/src/routes/spaces/[relay]/calendar/[address]/+page.svelte index f7ec14c2..ed2aacb1 100644 --- a/src/routes/spaces/[relay]/calendar/[address]/+page.svelte +++ b/src/routes/spaces/[relay]/calendar/[address]/+page.svelte @@ -7,18 +7,16 @@ import {request} from "@welshman/net" import {repository} from "@welshman/app" import {deriveEventsById, deriveEventsAsc} from "@welshman/store" - import AltArrowLeft from "@assets/icons/alt-arrow-left.svg?dataurl" import SortVertical from "@assets/icons/sort-vertical.svg?dataurl" import Reply from "@assets/icons/reply-2.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" import Button from "@lib/components/Button.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import Content from "@app/components/Content.svelte" import NoteContent from "@app/components/NoteContent.svelte" import NoteCard from "@app/components/NoteCard.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import CalendarEventActions from "@app/components/CalendarEventActions.svelte" import CalendarEventHeader from "@app/components/CalendarEventHeader.svelte" import CalendarEventMeta from "@app/components/CalendarEventMeta.svelte" @@ -60,22 +58,11 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()}

{getTagValue("title", $event?.tags || []) || ""}

{/snippet} - {#snippet action()} - - {/snippet} -
+ {#if $event} diff --git a/src/routes/spaces/[relay]/chat/+page.svelte b/src/routes/spaces/[relay]/chat/+page.svelte index 41d61ac1..28f398ea 100644 --- a/src/routes/spaces/[relay]/chat/+page.svelte +++ b/src/routes/spaces/[relay]/chat/+page.svelte @@ -14,12 +14,11 @@ import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import Spinner from "@lib/components/Spinner.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Divider from "@lib/components/Divider.svelte" import ThunkToast from "@app/components/ThunkToast.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import SpaceSearch from "@app/components/SpaceSearch.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import RoomItem from "@app/components/RoomItem.svelte" import RoomItemAddMember from "@src/app/components/RoomItemAddMember.svelte" import RoomItemRemoveMember from "@src/app/components/RoomItemRemoveMember.svelte" @@ -296,22 +295,15 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} + Chat {/snippet} {#snippet action()} -
- - -
+ {/snippet} -
+
diff --git a/src/routes/spaces/[relay]/classifieds/+page.svelte b/src/routes/spaces/[relay]/classifieds/+page.svelte index bbca8fb0..d07ee338 100644 --- a/src/routes/spaces/[relay]/classifieds/+page.svelte +++ b/src/routes/spaces/[relay]/classifieds/+page.svelte @@ -7,13 +7,13 @@ import type {TrustedEvent} from "@welshman/util" import {CLASSIFIED, getTagValue} from "@welshman/util" import {fly} from "@lib/transition" - import NotesMinimalistic from "@assets/icons/notes-minimalistic.svg?dataurl" + import CaseMinimalistic from "@assets/icons/case-minimalistic.svg?dataurl" + import Add from "@assets/icons/add.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import ClassifiedItem from "@app/components/ClassifiedItem.svelte" import ClassifiedCreate from "@app/components/ClassifiedCreate.svelte" import {decodeRelay} from "@app/core/state" @@ -62,25 +62,18 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} - Classified Listings + + Classifieds {/snippet} {#snippet action()} -
- - -
+ {/snippet} -
+ {#each items as event (event.id)} diff --git a/src/routes/spaces/[relay]/classifieds/[address]/+page.svelte b/src/routes/spaces/[relay]/classifieds/[address]/+page.svelte index 4265e8e8..f1abc2c7 100644 --- a/src/routes/spaces/[relay]/classifieds/[address]/+page.svelte +++ b/src/routes/spaces/[relay]/classifieds/[address]/+page.svelte @@ -7,17 +7,15 @@ import {repository} from "@welshman/app" import {request} from "@welshman/net" import {deriveEventsById, deriveEventsAsc} from "@welshman/store" - import AltArrowLeft from "@assets/icons/alt-arrow-left.svg?dataurl" import SortVertical from "@assets/icons/sort-vertical.svg?dataurl" import Reply from "@assets/icons/reply-2.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" import Button from "@lib/components/Button.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import NoteContent from "@app/components/NoteContent.svelte" import NoteCard from "@app/components/NoteCard.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import ClassifiedActions from "@app/components/ClassifiedActions.svelte" import CommentActions from "@app/components/CommentActions.svelte" import EventReply from "@app/components/EventReply.svelte" @@ -57,24 +55,11 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()}

{getTagValue("title", $event?.tags || []) || ""}

{/snippet} - {#snippet action()} -
- -
- {/snippet} -
+ {#if $event} diff --git a/src/routes/spaces/[relay]/goals/+page.svelte b/src/routes/spaces/[relay]/goals/+page.svelte index d1475ce8..4e39eada 100644 --- a/src/routes/spaces/[relay]/goals/+page.svelte +++ b/src/routes/spaces/[relay]/goals/+page.svelte @@ -7,13 +7,13 @@ import type {TrustedEvent} from "@welshman/util" import {ZAP_GOAL, getTagValue} from "@welshman/util" import {fly} from "@lib/transition" - import NotesMinimalistic from "@assets/icons/notes-minimalistic.svg?dataurl" + import StarFallMinimalistic from "@assets/icons/star-fall-minimalistic.svg?dataurl" + import Add from "@assets/icons/add.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import GoalItem from "@app/components/GoalItem.svelte" import GoalCreate from "@app/components/GoalCreate.svelte" import {decodeRelay, makeCommentFilter} from "@app/core/state" @@ -61,25 +61,18 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} + Goals {/snippet} {#snippet action()} -
- - -
+ {/snippet} -
+ {#each items as event (event.id)} diff --git a/src/routes/spaces/[relay]/goals/[id]/+page.svelte b/src/routes/spaces/[relay]/goals/[id]/+page.svelte index 70bafb4c..23dadf7b 100644 --- a/src/routes/spaces/[relay]/goals/[id]/+page.svelte +++ b/src/routes/spaces/[relay]/goals/[id]/+page.svelte @@ -7,17 +7,15 @@ import {repository} from "@welshman/app" import {request} from "@welshman/net" import {deriveEventsById, deriveEventsAsc} from "@welshman/store" - import AltArrowLeft from "@assets/icons/alt-arrow-left.svg?dataurl" import SortVertical from "@assets/icons/sort-vertical.svg?dataurl" import Reply from "@assets/icons/reply-2.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" import Button from "@lib/components/Button.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import NoteContent from "@app/components/NoteContent.svelte" import NoteCard from "@app/components/NoteCard.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import GoalActions from "@app/components/GoalActions.svelte" import CommentActions from "@app/components/CommentActions.svelte" import EventReply from "@app/components/EventReply.svelte" @@ -58,24 +56,11 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()}

{$event?.content}

{/snippet} - {#snippet action()} -
- -
- {/snippet} -
+ {#if $event} diff --git a/src/routes/spaces/[relay]/recent/+page.svelte b/src/routes/spaces/[relay]/recent/+page.svelte index 70274443..cc888f00 100644 --- a/src/routes/spaces/[relay]/recent/+page.svelte +++ b/src/routes/spaces/[relay]/recent/+page.svelte @@ -19,9 +19,8 @@ import History from "@assets/icons/history.svg?dataurl" import {createScroller} from "@lib/html" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import NoteItem from "@app/components/NoteItem.svelte" import ThreadItem from "@app/components/ThreadItem.svelte" import ClassifiedItem from "@app/components/ClassifiedItem.svelte" @@ -104,21 +103,12 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} + Recent Activity {/snippet} - {#snippet action()} -
- -
- {/snippet} -
+
diff --git a/src/routes/spaces/[relay]/threads/+page.svelte b/src/routes/spaces/[relay]/threads/+page.svelte index a4079b1b..9746a5e9 100644 --- a/src/routes/spaces/[relay]/threads/+page.svelte +++ b/src/routes/spaces/[relay]/threads/+page.svelte @@ -8,12 +8,12 @@ import {THREAD, getTagValue} from "@welshman/util" import {fly} from "@lib/transition" import NotesMinimalistic from "@assets/icons/notes-minimalistic.svg?dataurl" + import Add from "@assets/icons/add.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import ThreadItem from "@app/components/ThreadItem.svelte" import ThreadCreate from "@app/components/ThreadCreate.svelte" import {decodeRelay} from "@app/core/state" @@ -62,25 +62,18 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()} + Threads {/snippet} {#snippet action()} -
- - -
+ {/snippet} -
+ {#each items as event (event.id)} diff --git a/src/routes/spaces/[relay]/threads/[id]/+page.svelte b/src/routes/spaces/[relay]/threads/[id]/+page.svelte index d25ed0a3..cd04e78a 100644 --- a/src/routes/spaces/[relay]/threads/[id]/+page.svelte +++ b/src/routes/spaces/[relay]/threads/[id]/+page.svelte @@ -7,17 +7,15 @@ import {repository} from "@welshman/app" import {request} from "@welshman/net" import {deriveEventsById, deriveEventsAsc} from "@welshman/store" - import AltArrowLeft from "@assets/icons/alt-arrow-left.svg?dataurl" import SortVertical from "@assets/icons/sort-vertical.svg?dataurl" import Reply from "@assets/icons/reply-2.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import PageBar from "@lib/components/PageBar.svelte" import PageContent from "@lib/components/PageContent.svelte" import Spinner from "@lib/components/Spinner.svelte" import Button from "@lib/components/Button.svelte" + import SpaceBar from "@app/components/SpaceBar.svelte" import NoteContent from "@app/components/NoteContent.svelte" import NoteCard from "@app/components/NoteCard.svelte" - import SpaceMenuButton from "@app/components/SpaceMenuButton.svelte" import ThreadActions from "@app/components/ThreadActions.svelte" import CommentActions from "@app/components/CommentActions.svelte" import EventReply from "@app/components/EventReply.svelte" @@ -57,24 +55,11 @@ }) - - {#snippet icon()} -
- -
- {/snippet} + {#snippet title()}

{getTagValue("title", $event?.tags || []) || ""}

{/snippet} - {#snippet action()} -
- -
- {/snippet} -
+ {#if $event}