Listen for new threads and replies

This commit is contained in:
Jon Staab
2024-11-01 14:46:38 -07:00
parent 65d1319fb8
commit f741bce32c
3 changed files with 22 additions and 18 deletions

View File

@@ -92,7 +92,7 @@
style={expandBlock ? "mask-image: linear-gradient(0deg, transparent 0px, black 100px)" : ""}> style={expandBlock ? "mask-image: linear-gradient(0deg, transparent 0px, black 100px)" : ""}>
{#each shortContent as parsed, i} {#each shortContent as parsed, i}
{#if isNewline(parsed)} {#if isNewline(parsed)}
<ContentNewline value={parsed.value.slice(1) || "\n"} /> <ContentNewline value={parsed.value} />
{:else if isTopic(parsed)} {:else if isTopic(parsed)}
<ContentTopic value={parsed.value} /> <ContentTopic value={parsed.value} />
{:else if isCode(parsed)} {:else if isCode(parsed)}

View File

@@ -44,10 +44,7 @@
</PrimaryNavItem> </PrimaryNavItem>
{/each} {/each}
<PrimaryNavItem title="Add Space" on:click={addSpace} class="tooltip-right"> <PrimaryNavItem title="Add Space" on:click={addSpace} class="tooltip-right">
<Avatar icon="add-circle" class="!h-10 !w-10" /> <Avatar icon="settings-minimalistic" class="!h-10 !w-10" />
</PrimaryNavItem>
<PrimaryNavItem title="Discover Spaces" href="/discover" class="tooltip-right">
<Avatar icon="compass-big" class="!h-10 !w-10" />
</PrimaryNavItem> </PrimaryNavItem>
{/if} {/if}
</div> </div>

View File

@@ -1,6 +1,7 @@
<script lang="ts"> <script lang="ts">
import {onMount} from "svelte" import {onMount} from "svelte"
import {page} from "$app/stores" import {page} from "$app/stores"
import {now, assoc} from "@welshman/lib"
import {getListTags, getPubkeyTagValues} from "@welshman/util" import {getListTags, getPubkeyTagValues} from "@welshman/util"
import type {Filter} from "@welshman/util" import type {Filter} from "@welshman/util"
import {feedsFromFilters, makeIntersectionFeed, makeRelayFeed} from "@welshman/feeds" import {feedsFromFilters, makeIntersectionFeed, makeRelayFeed} from "@welshman/feeds"
@@ -16,6 +17,7 @@
import ThreadCreate from "@app/components/ThreadCreate.svelte" import ThreadCreate from "@app/components/ThreadCreate.svelte"
import {THREAD, COMMENT, deriveEventsForUrl, decodeRelay} from "@app/state" import {THREAD, COMMENT, deriveEventsForUrl, decodeRelay} from "@app/state"
import {pushModal, pushDrawer} from "@app/modal" import {pushModal, pushDrawer} from "@app/modal"
import {subscribePersistent} from "@app/commands"
const url = decodeRelay($page.params.relay) const url = decodeRelay($page.params.relay)
const events = deriveEventsForUrl(url, [{kinds: [THREAD]}]) const events = deriveEventsForUrl(url, [{kinds: [THREAD]}])
@@ -37,21 +39,26 @@
let element: Element let element: Element
onMount(() => { onMount(() => {
// Why is element not defined sometimes? SVELTEKIT const unsub = subscribePersistent({
if (element) { filters: filters.map(assoc('since', now())),
const scroller = createScroller({ relays: [url],
element, })
delay: 300,
threshold: 3000,
onScroll: async () => {
const $loader = await loader
await $loader(5) const scroller = createScroller({
limit += 5 element,
}, delay: 300,
}) threshold: 3000,
onScroll: async () => {
const $loader = await loader
return () => scroller.stop() await $loader(5)
limit += 5
},
})
return () => {
unsub()
scroller.stop()
} }
}) })
</script> </script>