import { useCallback, useEffect, useState } from "preact/hooks"; import { t } from "../../services/i18n"; import { TabContext } from "./ribbon-interface"; import { MetadataResponse, NoteSizeResponse, SubtreeSizeResponse } from "@triliumnext/commons"; import server from "../../services/server"; import Button from "../react/Button"; import { formatDateTime } from "../../utils/formatters"; import { formatSize } from "../../services/utils"; import LoadingSpinner from "../react/LoadingSpinner"; import { useTriliumEvent } from "../react/hooks"; export default function NoteInfoTab({ note }: TabContext) { const [ metadata, setMetadata ] = useState(); const [ isLoading, setIsLoading ] = useState(false); const [ noteSizeResponse, setNoteSizeResponse ] = useState(); const [ subtreeSizeResponse, setSubtreeSizeResponse ] = useState(); function refresh() { if (note) { server.get(`notes/${note?.noteId}/metadata`).then(setMetadata); } setNoteSizeResponse(undefined); setSubtreeSizeResponse(undefined); setIsLoading(false); } useEffect(refresh, [ note?.noteId ]); useTriliumEvent("entitiesReloaded", ({ loadResults }) => { const noteId = note?.noteId; if (noteId && (loadResults.isNoteReloaded(noteId) || loadResults.isNoteContentReloaded(noteId))) { refresh(); } }); return (
{note && (
{t("note_info_widget.note_id")}: {note.noteId} {t("note_info_widget.created")}: {formatDateTime(metadata?.dateCreated)} {t("note_info_widget.modified")}: {formatDateTime(metadata?.dateModified)}
{t("note_info_widget.type")}: {note.type}{' '} { note.mime && ({note.mime}) } {t("note_info_widget.note_size")}: {!isLoading && !noteSizeResponse && !subtreeSizeResponse && (
)}
) }