Skip to content

Commit

Permalink
Simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
hpeebles committed Jan 30, 2025
1 parent 3b6555a commit 94228e2
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 48 deletions.
30 changes: 8 additions & 22 deletions frontend/openchat-client/src/openchat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,6 @@ import {
import formatFileSize from "./utils/fileSize";
import { calculateMediaDimensions } from "./utils/layout";
import {
findLast,
groupBy,
groupWhile,
keepMax,
Expand Down Expand Up @@ -3049,11 +3048,11 @@ export class OpenChat extends EventTarget {
async loadNewMessages(
chatId: ChatIdentifier,
threadRootEvent?: EventWrapper<Message>,
): Promise<boolean> {
): Promise<void> {
const serverChat = this.#liveState.serverChatSummaries.get(chatId);

if (serverChat === undefined || this.#isPrivatePreview(serverChat)) {
return Promise.resolve(false);
return Promise.resolve();
}

if (threadRootEvent !== undefined && threadRootEvent.event.thread !== undefined) {
Expand All @@ -3066,7 +3065,7 @@ export class OpenChat extends EventTarget {
ascending,
threadRootEvent.event.messageIndex,
false,
).then(() => false);
);
}

const criteria = this.#newMessageCriteria(serverChat);
Expand All @@ -3076,30 +3075,17 @@ export class OpenChat extends EventTarget {
: undefined;

if (eventsResponse === undefined || eventsResponse === "events_failed") {
return false;
return;
}

await this.#handleEventsResponse(serverChat, eventsResponse);
// We may have loaded messages which are more recent than what the chat summary thinks is the latest message,
// if so, we update the chat summary to show the correct latest message.
const latestMessage = findLast(eventsResponse.events, (e) => e.event.kind === "message");
const newLatestMessage =
latestMessage !== undefined && latestMessage.index > serverChat.latestEventIndex;

if (newLatestMessage) {
updateSummaryWithConfirmedMessage(
serverChat.id,
latestMessage as EventWrapper<Message>,
);
}

this.dispatchEvent(
new LoadedNewMessages({
chatId,
threadRootMessageIndex: threadRootEvent?.event.messageIndex,
}),
);
return newLatestMessage;
}

morePreviousMessagesAvailable(
Expand Down Expand Up @@ -3550,7 +3536,10 @@ export class OpenChat extends EventTarget {
mergeServerEvents(events, newEvents, context),
);
if (newLatestMessage !== undefined) {
localChatSummaryUpdates.markUpdated(chatId, { latestMessage: newLatestMessage });
updateSummaryWithConfirmedMessage(
chatId,
newLatestMessage,
);
}
const selectedThreadRootMessageIndex = this.#liveState.selectedThreadRootMessageIndex;
if (selectedThreadRootMessageIndex !== undefined) {
Expand Down Expand Up @@ -3722,9 +3711,6 @@ export class OpenChat extends EventTarget {
this.#inflightMessagePromises.delete(messageId);
const event = mergeSendMessageResponse(msg, resp);
this.#addServerEventsToStores(chat.id, [event], threadRootMessageIndex, []);
if (threadRootMessageIndex === undefined) {
updateSummaryWithConfirmedMessage(chatId, event);
}
} else {
if (resp.kind == "rules_not_accepted") {
this.#markChatRulesAcceptedLocally(false);
Expand Down
16 changes: 0 additions & 16 deletions frontend/openchat-client/src/utils/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -378,22 +378,9 @@ export function mergeLocalSummaryUpdates(
const current = merged.get(chatId);
const updated = localUpdate.updated;
if (current !== undefined) {
const latestMessage =
(updated.latestMessage?.timestamp ?? BigInt(-1)) >
(current.latestMessage?.timestamp ?? BigInt(-1))
? updated.latestMessage
: current.latestMessage;
const latestEventIndex = Math.max(
latestMessage?.index ?? 0,
current.latestEventIndex,
);

if (updated.kind === undefined) {
merged.set(chatId, {
...current,
latestMessage,
latestMessageIndex: latestMessage?.event.messageIndex,
latestEventIndex,
membership: {
...current.membership,
notificationsMuted:
Expand All @@ -407,9 +394,6 @@ export function mergeLocalSummaryUpdates(
const mergedGate = { ...current.gateConfig.gate, ...updated.gateConfig?.gate };
merged.set(chatId, {
...current,
latestMessage,
latestMessageIndex: latestMessage?.event.messageIndex,
latestEventIndex,
name: updated.name ?? current.name,
description: updated.description ?? current.description,
public: updated.public ?? current.public,
Expand Down
8 changes: 0 additions & 8 deletions frontend/openchat-client/src/utils/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,6 @@ export function chunk<T>(array: T[], size: number): T[][] {
return chunks;
}

export function findLast<T>(array: T[], predicate: (item: T) => boolean): T | undefined {
for (let i = array.length - 1; i >= 0; i--) {
const item = array[i];
if (predicate(item)) return item;
}
return undefined;
}

export function toRecord<T, K extends string | number | symbol>(
xs: T[],
keyFn: (x: T) => K,
Expand Down
2 changes: 0 additions & 2 deletions frontend/openchat-shared/src/domain/chat/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,6 @@ export type LocalChatSummaryUpdates = {
updated?:
| {
kind?: undefined;
latestMessage?: EventWrapper<Message>;
notificationsMuted?: boolean;
archived?: boolean;
rulesAccepted?: boolean;
Expand All @@ -718,7 +717,6 @@ export type LocalChatSummaryUpdates = {
kind: "group_chat" | "channel";
name?: string;
description?: string;
latestMessage?: EventWrapper<Message>;
public?: boolean;
permissions?: OptionalChatPermissions;
frozen?: boolean;
Expand Down

0 comments on commit 94228e2

Please sign in to comment.