import { formatDateTime } from "../../utils/formatters.js"; import { t } from "../../services/i18n.js"; import BasicWidget from "../basic_widget.js"; import openService from "../../services/open.js"; import server from "../../services/server.js"; import utils from "../../services/utils.js"; import { openDialog } from "../../services/dialog.js"; interface AppInfo { appVersion: string; dbVersion: number; syncVersion: number; buildDate: string; buildRevision: string; dataDirectory: string; } const TPL = /*html*/` `; export default class AboutDialog extends BasicWidget { private $appVersion!: JQuery; private $dbVersion!: JQuery; private $syncVersion!: JQuery; private $buildDate!: JQuery; private $buildRevision!: JQuery; private $dataDirectory!: JQuery; doRender(): void { this.$widget = $(TPL); this.$appVersion = this.$widget.find(".app-version"); this.$dbVersion = this.$widget.find(".db-version"); this.$syncVersion = this.$widget.find(".sync-version"); this.$buildDate = this.$widget.find(".build-date"); this.$buildRevision = this.$widget.find(".build-revision"); this.$dataDirectory = this.$widget.find(".data-directory"); } async refresh() { const appInfo = await server.get("app-info"); this.$appVersion.text(appInfo.appVersion); this.$dbVersion.text(appInfo.dbVersion.toString()); this.$syncVersion.text(appInfo.syncVersion.toString()); this.$buildDate.text(formatDateTime(appInfo.buildDate)); this.$buildRevision.text(appInfo.buildRevision); this.$buildRevision.attr("href", `https://github.com/TriliumNext/Trilium/commit/${appInfo.buildRevision}`); if (utils.isElectron()) { this.$dataDirectory.html( $("", { href: "#", class: "tn-link", text: appInfo.dataDirectory }).prop("outerHTML") ); this.$dataDirectory.find("a").on("click", (event: JQuery.ClickEvent) => { event.preventDefault(); openService.openDirectory(appInfo.dataDirectory); }); } else { this.$dataDirectory.text(appInfo.dataDirectory); } } async openAboutDialogEvent() { await this.refresh(); openDialog(this.$widget); } }