diff --git a/src/app/components/MenuSpacesItem.svelte b/src/app/components/MenuSpacesItem.svelte
index e5457cc..ab845f2 100644
--- a/src/app/components/MenuSpacesItem.svelte
+++ b/src/app/components/MenuSpacesItem.svelte
@@ -5,7 +5,7 @@
import RelayName from "@app/components/RelayName.svelte"
import RelayDescription from "@app/components/RelayDescription.svelte"
import {makeSpacePath} from "@app/routes"
- import {spacesNotifications} from "@app/notifications"
+ import {inactiveSpacesNotifications} from "@app/notifications"
export let url
@@ -17,7 +17,7 @@
- {#if $spacesNotifications.includes(url)}
+ {#if $inactiveSpacesNotifications.includes(path)}
{/if}
diff --git a/src/app/components/PrimaryNavItemSpace.svelte b/src/app/components/PrimaryNavItemSpace.svelte
index e1d92b8..b3866fc 100644
--- a/src/app/components/PrimaryNavItemSpace.svelte
+++ b/src/app/components/PrimaryNavItemSpace.svelte
@@ -3,18 +3,17 @@
import PrimaryNavItem from "@lib/components/PrimaryNavItem.svelte"
import SpaceAvatar from "@app/components/SpaceAvatar.svelte"
import {makeSpacePath} from "@app/routes"
- import {deriveNotification, SPACE_FILTERS} from "@app/notifications"
+ import {spacesNotifications} from "@app/notifications"
export let url
const path = makeSpacePath(url)
- const notification = deriveNotification(path, SPACE_FILTERS, url)
+ notification={$spacesNotifications.includes(path)}>
diff --git a/src/app/components/ProfileFeed.svelte b/src/app/components/ProfileFeed.svelte
index e0aacdc..6c89a42 100644
--- a/src/app/components/ProfileFeed.svelte
+++ b/src/app/components/ProfileFeed.svelte
@@ -13,6 +13,7 @@
export let url
export let pubkey
export let events: TrustedEvent[] = []
+ export let hideLoading = false
const ctrl = createFeedController({
useWindowing: true,
@@ -59,8 +60,10 @@
{/each}
-
-
-
+ {#if !hideLoading}
+
+
+
+ {/if}
diff --git a/src/app/notifications.ts b/src/app/notifications.ts
index 2c897c9..9bce3a3 100644
--- a/src/app/notifications.ts
+++ b/src/app/notifications.ts
@@ -17,7 +17,7 @@ checked.subscribe(v => console.log("====== checked", v))
export const deriveChecked = (key: string) => derived(checked, prop(key))
export const setChecked = (key: string, ts = now()) =>
- Boolean(console.trace("====== setChecked", key))||
+ Boolean(console.trace("====== setChecked", key)) ||
checked.update(state => ({...state, [key]: ts}))
// Filters for various routes
@@ -64,18 +64,20 @@ export const deriveNotification = (path: string, filters: Filter[], url?: string
export const spacesNotifications = derived(
[pubkey, checked, userMembership, deriveEvents(repository, {filters: SPACE_FILTERS})],
([$pubkey, $checked, $userMembership, $events]) => {
- return getMembershipUrls($userMembership).filter(url => {
- const path = makeSpacePath(url)
- const lastChecked = max([$checked["*"], $checked[path]])
- const [latestEvent] = sortBy($e => -$e.created_at, $events)
+ return getMembershipUrls($userMembership)
+ .filter(url => {
+ const path = makeSpacePath(url)
+ const lastChecked = max([$checked["*"], $checked[path]])
+ const [latestEvent] = sortBy($e => -$e.created_at, $events)
- return latestEvent?.pubkey !== $pubkey && lt(lastChecked, latestEvent?.created_at)
- })
+ return latestEvent?.pubkey !== $pubkey && lt(lastChecked, latestEvent?.created_at)
+ })
+ .map(url => makeSpacePath(url))
},
)
export const inactiveSpacesNotifications = derived(
[page, spacesNotifications],
([$page, $spacesNotifications]) =>
- $spacesNotifications.filter(url => !$page.url.pathname.startsWith(makeSpacePath(url))),
+ $spacesNotifications.filter(path => !$page.url.pathname.startsWith(path)),
)
diff --git a/src/routes/spaces/[relay]/+layout.svelte b/src/routes/spaces/[relay]/+layout.svelte
index 2217a7c..0785eea 100644
--- a/src/routes/spaces/[relay]/+layout.svelte
+++ b/src/routes/spaces/[relay]/+layout.svelte
@@ -13,12 +13,10 @@
import {setChecked} from "@app/notifications"
import {checkRelayConnection, checkRelayAuth, checkRelayAccess} from "@app/commands"
import {decodeRelay} from "@app/state"
- import {deriveNotification, SPACE_FILTERS} from "@app/notifications"
+ import {spacesNotifications} from "@app/notifications"
const url = decodeRelay($page.params.relay)
- const notification = deriveNotification($page.url.pathname, SPACE_FILTERS, url)
-
const checkConnection = async () => {
const connectionError = await checkRelayConnection(url)
@@ -35,9 +33,9 @@
}
}
- // We have to watch this one, since on mobile the badge wil be visible when active
+ // We have to watch this one, since on mobile the badge will be visible when active
$: {
- if ($notification) {
+ if ($spacesNotifications.includes($page.url.pathname)) {
setChecked($page.url.pathname)
}
}
diff --git a/src/routes/spaces/[relay]/+page.svelte b/src/routes/spaces/[relay]/+page.svelte
index 1078224..bd02f6e 100644
--- a/src/routes/spaces/[relay]/+page.svelte
+++ b/src/routes/spaces/[relay]/+page.svelte
@@ -120,9 +120,7 @@
Threads
{#each $userRooms as room (room)}
-
+
{#if channelIsLocked($channelsById.get(makeChannelId(url, room)))}
{:else}
@@ -132,9 +130,7 @@
{/each}
{#each $otherRooms as room (room)}
-
+
{#if channelIsLocked($channelsById.get(makeChannelId(url, room)))}
{:else}
@@ -151,7 +147,7 @@
{#if pubkey}
0}>
Recent posts from the relay admin
-
+
{/if}