fix(collections): not updating on import

This commit is contained in:
Elian Doran 2025-09-13 14:42:02 +03:00
parent 9c8b0611ea
commit 050ff5d8cd
No known key found for this signature in database
2 changed files with 25 additions and 2 deletions

View File

@ -9,7 +9,7 @@ import type { EntityChange } from "../server_types.js";
import { WebSocketMessage } from "@triliumnext/commons";
type MessageHandler = (message: WebSocketMessage) => void;
const messageHandlers: MessageHandler[] = [];
let messageHandlers: MessageHandler[] = [];
let ws: WebSocket;
let lastAcceptedEntityChangeId = window.glob.maxEntityChangeIdAtLoad;
@ -48,10 +48,14 @@ function logInfo(message: string) {
window.logError = logError;
window.logInfo = logInfo;
function subscribeToMessages(messageHandler: MessageHandler) {
export function subscribeToMessages(messageHandler: MessageHandler) {
messageHandlers.push(messageHandler);
}
export function unsubscribeToMessage(messageHandler: MessageHandler) {
messageHandlers = messageHandlers.filter(handler => handler !== messageHandler);
}
// used to serialize frontend update operations
let consumeQueuePromise: Promise<void> | null = null;

View File

@ -9,6 +9,8 @@ import ViewModeStorage from "../view_widgets/view_mode_storage";
import CalendarView from "./calendar";
import TableView from "./table";
import BoardView from "./board";
import { subscribeToMessages, unsubscribeToMessage as unsubscribeFromMessage } from "../../services/ws";
import { WebSocketMessage } from "@triliumnext/commons";
interface NoteListProps<T extends object> {
note?: FNote | null;
@ -137,6 +139,23 @@ function useNoteIds(note: FNote | null | undefined, viewType: ViewTypeOptions |
}
})
// Refresh on import.
useEffect(() => {
function onImport(message: WebSocketMessage) {
if (!("taskType" in message) || message.taskType !== "importNotes" || message.type !== "taskSucceeded") return;
const { parentNoteId, importedNoteId } = message.result;
if (parentNoteId && importedNoteId && (parentNoteId === note?.noteId || noteIds.includes(parentNoteId))) {
setNoteIds([
...noteIds,
importedNoteId
])
}
}
subscribeToMessages(onImport);
return () => unsubscribeFromMessage(onImport);
}, [ note, noteIds, setNoteIds ])
return noteIds;
}