From 080955532c9cf2f170e9cf01e960bfb8738d18cf Mon Sep 17 00:00:00 2001 From: Kieran Date: Tue, 14 Nov 2023 15:27:35 +0000 Subject: [PATCH] feat: time sync closes #75 --- src/element/write-message.tsx | 3 +++ src/index.tsx | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/element/write-message.tsx b/src/element/write-message.tsx index 3915c55..771addf 100644 --- a/src/element/write-message.tsx +++ b/src/element/write-message.tsx @@ -10,6 +10,8 @@ import { EmojiPicker } from "element/emoji-picker"; import type { EmojiPack, Emoji } from "types"; import { LIVE_STREAM_CHAT } from "const"; import { SnortContext } from "@snort/system-react"; +import { unixNowMs } from "@snort/shared"; +import { TimeSync } from "index"; export function WriteMessage({ link, emojiPacks }: { link: NostrLink; emojiPacks: EmojiPack[] }) { const system = useContext(SnortContext); @@ -39,6 +41,7 @@ export function WriteMessage({ link, emojiPacks }: { link: NostrLink; emojiPacks const emoji = [...emojiNames].map(name => emojis.find(e => e.at(1) === name)); eb.kind(LIVE_STREAM_CHAT as EventKind) .content(chat) + .createdAt(Math.floor((unixNowMs() - TimeSync) / 1000)) .tag(["a", `${link.kind}:${link.author}:${link.id}`, "", "root"]) .processContent(); for (const e of emoji) { diff --git a/src/index.tsx b/src/index.tsx index 0260e35..924c474 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -24,6 +24,7 @@ import { register } from "serviceWorker"; import { IntlProvider } from "intl"; import { WidgetsPage } from "pages/widgets"; import { AlertsPage } from "pages/alerts"; +import { unixNowMs } from "@snort/shared"; export enum StreamState { Live = "live", @@ -45,12 +46,23 @@ Object.entries(defaultRelays).forEach(params => { System.ConnectToRelay(relay, settings); }); +export let TimeSync = 0; + const router = createBrowserRouter([ { element: , loader: async () => { db.ready = await db.isAvailable(); await System.Init(); + try { + const req = await fetch("https://api.zap.stream/api/time"); + const nowAtServer = (await req.json()).time as number; + const now = unixNowMs(); + TimeSync = now - nowAtServer; + console.debug("Time clock sync", TimeSync); + } catch { + // ignore + } return null; }, children: [