import { EditedNotesResponse } from "@triliumnext/commons";
import { useEffect, useState } from "preact/hooks";
import FNote from "../../entities/fnote";
import froca from "../../services/froca";
import { t } from "../../services/i18n";
import server from "../../services/server";
import NoteLink from "../react/NoteLink";
import { joinElements } from "../react/react_utils";
import { TabContext } from "./ribbon-interface";
export default function EditedNotesTab({ note }: TabContext) {
const editedNotes = useEditedNotes(note);
return (
{editedNotes?.length ? (
{joinElements(editedNotes.map(editedNote => {
return (
{editedNote.isDeleted ? (
{`${editedNote.title} ${t("edited_notes.deleted")}`}
) : (
<>
{editedNote.notePath ? : {editedNote.title} }
>
)}
);
}), " ")}
) : (
{t("edited_notes.no_edited_notes_found")}
)}
);
}
export function useEditedNotes(note: FNote | null | undefined) {
const [ editedNotes, setEditedNotes ] = useState();
useEffect(() => {
if (!note) return;
server.get(`edited-notes/${note.getLabelValue("dateNote")}`).then(async editedNotes => {
editedNotes = editedNotes.filter((n) => n.noteId !== note.noteId);
const noteIds = editedNotes.flatMap((n) => n.noteId);
await froca.getNotes(noteIds, true); // preload all at once
setEditedNotes(editedNotes);
});
}, [ note ]);
return editedNotes;
}