import { openDialog } from "../../services/dialog.js"; import ReactBasicWidget from "../react/ReactBasicWidget.js"; import Modal from "../react/Modal.js"; import { t } from "../../services/i18n.js"; import { formatDateTime } from "../../utils/formatters.js"; import server from "../../services/server.js"; import utils from "../../services/utils.js"; import openService from "../../services/open.js"; import { useState } from "preact/hooks"; import type { CSSProperties } from "preact/compat"; import type { AppInfo } from "@triliumnext/commons"; function AboutDialogComponent() { let [appInfo, setAppInfo] = useState(null); async function onShown() { const appInfo = await server.get("app-info"); setAppInfo(appInfo); } const forceWordBreak: CSSProperties = { wordBreak: "break-all" }; return ( {(appInfo !== null) ? (
{t("about.homepage")} https://github.com/TriliumNext/Trilium
{t("about.app_version")} {appInfo.appVersion}
{t("about.db_version")} {appInfo.dbVersion}
{t("about.sync_version")} {appInfo.syncVersion}
{t("about.build_date")} {formatDateTime(appInfo.buildDate)}
{t("about.build_revision")} {appInfo.buildRevision}
{t("about.data_directory")}
) : (
)}
); } function DirectoryLink({ directory, style }: { directory: string, style?: CSSProperties }) { if (utils.isElectron()) { const onClick = (e: MouseEvent) => { e.preventDefault(); openService.openDirectory(directory); }; return } else { return {directory}; } } export default class AboutDialog extends ReactBasicWidget { get component() { return ; } async openAboutDialogEvent() { openDialog(this.$widget); } }