mirror of
https://github.com/zadam/trilium.git
synced 2026-07-16 07:02:16 +02:00
chore(desktop): start implementing destkop preview
This commit is contained in:
@@ -13,7 +13,7 @@ import type LoadResults from "../services/load_results.js";
|
||||
import type { CreateNoteOpts } from "../services/note_create.js";
|
||||
import options from "../services/options.js";
|
||||
import toast from "../services/toast.js";
|
||||
import utils, { hasTouchBar } from "../services/utils.js";
|
||||
import utils, { dynamicRequire, hasTouchBar } from "../services/utils.js";
|
||||
import { ReactWrappedWidget } from "../widgets/basic_widget.js";
|
||||
import type RootContainer from "../widgets/containers/root_container.js";
|
||||
import { AddLinkOpts } from "../widgets/dialogs/add_link.jsx";
|
||||
@@ -641,6 +641,10 @@ export class AppContext extends Component {
|
||||
this.child(rootWidget as Component);
|
||||
|
||||
this.triggerEvent("initialRenderComplete", {});
|
||||
if (utils.isElectron()) {
|
||||
const { ipcRenderer } = dynamicRequire('electron');
|
||||
ipcRenderer.send("initial-render-complete");
|
||||
}
|
||||
}
|
||||
|
||||
triggerEvent<K extends EventNames>(name: K, data: EventData<K>) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import { useEffect, useRef, useState } from "preact/hooks";
|
||||
|
||||
import { t } from "../../services/i18n";
|
||||
import { cancelUploadWithPreview, executeUploadWithPreview } from "../../services/import";
|
||||
import { boolToString } from "../../services/utils";
|
||||
import { boolToString, dynamicRequire, isElectron } from "../../services/utils";
|
||||
import { Badge } from "../react/Badge";
|
||||
import Button from "../react/Button";
|
||||
import { Card } from "../react/Card";
|
||||
@@ -16,7 +16,7 @@ import Modal from "../react/Modal";
|
||||
import NoteAutocomplete from "../react/NoteAutocomplete";
|
||||
|
||||
export interface ImportPreviewData {
|
||||
parentNoteId: string;
|
||||
parentNoteId?: string;
|
||||
previews: ImportPreviewResponse[];
|
||||
}
|
||||
|
||||
@@ -105,6 +105,21 @@ export default function ImportPreviewDialog() {
|
||||
hasSubmittedRef.current = false;
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (!isElectron()) return;
|
||||
const { ipcRenderer } = dynamicRequire("electron");
|
||||
const onShow = (_event: any, data: ImportPreviewData) => {
|
||||
setData(data);
|
||||
setShown(true);
|
||||
setImportButtonTimeout(IMPORT_BUTTON_TIMEOUT);
|
||||
hasSubmittedRef.current = false;
|
||||
};
|
||||
ipcRenderer.on("show-import-preview-dialog", onShow);
|
||||
return () => {
|
||||
ipcRenderer.removeListener("show-import-preview-dialog", onShow);
|
||||
}
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
className="import-preview-dialog"
|
||||
|
||||
@@ -12,6 +12,8 @@ import { PRODUCT_NAME } from "./app-info";
|
||||
import port from "@triliumnext/server/src/services/port.js";
|
||||
import { join } from "path";
|
||||
import { deferred, LOCALES } from "../../../packages/commons/src";
|
||||
import previewZipForImport from "@triliumnext/server/src/services/import/zip_preview";
|
||||
import { ipcMain } from "electron/main";
|
||||
|
||||
async function main() {
|
||||
const userDataPath = getUserData();
|
||||
@@ -115,7 +117,8 @@ async function onReady() {
|
||||
if (sqlInit.isDbInitialized()) {
|
||||
await sqlInit.dbReady;
|
||||
|
||||
await windowService.createMainWindow(app);
|
||||
const mainWindow = await windowService.createMainWindow(app);
|
||||
handleImportArguments(process.argv, mainWindow);
|
||||
|
||||
if (process.platform === "darwin") {
|
||||
app.on("activate", async () => {
|
||||
@@ -133,6 +136,20 @@ async function onReady() {
|
||||
await windowService.registerGlobalShortcuts();
|
||||
}
|
||||
|
||||
async function handleImportArguments(args: string[], window: BrowserWindow) {
|
||||
const filesToImport = args.filter(arg => !arg.startsWith("-") && arg.endsWith(".trilium"));
|
||||
if (filesToImport.length === 0) return;
|
||||
|
||||
const previews = await Promise.all(filesToImport.map(file => previewZipForImport(file)));
|
||||
console.log("Sendimg import preview data to window", window);
|
||||
ipcMain.on("initial-render-complete", () => {
|
||||
console.log("READYYY!!!");
|
||||
window.webContents.send("show-import-preview-dialog", {
|
||||
previews
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getElectronLocale() {
|
||||
const uiLocale = options.getOptionOrNull("locale");
|
||||
const formattingLocale = options.getOptionOrNull("formattingLocale");
|
||||
|
||||
@@ -221,6 +221,7 @@ async function createMainWindow(app: App) {
|
||||
|
||||
configureWebContents(mainWindow.webContents, spellcheckEnabled);
|
||||
trackWindowFocus(mainWindow);
|
||||
return mainWindow;
|
||||
}
|
||||
|
||||
function getWindowExtraOpts() {
|
||||
|
||||
Reference in New Issue
Block a user