mirror of
https://github.com/zadam/trilium.git
synced 2025-12-05 06:54:23 +01:00
make EditedNotes standalone component independent from ribbon
This commit is contained in:
parent
2a65b85302
commit
0cec3c7764
51
apps/client/src/widgets/EditedNotes.tsx
Normal file
51
apps/client/src/widgets/EditedNotes.tsx
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import { useEffect, useState } from "preact/hooks";
|
||||||
|
import { EditedNotesResponse, EditedNotes as EditedNotesList } from "@triliumnext/commons";
|
||||||
|
import server from "../services/server";
|
||||||
|
import { t } from "../services/i18n";
|
||||||
|
import froca from "../services/froca";
|
||||||
|
import NoteLink from "./react/NoteLink";
|
||||||
|
import { joinElements } from "./react/react_utils";
|
||||||
|
|
||||||
|
interface EditedNotesProps {
|
||||||
|
noteId?: string,
|
||||||
|
dateFilter: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function EditedNotes({ noteId, dateFilter } : EditedNotesProps) {
|
||||||
|
const [ editedNotes, setEditedNotes ] = useState<EditedNotesList>();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!noteId || !dateFilter) return;
|
||||||
|
server.get<EditedNotesResponse>(`edited-notes/${dateFilter}`)
|
||||||
|
.then(async response => {
|
||||||
|
const filteredNotes = response.notes.filter((n) => n.noteId !== noteId);
|
||||||
|
const noteIds = filteredNotes.flatMap((n) => n.noteId);
|
||||||
|
await froca.getNotes(noteIds, true); // preload all at once
|
||||||
|
setEditedNotes(filteredNotes);
|
||||||
|
});
|
||||||
|
}, [noteId, dateFilter]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{editedNotes?.length ? (
|
||||||
|
<div className="edited-notes-list use-tn-links">
|
||||||
|
{joinElements(editedNotes.map(editedNote => {
|
||||||
|
return (
|
||||||
|
<span className="edited-note-line">
|
||||||
|
{editedNote.isDeleted ? (
|
||||||
|
<i>{`${editedNote.title} ${t("edited_notes.deleted")}`}</i>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
{editedNote.notePath ? <NoteLink notePath={editedNote.notePath} showNotePath /> : <span>{editedNote.title}</span>}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
)
|
||||||
|
}), " ")}
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div className="no-edited-notes-found">{t("edited_notes.no_edited_notes_found")}</div>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -1,24 +1,8 @@
|
|||||||
import { useEffect, useState } from "preact/hooks";
|
|
||||||
import { TabContext } from "./ribbon-interface";
|
import { TabContext } from "./ribbon-interface";
|
||||||
import { EditedNotesResponse, EditedNotes } from "@triliumnext/commons";
|
import EditedNotes from "../../widgets/EditedNotes"
|
||||||
import server from "../../services/server";
|
|
||||||
import { t } from "../../services/i18n";
|
|
||||||
import froca from "../../services/froca";
|
|
||||||
import NoteLink from "../react/NoteLink";
|
|
||||||
import { joinElements } from "../react/react_utils";
|
|
||||||
|
|
||||||
export default function EditedNotesTab({ note }: TabContext) {
|
export default function EditedNotesTab({ note }: TabContext) {
|
||||||
const [ editedNotes, setEditedNotes ] = useState<EditedNotes>();
|
const dateNoteLabelValue = note?.getLabelValue("dateNote") || "";
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!note) return;
|
|
||||||
server.get<EditedNotesResponse>(`edited-notes/${note.getLabelValue("dateNote")}`).then(async response => {
|
|
||||||
const filteredNotes = response.notes.filter((n) => n.noteId !== note.noteId);
|
|
||||||
const noteIds = filteredNotes.flatMap((n) => n.noteId);
|
|
||||||
await froca.getNotes(noteIds, true); // preload all at once
|
|
||||||
setEditedNotes(filteredNotes);
|
|
||||||
});
|
|
||||||
}, [ note?.noteId ]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="edited-notes-widget" style={{
|
<div className="edited-notes-widget" style={{
|
||||||
@ -27,25 +11,7 @@ export default function EditedNotesTab({ note }: TabContext) {
|
|||||||
width: "100%",
|
width: "100%",
|
||||||
overflow: "auto"
|
overflow: "auto"
|
||||||
}}>
|
}}>
|
||||||
{editedNotes?.length ? (
|
<EditedNotes noteId={note?.noteId} dateFilter={dateNoteLabelValue} />
|
||||||
<div className="edited-notes-list use-tn-links">
|
|
||||||
{joinElements(editedNotes.map(editedNote => {
|
|
||||||
return (
|
|
||||||
<span className="edited-note-line">
|
|
||||||
{editedNote.isDeleted ? (
|
|
||||||
<i>{`${editedNote.title} ${t("edited_notes.deleted")}`}</i>
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
{editedNote.notePath ? <NoteLink notePath={editedNote.notePath} showNotePath /> : <span>{editedNote.title}</span> }
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
)
|
|
||||||
}), " ")}
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div className="no-edited-notes-found">{t("edited_notes.no_edited_notes_found")}</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user