···11<script lang="ts">
22- import { onDestroy } from 'svelte'
33- import { register, unregister } from './state'
22+ import { onDestroy } from 'svelte';
33+ import { register, unregister } from './state';
4455- export let date: Date | number
66- export let locale: string
77- export let live = true
55+ export let date: Date | number;
66+ export let locale: string;
77+ export let live = true;
8899- let instance = new Object()
1010- let text = ''
99+ let instance = new Object();
1010+ let text = '';
11111212- register(instance, date, locale, live, value => ({ text } = value))
1212+ register(instance, date, locale, live, (value) => ({ text } = value));
13131414- onDestroy(() => unregister(instance))
1414+ onDestroy(() => unregister(instance));
1515</script>
16161717<span class={$$props.class}>{text}</span>
···11-export * from './action'
22-export type { Callback } from './render'
33-export { register, unregister } from './state'
44-export { default as default } from './RelativeTime.svelte'11+export * from './action';
22+export type { Callback } from './render';
33+export { register, unregister } from './state';
44+export { default as default } from './RelativeTime.svelte';
···11-import { getFormatter } from './formatter'
22-import { render } from './render'
33-import type { Callback, RenderState } from './render'
11+import { getFormatter } from './formatter';
22+import { render } from './render';
33+import type { Callback, RenderState } from './render';
4455interface UpdateState extends RenderState {
66- update: number
66+ update: number;
77}
8899// keep track of each instance
1010-const instances = new Map<Object, UpdateState>()
1010+const instances = new Map<Object, UpdateState>();
11111212// we use a single timer for efficiency and to keep updates in sync
1313-let updateInterval: number | NodeJS.Timeout
1313+let updateInterval: number | NodeJS.Timeout;
14141515// register or update instance
1616-export function register(instance: Object, date: Date | number, locale: string, live: boolean, callback: Callback) {
1616+export function register(
1717+ instance: Object,
1818+ date: Date | number,
1919+ locale: string,
2020+ live: boolean,
2121+ callback: Callback
2222+) {
1723 // get the formatter for the given locale, we do this here so we don't keep having to look it up on each tick
1818- const formatter = getFormatter(locale)
2424+ const formatter = getFormatter(locale);
19252026 // create state to render
2121- const state = { date, callback, formatter }
2727+ const state = { date, callback, formatter };
22282329 // initial render is immediate, so works for SSR
2424- const update = render(state, Date.now())
3030+ const update = render(state, Date.now());
25312632 // if it's to update live, we keep a track and schedule the next update
2733 if (live) {
2828- instances.set(instance, { ...state, update })
3434+ instances.set(instance, { ...state, update });
2935 } else {
3030- instances.delete(instance)
3636+ instances.delete(instance);
3137 }
32383339 // start the clock ticking if there are any live instances
···3541 updateInterval =
3642 updateInterval ||
3743 setInterval(() => {
3838- const now = Date.now()
4444+ const now = Date.now();
3945 for (const state of instances.values()) {
4046 if (state.update <= now) {
4141- state.update = render(state, now)
4747+ state.update = render(state, now);
4248 }
4349 }
4444- }, 1000)
5050+ }, 1000);
4551 }
4652}
47534854export function unregister(instance: Object) {
4949- instances.delete(instance)
5555+ instances.delete(instance);
5056 if (instances.size === 0) {
5151- clearInterval(updateInterval)
5252- updateInterval = 0
5757+ clearInterval(updateInterval);
5858+ updateInterval = 0;
5359 }
5460}
+1-1
src/lib/Components/Items/BlueskyPost/types.ts
···55 AppBskyEmbedExternal,
66 AppBskyEmbedImages,
77 AppBskyEmbedRecordWithMedia,
88- AppBskyEmbedVideo,
88+ AppBskyEmbedVideo
99} from '@atproto/api';
10101111export interface Post extends AppBskyFeedDefs.PostView {