fix(server): app-info not showing data dir

This commit is contained in:
Elian Doran 2026-01-12 21:03:55 +02:00
parent 0d1c8ae01e
commit 83db37ed31
No known key found for this signature in database
5 changed files with 36 additions and 29 deletions

View File

@ -1,13 +1,14 @@
import Modal from "../react/Modal.js";
import type { AppInfo } from "@triliumnext/commons";
import type { CSSProperties } from "preact/compat";
import { useState } from "preact/hooks";
import { t } from "../../services/i18n.js";
import { formatDateTime } from "../../utils/formatters.js";
import openService from "../../services/open.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 { formatDateTime } from "../../utils/formatters.js";
import { useTriliumEvent } from "../react/hooks.jsx";
import Modal from "../react/Modal.js";
export default function AboutDialog() {
const [appInfo, setAppInfo] = useState<AppInfo | null>(null);
@ -54,15 +55,15 @@ export default function AboutDialog() {
<tr>
<th>{t("about.build_revision")}</th>
<td className="selectable-text">
{appInfo?.buildRevision && <a className="tn-link build-revision external" href={`https://github.com/TriliumNext/Trilium/commit/${appInfo.buildRevision}`} target="_blank" style={forceWordBreak}>{appInfo.buildRevision}</a>}
{appInfo?.buildRevision && <a className="tn-link build-revision external" href={`https://github.com/TriliumNext/Trilium/commit/${appInfo.buildRevision}`} target="_blank" style={forceWordBreak} rel="noreferrer">{appInfo.buildRevision}</a>}
</td>
</tr>
<tr>
{ appInfo?.dataDirectory && <tr>
<th>{t("about.data_directory")}</th>
<td className="data-directory">
{appInfo?.dataDirectory && (<DirectoryLink directory={appInfo.dataDirectory} style={forceWordBreak} />)}
</td>
</tr>
</tr>}
</tbody>
</table>
</Modal>
@ -76,8 +77,8 @@ function DirectoryLink({ directory, style }: { directory: string, style?: CSSPro
openService.openDirectory(directory);
};
return <a className="tn-link selectable-text" href="#" onClick={onClick} style={style}>{directory}</a>
} else {
return <span className="selectable-text" style={style}>{directory}</span>;
}
return <a className="tn-link selectable-text" href="#" onClick={onClick} style={style}>{directory}</a>;
}
return <span className="selectable-text" style={style}>{directory}</span>;
}

View File

@ -4,9 +4,11 @@
*/
import { initializeCore } from "@triliumnext/core";
import path from "path";
import ClsHookedExecutionContext from "./cls_provider.js";
import NodejsCryptoProvider from "./crypto_provider.js";
import dataDirs from "./services/data_dir.js";
import BetterSqlite3Provider from "./sql_provider.js";
async function startApplication() {
@ -40,11 +42,15 @@ async function startApplication() {
// the maxEntityChangeId has been incremented during failed transaction, need to recalculate
entity_changes.recalculateMaxEntityChangeId();
}
},
},
crypto: new NodejsCryptoProvider(),
executionContext: new ClsHookedExecutionContext(),
translations: (await import("./services/i18n.js")).initializeTranslations
translations: (await import("./services/i18n.js")).initializeTranslations,
extraAppInfo: {
nodeVersion: process.version,
dataDirectory: path.resolve(dataDirs.TRILIUM_DATA_DIR)
}
});
const startTriliumServer = (await import("./www.js")).default;
await startTriliumServer();

View File

@ -1,11 +1,3 @@
import { AppInfo } from "@triliumnext/commons";
import { app_info as coreAppInfo } from "@triliumnext/core";
import path from "path";
import { app_info } from "@triliumnext/core";
import dataDir from "./data_dir.js";
export default {
...coreAppInfo,
nodeVersion: process.version,
dataDirectory: path.resolve(dataDir.TRILIUM_DATA_DIR),
} satisfies AppInfo;
export default app_info;

View File

@ -5,6 +5,7 @@ import { initSql } from "./services/sql/index";
import { SqlService, SqlServiceParams } from "./services/sql/sql";
import { initMessaging, MessagingProvider } from "./services/messaging/index";
import { initTranslations, TranslationProvider } from "./services/i18n";
import appInfo from "./services/app_info";
export type * from "./services/sql/types";
export * from "./services/sql/index";
@ -67,18 +68,23 @@ export type { NoteParams } from "./services/notes";
export * as sanitize from "./services/sanitizer";
export * as routes from "./routes";
export function initializeCore({ dbConfig, executionContext, crypto, translations, messaging }: {
export function initializeCore({ dbConfig, executionContext, crypto, translations, messaging, extraAppInfo }: {
dbConfig: SqlServiceParams,
executionContext: ExecutionContext,
crypto: CryptoProvider,
translations: TranslationProvider,
messaging?: MessagingProvider
messaging?: MessagingProvider,
extraAppInfo?: {
nodeVersion: string;
dataDirectory: string;
};
}) {
initLog();
initCrypto(crypto);
initSql(new SqlService(dbConfig, getLog()));
initContext(executionContext);
initTranslations(translations);
Object.assign(appInfo, extraAppInfo);
if (messaging) {
initMessaging(messaging);
}

View File

@ -6,7 +6,7 @@ const APP_DB_VERSION = 233;
const SYNC_VERSION = 36;
const CLIPPER_PROTOCOL_VERSION = "1.0";
export default {
const appInfo: AppInfo = {
appVersion: packageJson.version,
dbVersion: APP_DB_VERSION,
syncVersion: SYNC_VERSION,
@ -14,4 +14,6 @@ export default {
buildRevision: build.buildRevision,
clipperProtocolVersion: CLIPPER_PROTOCOL_VERSION,
utcDateTime: new Date().toISOString()
} satisfies AppInfo;
}
export default appInfo;