From 83c6badc20534a58322c707fb81d07df7d792229 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Mon, 27 Jul 2026 09:46:42 -0400 Subject: [PATCH] fix(web): prevent date parsing sort drop to top of history for real-time messages --- web/src/stores/conversation.ts | 4 ++-- web/src/stores/message.ts | 4 ++-- web/src/stores/ws.ts | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/web/src/stores/conversation.ts b/web/src/stores/conversation.ts index ef84dfc..388ce37 100644 --- a/web/src/stores/conversation.ts +++ b/web/src/stores/conversation.ts @@ -3,10 +3,10 @@ import { api } from "../lib/api.ts"; import { type Reaction } from "./message.ts"; function parseDate(iso: string): number { - if (!iso) return 0; + if (!iso) return Date.now(); const normalized = iso.includes("T") ? iso : iso.replace(" ", "T"); const t = new Date(normalized).getTime(); - return isNaN(t) ? 0 : t; + return isNaN(t) ? Date.now() : t; } export interface ConversationMember { diff --git a/web/src/stores/message.ts b/web/src/stores/message.ts index 30c29df..97cb043 100644 --- a/web/src/stores/message.ts +++ b/web/src/stores/message.ts @@ -2,10 +2,10 @@ import { create } from "zustand"; import { api } from "../lib/api.ts"; function parseDate(iso: string): number { - if (!iso) return 0; + if (!iso) return Date.now(); const normalized = iso.includes("T") ? iso : iso.replace(" ", "T"); const t = new Date(normalized).getTime(); - return isNaN(t) ? 0 : t; + return isNaN(t) ? Date.now() : t; } export interface MessageEmbed { diff --git a/web/src/stores/ws.ts b/web/src/stores/ws.ts index 9821539..9202e72 100644 --- a/web/src/stores/ws.ts +++ b/web/src/stores/ws.ts @@ -128,7 +128,6 @@ export const useWebSocketStore = create((set, get) => ({ return; } - const addMessage = useMessageStore.getState().addMessage; const updateMessage = useMessageStore.getState().updateMessage; const removeMessage = useMessageStore.getState().removeMessage; const addReaction = useMessageStore.getState().addReaction; @@ -155,7 +154,7 @@ export const useWebSocketStore = create((set, get) => ({ } else { const msg = payload as unknown as Message; const normalizedMsg = { ...msg, channel_id: (msg.channel_id || '').toLowerCase() }; - addMessage(normalizedMsg); + useMessageStore.getState().addMessage(normalizedMsg); // Desktop notification const currentUserId = useAuthStore.getState().user?.id;