mirror of
https://github.com/coracle-social/flotilla.git
synced 2025-12-10 10:57:04 +00:00
Improve performance a bit
This commit is contained in:
@@ -1,17 +1,13 @@
|
||||
<script lang="ts">
|
||||
import {fromPairs} from "@welshman/lib"
|
||||
import {secondsToDate, getLocale, formatTimestamp, formatTimestampAsDate} from "@welshman/app"
|
||||
import {formatTimestamp, formatTimestampAsDate, formatTimestampAsTime} from "@welshman/app"
|
||||
import Icon from "@lib/components/Icon.svelte"
|
||||
|
||||
export let event
|
||||
|
||||
const timeFmt = new Intl.DateTimeFormat(getLocale(), {timeStyle: "short"})
|
||||
|
||||
$: meta = fromPairs(event.tags) as Record<string, string>
|
||||
$: end = parseInt(meta.end)
|
||||
$: start = parseInt(meta.start)
|
||||
$: startDate = secondsToDate(start)
|
||||
$: endDate = secondsToDate(end)
|
||||
$: startDateDisplay = formatTimestampAsDate(start)
|
||||
$: endDateDisplay = formatTimestampAsDate(end)
|
||||
$: isSingleDay = startDateDisplay === endDateDisplay
|
||||
@@ -21,6 +17,8 @@
|
||||
<span>{meta.title || meta.name}</span>
|
||||
<div class="flex items-center gap-2 text-sm">
|
||||
<Icon icon="clock-circle" size={4} />
|
||||
{timeFmt.format(startDate)} — {isSingleDay ? timeFmt.format(endDate) : formatTimestamp(end)}
|
||||
{formatTimestampAsTime(start)} — {isSingleDay
|
||||
? formatTimestampAsTime(end)
|
||||
: formatTimestamp(end)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,7 @@ import {
|
||||
getDefaultNetContext,
|
||||
makeRouter,
|
||||
tracker,
|
||||
trackerStore,
|
||||
makeTrackerStore,
|
||||
relay,
|
||||
getSession,
|
||||
getSigner,
|
||||
@@ -224,6 +224,8 @@ export const pullConservatively = ({relays, filters}: AppSyncOpts) => {
|
||||
return Promise.all(promises)
|
||||
}
|
||||
|
||||
export const trackerStore = makeTrackerStore()
|
||||
|
||||
export const deriveEvent = (idOrAddress: string, hints: string[] = []) => {
|
||||
let attempted = false
|
||||
|
||||
|
||||
@@ -150,7 +150,6 @@
|
||||
setupAnalytics()
|
||||
|
||||
ready = initStorage("flotilla", 4, {
|
||||
events: storageAdapters.fromRepository(repository, {throttle: 300, migrate: migrateEvents}),
|
||||
relays: {keyPath: "url", store: throttled(1000, relays)},
|
||||
handles: {keyPath: "nip05", store: throttled(1000, handles)},
|
||||
checked: storageAdapters.fromObjectStore(checked, {throttle: 1000}),
|
||||
@@ -162,7 +161,10 @@
|
||||
throttle: 1000,
|
||||
migrate: migratePlaintext,
|
||||
}),
|
||||
tracker: storageAdapters.fromTracker(tracker, {throttle: 1000}),
|
||||
events: storageAdapters.fromRepositoryAndTracker(repository, tracker, {
|
||||
throttle: 3000,
|
||||
migrate: migrateEvents,
|
||||
}),
|
||||
}).then(() => sleep(300))
|
||||
|
||||
// Unwrap gift wraps as they come in, but throttled
|
||||
|
||||
@@ -1,12 +1,3 @@
|
||||
<script lang="ts" context="module">
|
||||
type Element = {
|
||||
id: string
|
||||
type: "date" | "note"
|
||||
value: string | TrustedEvent
|
||||
showPubkey: boolean
|
||||
}
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import {nip19} from "nostr-tools"
|
||||
import {onMount, onDestroy} from "svelte"
|
||||
@@ -49,7 +40,7 @@
|
||||
const {room = GENERAL} = $page.params
|
||||
const content = popKey<string>("content") || ""
|
||||
const url = decodeRelay($page.params.relay)
|
||||
const events = deriveChannelMessages(url, room)
|
||||
const events = throttled(300, deriveChannelMessages(url, room))
|
||||
|
||||
const assertEvent = (e: any) => e as TrustedEvent
|
||||
|
||||
@@ -76,11 +67,7 @@
|
||||
let scroller: Scroller
|
||||
let editor: Readable<Editor>
|
||||
|
||||
const elements = throttled(
|
||||
300,
|
||||
derived(
|
||||
events,
|
||||
$events => {
|
||||
const elements = derived(events, $events => {
|
||||
const $elements = []
|
||||
|
||||
let previousDate
|
||||
@@ -106,9 +93,7 @@
|
||||
}
|
||||
|
||||
return $elements.reverse().slice(0, limit)
|
||||
}
|
||||
)
|
||||
)
|
||||
})
|
||||
|
||||
onMount(async () => {
|
||||
// Sveltekiiit
|
||||
|
||||
Reference in New Issue
Block a user