mirror of https://github.com/laurent22/joplin.git
86 lines
3.2 KiB
JavaScript
86 lines
3.2 KiB
JavaScript
// This is the initialization for the Electron RENDERER process
|
|
|
|
// Make it possible to require("/lib/...") without specifying full path
|
|
require("app-module-path").addPath(__dirname);
|
|
|
|
// Disable React message in console "Download the React DevTools for a better development experience"
|
|
// https://stackoverflow.com/questions/42196819/disable-hide-download-the-react-devtools#42196820
|
|
__REACT_DEVTOOLS_GLOBAL_HOOK__ = {
|
|
supportsFiber: true,
|
|
inject: function() {},
|
|
onCommitFiberRoot: function() {},
|
|
onCommitFiberUnmount: function() {},
|
|
};
|
|
|
|
const { app } = require("./app.js");
|
|
const Folder = require("lib/models/Folder.js");
|
|
const Resource = require("lib/models/Resource.js");
|
|
const BaseItem = require("lib/models/BaseItem.js");
|
|
const Note = require("lib/models/Note.js");
|
|
const Tag = require("lib/models/Tag.js");
|
|
const NoteTag = require("lib/models/NoteTag.js");
|
|
const MasterKey = require("lib/models/MasterKey");
|
|
const Setting = require("lib/models/Setting.js");
|
|
const { Logger } = require("lib/logger.js");
|
|
const { FsDriverNode } = require("lib/fs-driver-node.js");
|
|
const { shimInit } = require("lib/shim-init-node.js");
|
|
const EncryptionService = require("lib/services/EncryptionService");
|
|
const { bridge } = require("electron").remote.require("./bridge");
|
|
const { FileApiDriverLocal } = require("lib/file-api-driver-local.js");
|
|
|
|
const fsDriver = new FsDriverNode();
|
|
Logger.fsDriver_ = fsDriver;
|
|
Resource.fsDriver_ = fsDriver;
|
|
EncryptionService.fsDriver_ = fsDriver;
|
|
FileApiDriverLocal.fsDriver_ = fsDriver;
|
|
|
|
// That's not good, but it's to avoid circular dependency issues
|
|
// in the BaseItem class.
|
|
BaseItem.loadClass("Note", Note);
|
|
BaseItem.loadClass("Folder", Folder);
|
|
BaseItem.loadClass("Resource", Resource);
|
|
BaseItem.loadClass("Tag", Tag);
|
|
BaseItem.loadClass("NoteTag", NoteTag);
|
|
BaseItem.loadClass("MasterKey", MasterKey);
|
|
|
|
Setting.setConstant("appId", "net.cozic.joplin-desktop");
|
|
Setting.setConstant("appType", "desktop");
|
|
|
|
shimInit();
|
|
|
|
// Disable drag and drop of links inside application (which would
|
|
// open it as if the whole app was a browser)
|
|
document.addEventListener("dragover", event => event.preventDefault());
|
|
document.addEventListener("drop", event => event.preventDefault());
|
|
|
|
// Disable middle-click (which would open a new browser window, but we don't want this)
|
|
document.addEventListener("auxclick", event => event.preventDefault());
|
|
|
|
// Each link (rendered as a button or list item) has its own custom click event
|
|
// so disable the default. In particular this will disable Ctrl+Clicking a link
|
|
// which would open a new browser window.
|
|
document.addEventListener("click", event => event.preventDefault());
|
|
|
|
app()
|
|
.start(bridge().processArgv())
|
|
.then(() => {
|
|
require("./gui/Root.min.js");
|
|
})
|
|
.catch(error => {
|
|
if (error.code == "flagError") {
|
|
bridge().showErrorMessageBox(error.message);
|
|
} else {
|
|
// If something goes wrong at this stage we don't have a console or a log file
|
|
// so display the error in a message box.
|
|
let msg = ["Fatal error:", error.message];
|
|
if (error.fileName) msg.push(error.fileName);
|
|
if (error.lineNumber) msg.push(error.lineNumber);
|
|
if (error.stack) msg.push(error.stack);
|
|
bridge().showErrorMessageBox(msg.join("\n"));
|
|
}
|
|
|
|
bridge()
|
|
.electronApp()
|
|
.exit(1);
|
|
});
|