fix: fixed bookmarklet for cold start finally, hopefully, maybe

This commit is contained in:
2026-02-22 19:08:21 +01:00
parent c6afd545a6
commit 13517f134c
4 changed files with 209 additions and 6 deletions

View File

@@ -428,6 +428,49 @@ function registerBlogmarkProtocolClient(): void {
}
}
async function initializeActiveProjectContext(): Promise<void> {
try {
const { getProjectEngine } = await import('./engine/ProjectEngine');
const projectEngine = getProjectEngine();
const project = await projectEngine.getActiveProject();
if (!project) {
return;
}
const dataDir = projectEngine.getDataDir(project.id, project.dataPath);
const postEngine = getPostEngine() as {
setProjectContext?: (projectId: string, dataDir?: string) => void;
setSearchLanguage?: (language: string) => void;
};
const mediaEngine = getMediaEngine() as {
setProjectContext?: (projectId: string, dataDir?: string, internalDir?: string) => void;
setSearchLanguage?: (language: string) => void;
};
const metaEngine = getMetaEngine() as {
setProjectContext?: (projectId: string, dataDir?: string) => void;
syncOnStartup?: () => Promise<void>;
getProjectMetadata?: () => Promise<{ mainLanguage?: string } | null>;
};
postEngine.setProjectContext?.(project.id, dataDir);
mediaEngine.setProjectContext?.(project.id, dataDir, dataDir);
metaEngine.setProjectContext?.(project.id, dataDir);
await metaEngine.syncOnStartup?.();
const metadata = await metaEngine.getProjectMetadata?.();
if (metadata?.mainLanguage) {
const { isoToStemmerLanguage } = await import('./engine/stemmer');
const stemmerLang = isoToStemmerLanguage(metadata.mainLanguage);
postEngine.setSearchLanguage?.(stemmerLang);
mediaEngine.setSearchLanguage?.(stemmerLang);
}
} catch (error) {
console.error('Failed to initialize active project context:', error);
}
}
function createApplicationMenu(): Menu {
const systemLocale = typeof app.getLocale === 'function' ? app.getLocale() : 'en';
const uiLanguage = resolveUiLanguageFromSystemLocale(systemLocale);
@@ -764,7 +807,7 @@ app.on('open-url', (event, deepLink) => {
// App lifecycle
app.whenReady().then(async () => {
await initialize();
appInitialized = true;
const activeProjectContextReady = initializeActiveProjectContext();
registerBlogmarkProtocolClient();
try {
await startPreviewServerOnAppStart();
@@ -773,6 +816,9 @@ app.whenReady().then(async () => {
}
createWindow();
await activeProjectContextReady;
appInitialized = true;
const startupDeepLinks = extractBlogmarkDeepLinks(process.argv);
for (const deepLink of startupDeepLinks) {
enqueueBlogmarkDeepLink(deepLink);