From 80d44a097a54cc588657aa0d2feb70b634991526 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 10 Dec 2024 13:38:34 -0800 Subject: [PATCH] Show lock icon for closed channels --- src/app/components/MenuSpace.svelte | 10 ++-------- src/app/components/MenuSpaceRoomItem.svelte | 14 ++++++++++++-- src/app/components/ThunkStatus.svelte | 4 ++-- src/app/notifications.ts | 2 ++ src/app/state.ts | 7 +++++-- src/assets/icons/Lock.svg | 4 ++++ src/lib/components/Icon.svelte | 2 ++ src/routes/spaces/[relay]/+page.svelte | 21 ++++++++++++++++++--- 8 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 src/assets/icons/Lock.svg diff --git a/src/app/components/MenuSpace.svelte b/src/app/components/MenuSpace.svelte index 5e8015f9..6f9d3daa 100644 --- a/src/app/components/MenuSpace.svelte +++ b/src/app/components/MenuSpace.svelte @@ -14,7 +14,6 @@ import SpaceJoin from "@app/components/SpaceJoin.svelte" import ProfileList from "@app/components/ProfileList.svelte" import RoomCreate from "@app/components/RoomCreate.svelte" - import ChannelName from "@app/components/ChannelName.svelte" import MenuSpaceRoomItem from "@app/components/MenuSpaceRoomItem.svelte" import { getMembershipUrls, @@ -121,7 +120,7 @@
Your Rooms {#each $userRooms as room, i (room)} - + {/each} {#if $otherRooms.length > 0}
@@ -134,12 +133,7 @@ {/if} {#each $otherRooms as room, i (room)} - - -
- -
-
+ {/each} diff --git a/src/app/components/MenuSpaceRoomItem.svelte b/src/app/components/MenuSpaceRoomItem.svelte index c8b98942..fd35fbcb 100644 --- a/src/app/components/MenuSpaceRoomItem.svelte +++ b/src/app/components/MenuSpaceRoomItem.svelte @@ -1,19 +1,29 @@ - + {#if channelIsLocked($channel)} + + {:else} + + {/if}
diff --git a/src/app/components/ThunkStatus.svelte b/src/app/components/ThunkStatus.svelte index 4ced6578..8926270f 100644 --- a/src/app/components/ThunkStatus.svelte +++ b/src/app/components/ThunkStatus.svelte @@ -50,9 +50,9 @@ component={ThunkStatusDetail} props={{url, message, status, retry}} params={{interactive: true}}> - + - Failed to send! + Failed to send! {:else if canCancel || isPending} diff --git a/src/app/notifications.ts b/src/app/notifications.ts index 3e8b9f6c..84c01ee6 100644 --- a/src/app/notifications.ts +++ b/src/app/notifications.ts @@ -12,6 +12,8 @@ import {LEGACY_THREAD, deriveEventsForUrl, getMembershipUrls, userMembership} fr export const checked = writable>({}) +checked.subscribe(v => console.trace("======", v)) + export const deriveChecked = (key: string) => derived(checked, prop(key)) export const setChecked = (key: string, ts = now()) => diff --git a/src/app/state.ts b/src/app/state.ts index 45a9c2af..d4f053e5 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -561,8 +561,8 @@ export const channelsById = withGetter( } channel.meta = { - access: meta.public ? "public" : "private", - membership: meta.open ? "open" : "closed", + access: meta.private ? "private" : "public", + membership: meta.closed ? "closed" : "open", picture: meta.picture, about: meta.about, } @@ -604,6 +604,9 @@ export const displayChannel = (url: string, room: string) => { export const roomComparator = (url: string) => (room: string) => displayChannel(url, room).toLowerCase() +export const channelIsLocked = (channel?: Channel) => + channel?.meta?.access === "private" && channel?.meta?.membership === "closed" + // User stuff export const userSettings = withGetter( diff --git a/src/assets/icons/Lock.svg b/src/assets/icons/Lock.svg new file mode 100644 index 00000000..7625e53e --- /dev/null +++ b/src/assets/icons/Lock.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/lib/components/Icon.svelte b/src/lib/components/Icon.svelte index 165c5b56..af86eae1 100644 --- a/src/lib/components/Icon.svelte +++ b/src/lib/components/Icon.svelte @@ -51,6 +51,7 @@ import KeyMinimalisticSquare3 from "@assets/icons/Key Minimalistic Square 3.svg?dataurl" import Letter from "@assets/icons/Letter.svg?dataurl" import LinkRound from "@assets/icons/Link Round.svg?dataurl" + import Lock from "@assets/icons/Lock.svg?dataurl" import Login from "@assets/icons/Login.svg?dataurl" import Login2 from "@assets/icons/Login 2.svg?dataurl" import Magnifer from "@assets/icons/Magnifer.svg?dataurl" @@ -133,6 +134,7 @@ letter: Letter, "link-round": LinkRound, login: Login, + lock: Lock, "login-2": Login2, magnifer: Magnifer, mailbox: Mailbox, diff --git a/src/routes/spaces/[relay]/+page.svelte b/src/routes/spaces/[relay]/+page.svelte index 6ca114b1..cf978fa1 100644 --- a/src/routes/spaces/[relay]/+page.svelte +++ b/src/routes/spaces/[relay]/+page.svelte @@ -10,7 +10,14 @@ import ChannelName from "@app/components/ChannelName.svelte" import RelayName from "@app/components/RelayName.svelte" import RelayDescription from "@app/components/RelayDescription.svelte" - import {decodeRelay, deriveUserRooms, deriveOtherRooms} from "@app/state" + import { + decodeRelay, + channelIsLocked, + makeChannelId, + channelsById, + deriveUserRooms, + deriveOtherRooms, + } from "@app/state" import {makeChatPath, makeRoomPath, makeSpacePath} from "@app/routes" const url = decodeRelay($page.params.relay) @@ -98,7 +105,11 @@ - + {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} + + {:else} + + {/if}
@@ -108,7 +119,11 @@ - + {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} + + {:else} + + {/if}