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"; import { useTriliumEventBeta } from "../react/hooks.jsx"; export default function AboutDialog() { let [appInfo, setAppInfo] = useState(null); let [shown, setShown] = useState(false); const forceWordBreak: CSSProperties = { wordBreak: "break-all" }; useTriliumEventBeta("openAboutDialog", () => setShown(true)); return ( { const appInfo = await server.get("app-info"); setAppInfo(appInfo); }} onHidden={() => setShown(false)} >
{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")} {appInfo?.buildDate ? formatDateTime(appInfo.buildDate) : ""}
{t("about.build_revision")} {appInfo?.buildRevision && {appInfo.buildRevision}}
{t("about.data_directory")} {appInfo?.dataDirectory && ()}
); } function DirectoryLink({ directory, style }: { directory: string, style?: CSSProperties }) { if (utils.isElectron()) { const onClick = (e: MouseEvent) => { e.preventDefault(); openService.openDirectory(directory); }; return } else { return {directory}; } }