forked from coracle/flotilla
Use userRoomsByUrl
This commit is contained in:
+3
-3
@@ -65,7 +65,7 @@ import {
|
|||||||
loadMembership,
|
loadMembership,
|
||||||
loadSettings,
|
loadSettings,
|
||||||
getDefaultPubkeys,
|
getDefaultPubkeys,
|
||||||
getMembershipUrls,
|
userRoomsByUrl,
|
||||||
} from "@app/state"
|
} from "@app/state"
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
@@ -301,7 +301,7 @@ export const setRelayPolicy = (url: string, read: boolean, write: boolean) => {
|
|||||||
url,
|
url,
|
||||||
...INDEXER_RELAYS,
|
...INDEXER_RELAYS,
|
||||||
...ctx.app.router.FromUser().getUrls(),
|
...ctx.app.router.FromUser().getUrls(),
|
||||||
...getMembershipUrls(userMembership.get()),
|
...userRoomsByUrl.get().keys(),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -322,7 +322,7 @@ export const setInboxRelayPolicy = (url: string, enabled: boolean) => {
|
|||||||
relays: [
|
relays: [
|
||||||
...INDEXER_RELAYS,
|
...INDEXER_RELAYS,
|
||||||
...ctx.app.router.FromUser().getUrls(),
|
...ctx.app.router.FromUser().getUrls(),
|
||||||
...getMembershipUrls(userMembership.get()),
|
...userRoomsByUrl.get().keys(),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,8 @@
|
|||||||
import RoomCreate from "@app/components/RoomCreate.svelte"
|
import RoomCreate from "@app/components/RoomCreate.svelte"
|
||||||
import MenuSpaceRoomItem from "@app/components/MenuSpaceRoomItem.svelte"
|
import MenuSpaceRoomItem from "@app/components/MenuSpaceRoomItem.svelte"
|
||||||
import {
|
import {
|
||||||
getMembershipUrls,
|
userRoomsByUrl,
|
||||||
hasMembershipUrl,
|
hasMembershipUrl,
|
||||||
userMembership,
|
|
||||||
memberships,
|
memberships,
|
||||||
deriveUserRooms,
|
deriveUserRooms,
|
||||||
deriveOtherRooms,
|
deriveOtherRooms,
|
||||||
@@ -93,7 +92,7 @@
|
|||||||
</Button>
|
</Button>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
{#if getMembershipUrls($userMembership).includes(url)}
|
{#if $userRoomsByUrl.has(url)}
|
||||||
<Button on:click={leaveSpace} class="text-error">
|
<Button on:click={leaveSpace} class="text-error">
|
||||||
<Icon icon="exit" />
|
<Icon icon="exit" />
|
||||||
Leave Space
|
Leave Space
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
import CardButton from "@lib/components/CardButton.svelte"
|
import CardButton from "@lib/components/CardButton.svelte"
|
||||||
import MenuSpacesItem from "@app/components/MenuSpacesItem.svelte"
|
import MenuSpacesItem from "@app/components/MenuSpacesItem.svelte"
|
||||||
import SpaceAdd from "@app/components/SpaceAdd.svelte"
|
import SpaceAdd from "@app/components/SpaceAdd.svelte"
|
||||||
import {userMembership, getMembershipUrls, PLATFORM_RELAY} from "@app/state"
|
import {userRoomsByUrl, PLATFORM_RELAY} from "@app/state"
|
||||||
import {pushModal} from "@app/modal"
|
import {pushModal} from "@app/modal"
|
||||||
|
|
||||||
const addSpace = () => pushModal(SpaceAdd)
|
const addSpace = () => pushModal(SpaceAdd)
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
{#if PLATFORM_RELAY}
|
{#if PLATFORM_RELAY}
|
||||||
<MenuSpacesItem url={PLATFORM_RELAY} />
|
<MenuSpacesItem url={PLATFORM_RELAY} />
|
||||||
<Divider />
|
<Divider />
|
||||||
{:else if getMembershipUrls($userMembership).length > 0}
|
{:else if $userRoomsByUrl.size > 0}
|
||||||
{#each getMembershipUrls($userMembership) as url (url)}
|
{#each $userRoomsByUrl.keys() as url (url)}
|
||||||
<MenuSpacesItem {url} />
|
<MenuSpacesItem {url} />
|
||||||
{/each}
|
{/each}
|
||||||
<Divider />
|
<Divider />
|
||||||
|
|||||||
@@ -10,13 +10,7 @@
|
|||||||
import MenuSpaces from "@app/components/MenuSpaces.svelte"
|
import MenuSpaces from "@app/components/MenuSpaces.svelte"
|
||||||
import MenuSettings from "@app/components/MenuSettings.svelte"
|
import MenuSettings from "@app/components/MenuSettings.svelte"
|
||||||
import PrimaryNavItemSpace from "@app/components/PrimaryNavItemSpace.svelte"
|
import PrimaryNavItemSpace from "@app/components/PrimaryNavItemSpace.svelte"
|
||||||
import {
|
import {userRoomsByUrl, canDecrypt, PLATFORM_RELAY, PLATFORM_LOGO} from "@app/state"
|
||||||
userMembership,
|
|
||||||
getMembershipUrls,
|
|
||||||
canDecrypt,
|
|
||||||
PLATFORM_RELAY,
|
|
||||||
PLATFORM_LOGO,
|
|
||||||
} from "@app/state"
|
|
||||||
import {pushModal} from "@app/modal"
|
import {pushModal} from "@app/modal"
|
||||||
import {makeSpacePath} from "@app/routes"
|
import {makeSpacePath} from "@app/routes"
|
||||||
import {notifications} from "@app/notifications"
|
import {notifications} from "@app/notifications"
|
||||||
@@ -31,7 +25,7 @@
|
|||||||
|
|
||||||
const openChat = () => ($canDecrypt ? goto("/chat") : pushModal(ChatEnable, {next: "/chat"}))
|
const openChat = () => ($canDecrypt ? goto("/chat") : pushModal(ChatEnable, {next: "/chat"}))
|
||||||
|
|
||||||
$: spaceUrls = getMembershipUrls($userMembership)
|
$: spaceUrls = Array.from($userRoomsByUrl.keys())
|
||||||
$: spacePaths = spaceUrls.map(url => makeSpacePath(url))
|
$: spacePaths = spaceUrls.map(url => makeSpacePath(url))
|
||||||
$: anySpaceNotifications = spacePaths.some(
|
$: anySpaceNotifications = spacePaths.some(
|
||||||
path => !$page.url.pathname.startsWith(path) && $notifications.has(path),
|
path => !$page.url.pathname.startsWith(path) && $notifications.has(path),
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
import type {Page} from "@sveltejs/kit"
|
import type {Page} from "@sveltejs/kit"
|
||||||
import {userMembership, makeChatId, decodeRelay, encodeRelay, getMembershipUrls} from "@app/state"
|
import {makeChatId, decodeRelay, encodeRelay, userRoomsByUrl} from "@app/state"
|
||||||
|
|
||||||
export const makeSpacePath = (url: string, ...extra: string[]) => {
|
export const makeSpacePath = (url: string, ...extra: string[]) => {
|
||||||
let path = `/spaces/${encodeRelay(url)}`
|
let path = `/spaces/${encodeRelay(url)}`
|
||||||
@@ -28,7 +28,7 @@ export const makeThreadPath = (url: string, eventId?: string) => {
|
|||||||
export const getPrimaryNavItem = ($page: Page) => $page.route?.id?.split("/")[1]
|
export const getPrimaryNavItem = ($page: Page) => $page.route?.id?.split("/")[1]
|
||||||
|
|
||||||
export const getPrimaryNavItemIndex = ($page: Page) => {
|
export const getPrimaryNavItemIndex = ($page: Page) => {
|
||||||
const urls = getMembershipUrls(userMembership.get())
|
const urls = Array.from(userRoomsByUrl.get().keys())
|
||||||
|
|
||||||
switch (getPrimaryNavItem($page)) {
|
switch (getPrimaryNavItem($page)) {
|
||||||
case "discover":
|
case "discover":
|
||||||
|
|||||||
+1
-1
@@ -638,7 +638,7 @@ export const userRoomsByUrl = withGetter(
|
|||||||
|
|
||||||
export const deriveUserRooms = (url: string) =>
|
export const deriveUserRooms = (url: string) =>
|
||||||
derived(userRoomsByUrl, $userRoomsByUrl =>
|
derived(userRoomsByUrl, $userRoomsByUrl =>
|
||||||
sortBy(roomComparator(url), uniq(Array.from($userRoomsByUrl.get(url) || []))),
|
sortBy(roomComparator(url), uniq(Array.from($userRoomsByUrl.get(url) || [GENERAL]))),
|
||||||
)
|
)
|
||||||
|
|
||||||
export const deriveOtherRooms = (url: string) =>
|
export const deriveOtherRooms = (url: string) =>
|
||||||
|
|||||||
@@ -185,11 +185,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Listen for space data, populate space-based notifications
|
// Listen for space data, populate space-based notifications
|
||||||
let spacesSub: any
|
let unsubSpaces: any
|
||||||
|
|
||||||
userMembership.subscribe($membership => {
|
userMembership.subscribe($membership => {
|
||||||
spacesSub?.close()
|
unsubSpaces?.()
|
||||||
spacesSub = listenForNotifications()
|
unsubSpaces = listenForNotifications()
|
||||||
})
|
})
|
||||||
|
|
||||||
// Listen for chats, populate chat-based notifications
|
// Listen for chats, populate chat-based notifications
|
||||||
|
|||||||
@@ -15,10 +15,10 @@
|
|||||||
import SpaceCheck from "@app/components/SpaceCheck.svelte"
|
import SpaceCheck from "@app/components/SpaceCheck.svelte"
|
||||||
import ProfileCircles from "@app/components/ProfileCircles.svelte"
|
import ProfileCircles from "@app/components/ProfileCircles.svelte"
|
||||||
import {
|
import {
|
||||||
userMembership,
|
|
||||||
memberships,
|
memberships,
|
||||||
membershipByPubkey,
|
membershipByPubkey,
|
||||||
getMembershipUrls,
|
getMembershipUrls,
|
||||||
|
userRoomsByUrl,
|
||||||
getDefaultPubkeys,
|
getDefaultPubkeys,
|
||||||
} from "@app/state"
|
} from "@app/state"
|
||||||
import {discoverRelays} from "@app/commands"
|
import {discoverRelays} from "@app/commands"
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#if getMembershipUrls($userMembership).includes(relay.url)}
|
{#if $userRoomsByUrl.has(relay.url)}
|
||||||
<div
|
<div
|
||||||
class="tooltip absolute -right-1 -top-1 h-5 w-5 rounded-full bg-primary"
|
class="tooltip absolute -right-1 -top-1 h-5 w-5 rounded-full bg-primary"
|
||||||
data-tip="You are already a member of this space.">
|
data-tip="You are already a member of this space.">
|
||||||
|
|||||||
@@ -22,8 +22,7 @@
|
|||||||
channelsById,
|
channelsById,
|
||||||
deriveUserRooms,
|
deriveUserRooms,
|
||||||
deriveOtherRooms,
|
deriveOtherRooms,
|
||||||
userMembership,
|
userRoomsByUrl,
|
||||||
getMembershipUrls,
|
|
||||||
} from "@app/state"
|
} from "@app/state"
|
||||||
import {makeChatPath, makeRoomPath, makeSpacePath} from "@app/routes"
|
import {makeChatPath, makeRoomPath, makeSpacePath} from "@app/routes"
|
||||||
import {notifications} from "@app/notifications"
|
import {notifications} from "@app/notifications"
|
||||||
@@ -51,7 +50,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<strong slot="title">Home</strong>
|
<strong slot="title">Home</strong>
|
||||||
<div slot="action" class="row-2">
|
<div slot="action" class="row-2">
|
||||||
{#if !getMembershipUrls($userMembership).includes(url)}
|
{#if !$userRoomsByUrl.has(url)}
|
||||||
<Button class="btn btn-primary btn-sm" on:click={joinSpace}>
|
<Button class="btn btn-primary btn-sm" on:click={joinSpace}>
|
||||||
<Icon icon="login-2" />
|
<Icon icon="login-2" />
|
||||||
Join Space
|
Join Space
|
||||||
|
|||||||
@@ -24,13 +24,12 @@
|
|||||||
import ChannelCompose from "@app/components/ChannelCompose.svelte"
|
import ChannelCompose from "@app/components/ChannelCompose.svelte"
|
||||||
import {
|
import {
|
||||||
userSettingValues,
|
userSettingValues,
|
||||||
userMembership,
|
|
||||||
decodeRelay,
|
decodeRelay,
|
||||||
deriveEventsForUrl,
|
deriveEventsForUrl,
|
||||||
GENERAL,
|
GENERAL,
|
||||||
tagRoom,
|
tagRoom,
|
||||||
LEGACY_MESSAGE,
|
LEGACY_MESSAGE,
|
||||||
getMembershipRoomsByUrl,
|
userRoomsByUrl,
|
||||||
displayChannel,
|
displayChannel,
|
||||||
} from "@app/state"
|
} from "@app/state"
|
||||||
import {setChecked} from "@app/notifications"
|
import {setChecked} from "@app/notifications"
|
||||||
@@ -160,7 +159,7 @@
|
|||||||
</strong>
|
</strong>
|
||||||
<div slot="action" class="row-2">
|
<div slot="action" class="row-2">
|
||||||
{#if room !== GENERAL}
|
{#if room !== GENERAL}
|
||||||
{#if getMembershipRoomsByUrl(url, $userMembership).includes(room)}
|
{#if $userRoomsByUrl.get(url)?.has(room)}
|
||||||
<Button class="btn btn-neutral btn-sm" on:click={leaveRoom}>
|
<Button class="btn btn-neutral btn-sm" on:click={leaveRoom}>
|
||||||
<Icon icon="arrows-a-logout-2" />
|
<Icon icon="arrows-a-logout-2" />
|
||||||
Leave Room
|
Leave Room
|
||||||
|
|||||||
Reference in New Issue
Block a user