forked from coracle/flotilla
Add checked store and set data
This commit is contained in:
+11
-1
@@ -1,9 +1,10 @@
|
|||||||
import twColors from "tailwindcss/colors"
|
import twColors from "tailwindcss/colors"
|
||||||
import {get, derived} from "svelte/store"
|
import {get, derived, writable} from "svelte/store"
|
||||||
import {nip19} from "nostr-tools"
|
import {nip19} from "nostr-tools"
|
||||||
import type {Maybe} from "@welshman/lib"
|
import type {Maybe} from "@welshman/lib"
|
||||||
import {
|
import {
|
||||||
ctx,
|
ctx,
|
||||||
|
now,
|
||||||
setContext,
|
setContext,
|
||||||
remove,
|
remove,
|
||||||
assoc,
|
assoc,
|
||||||
@@ -16,6 +17,7 @@ import {
|
|||||||
nthEq,
|
nthEq,
|
||||||
shuffle,
|
shuffle,
|
||||||
parseJson,
|
parseJson,
|
||||||
|
prop,
|
||||||
} from "@welshman/lib"
|
} from "@welshman/lib"
|
||||||
import {
|
import {
|
||||||
getIdFilters,
|
getIdFilters,
|
||||||
@@ -259,6 +261,14 @@ export const deriveEventsForUrl = (url: string, filters: Filter[]) =>
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Last checked timestamps, notifications
|
||||||
|
|
||||||
|
export const checked = writable<Record<string, number>>({})
|
||||||
|
|
||||||
|
export const deriveChecked = (key: string) => derived(checked, prop(key))
|
||||||
|
|
||||||
|
export const setChecked = (key: string, ts = now()) => checked.update(assoc(key, ts))
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
export const SETTINGS = 38489
|
export const SETTINGS = 38489
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import {onMount} from "svelte"
|
||||||
import {page} from "$app/stores"
|
import {page} from "$app/stores"
|
||||||
import Chat from "@app/components/Chat.svelte"
|
import Chat from "@app/components/Chat.svelte"
|
||||||
|
import {setChecked} from "@app/state"
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
setChecked($page.url.pathname)
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Chat id={$page.params.chat} />
|
<Chat id={$page.params.chat} />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import {onMount} from "svelte"
|
||||||
import {page} from "$app/stores"
|
import {page} from "$app/stores"
|
||||||
import {deriveRelay} from "@welshman/app"
|
import {deriveRelay} from "@welshman/app"
|
||||||
import Icon from "@lib/components/Icon.svelte"
|
import Icon from "@lib/components/Icon.svelte"
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
import ProfileFeed from "@app/components/ProfileFeed.svelte"
|
import ProfileFeed from "@app/components/ProfileFeed.svelte"
|
||||||
import RelayName from "@app/components/RelayName.svelte"
|
import RelayName from "@app/components/RelayName.svelte"
|
||||||
import RelayDescription from "@app/components/RelayDescription.svelte"
|
import RelayDescription from "@app/components/RelayDescription.svelte"
|
||||||
import {decodeRelay} from "@app/state"
|
import {decodeRelay, setChecked} from "@app/state"
|
||||||
import {pushDrawer} from "@app/modal"
|
import {pushDrawer} from "@app/modal"
|
||||||
import {makeChatPath} from "@app/routes"
|
import {makeChatPath} from "@app/routes"
|
||||||
|
|
||||||
@@ -20,6 +21,10 @@
|
|||||||
const openMenu = () => pushDrawer(MenuSpace, {url})
|
const openMenu = () => pushDrawer(MenuSpace, {url})
|
||||||
|
|
||||||
$: pubkey = $relay?.profile?.pubkey
|
$: pubkey = $relay?.profile?.pubkey
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
setChecked($page.url.pathname)
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="relative flex flex-col">
|
<div class="relative flex flex-col">
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import {onMount} from "svelte"
|
||||||
import {page} from "$app/stores"
|
import {page} from "$app/stores"
|
||||||
import {sortBy, append} from "@welshman/lib"
|
import {sortBy, append} from "@welshman/lib"
|
||||||
import type {TrustedEvent, EventContent} from "@welshman/util"
|
import type {TrustedEvent, EventContent} from "@welshman/util"
|
||||||
@@ -33,6 +34,7 @@
|
|||||||
MESSAGE,
|
MESSAGE,
|
||||||
COMMENT,
|
COMMENT,
|
||||||
getMembershipRoomsByUrl,
|
getMembershipRoomsByUrl,
|
||||||
|
setChecked,
|
||||||
} from "@app/state"
|
} from "@app/state"
|
||||||
import {addRoomMembership, removeRoomMembership} from "@app/commands"
|
import {addRoomMembership, removeRoomMembership} from "@app/commands"
|
||||||
import {pushDrawer} from "@app/modal"
|
import {pushDrawer} from "@app/modal"
|
||||||
@@ -89,6 +91,10 @@
|
|||||||
elements.reverse()
|
elements.reverse()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
setChecked($page.url.pathname)
|
||||||
|
})
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
loading = false
|
loading = false
|
||||||
}, 5000)
|
}, 5000)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
import EventItem from "@app/components/EventItem.svelte"
|
import EventItem from "@app/components/EventItem.svelte"
|
||||||
import EventCreate from "@app/components/EventCreate.svelte"
|
import EventCreate from "@app/components/EventCreate.svelte"
|
||||||
import {pushModal, pushDrawer} from "@app/modal"
|
import {pushModal, pushDrawer} from "@app/modal"
|
||||||
import {deriveEventsForUrl, pullConservatively, decodeRelay} from "@app/state"
|
import {deriveEventsForUrl, pullConservatively, decodeRelay, setChecked} from "@app/state"
|
||||||
|
|
||||||
const url = decodeRelay($page.params.relay)
|
const url = decodeRelay($page.params.relay)
|
||||||
const kinds = [EVENT_DATE, EVENT_TIME]
|
const kinds = [EVENT_DATE, EVENT_TIME]
|
||||||
@@ -54,6 +54,8 @@
|
|||||||
.slice(0, limit)
|
.slice(0, limit)
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
|
setChecked($page.url.pathname)
|
||||||
|
|
||||||
const sub = subscribe({filters: [{kinds, since: ago(30)}]})
|
const sub = subscribe({filters: [{kinds, since: ago(30)}]})
|
||||||
|
|
||||||
pullConservatively({filters: [{kinds}], relays: [url]})
|
pullConservatively({filters: [{kinds}], relays: [url]})
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
import MenuSpace from "@app/components/MenuSpace.svelte"
|
import MenuSpace from "@app/components/MenuSpace.svelte"
|
||||||
import ThreadItem from "@app/components/ThreadItem.svelte"
|
import ThreadItem from "@app/components/ThreadItem.svelte"
|
||||||
import ThreadCreate from "@app/components/ThreadCreate.svelte"
|
import ThreadCreate from "@app/components/ThreadCreate.svelte"
|
||||||
import {THREAD, COMMENT, decodeRelay} from "@app/state"
|
import {THREAD, COMMENT, decodeRelay, setChecked} from "@app/state"
|
||||||
import {pushModal, pushDrawer} from "@app/modal"
|
import {pushModal, pushDrawer} from "@app/modal"
|
||||||
|
|
||||||
const url = decodeRelay($page.params.relay)
|
const url = decodeRelay($page.params.relay)
|
||||||
@@ -33,6 +33,8 @@
|
|||||||
let events: TrustedEvent[] = []
|
let events: TrustedEvent[] = []
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
|
setChecked($page.url.pathname)
|
||||||
|
|
||||||
let unmounted = false
|
let unmounted = false
|
||||||
|
|
||||||
const ctrl = createFeedController({
|
const ctrl = createFeedController({
|
||||||
|
|||||||
Reference in New Issue
Block a user