mirror of
https://github.com/zadam/trilium.git
synced 2025-10-26 17:18:53 +01:00
fix(collections): not updating on import
This commit is contained in:
parent
9c8b0611ea
commit
050ff5d8cd
@ -9,7 +9,7 @@ import type { EntityChange } from "../server_types.js";
|
|||||||
import { WebSocketMessage } from "@triliumnext/commons";
|
import { WebSocketMessage } from "@triliumnext/commons";
|
||||||
|
|
||||||
type MessageHandler = (message: WebSocketMessage) => void;
|
type MessageHandler = (message: WebSocketMessage) => void;
|
||||||
const messageHandlers: MessageHandler[] = [];
|
let messageHandlers: MessageHandler[] = [];
|
||||||
|
|
||||||
let ws: WebSocket;
|
let ws: WebSocket;
|
||||||
let lastAcceptedEntityChangeId = window.glob.maxEntityChangeIdAtLoad;
|
let lastAcceptedEntityChangeId = window.glob.maxEntityChangeIdAtLoad;
|
||||||
@ -48,10 +48,14 @@ function logInfo(message: string) {
|
|||||||
window.logError = logError;
|
window.logError = logError;
|
||||||
window.logInfo = logInfo;
|
window.logInfo = logInfo;
|
||||||
|
|
||||||
function subscribeToMessages(messageHandler: MessageHandler) {
|
export function subscribeToMessages(messageHandler: MessageHandler) {
|
||||||
messageHandlers.push(messageHandler);
|
messageHandlers.push(messageHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function unsubscribeToMessage(messageHandler: MessageHandler) {
|
||||||
|
messageHandlers = messageHandlers.filter(handler => handler !== messageHandler);
|
||||||
|
}
|
||||||
|
|
||||||
// used to serialize frontend update operations
|
// used to serialize frontend update operations
|
||||||
let consumeQueuePromise: Promise<void> | null = null;
|
let consumeQueuePromise: Promise<void> | null = null;
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,8 @@ import ViewModeStorage from "../view_widgets/view_mode_storage";
|
|||||||
import CalendarView from "./calendar";
|
import CalendarView from "./calendar";
|
||||||
import TableView from "./table";
|
import TableView from "./table";
|
||||||
import BoardView from "./board";
|
import BoardView from "./board";
|
||||||
|
import { subscribeToMessages, unsubscribeToMessage as unsubscribeFromMessage } from "../../services/ws";
|
||||||
|
import { WebSocketMessage } from "@triliumnext/commons";
|
||||||
|
|
||||||
interface NoteListProps<T extends object> {
|
interface NoteListProps<T extends object> {
|
||||||
note?: FNote | null;
|
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;
|
return noteIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user