diff options
author | Phie <phie@phie.ovh> | 2022-02-06 02:27:44 +0300 |
---|---|---|
committer | Phie <phie@phie.ovh> | 2022-02-06 02:27:44 +0300 |
commit | e29afc5351e90310665ef78fbcfe1ab7ecbf2f48 (patch) | |
tree | abbfab1927d256f6fc093d53df5eb10f6d856e0d | |
parent | 73c97026a9551a405f243f59b6ca61cc90f6cc07 (diff) |
fixing many errors because of new dependencies + fix webdav sync
-rw-r--r-- | browsers/browser.js | 23 | ||||
-rw-r--r-- | compatibility/compatibility-browser.js | 4 | ||||
-rw-r--r-- | compatibility/compatibility-editor.js | 16 | ||||
-rw-r--r-- | compatibility/compatibility.js | 8 | ||||
-rw-r--r-- | compatibility/electron/request_builder.js | 4 | ||||
-rw-r--r-- | index.html | 2 | ||||
-rw-r--r-- | main.js | 19 | ||||
-rw-r--r-- | package.json | 3 | ||||
-rw-r--r-- | reader/reader.js | 10 | ||||
-rw-r--r-- | server/keywords/keywords_db_manager.js | 4 | ||||
-rw-r--r-- | server/recent/local_recent_db_manager.js | 6 | ||||
-rw-r--r-- | server/settings_helper.js | 22 | ||||
-rw-r--r-- | server/sync/sync.js | 16 | ||||
-rw-r--r-- | settings/webdav_dialog.js | 12 |
14 files changed, 99 insertions, 50 deletions
diff --git a/browsers/browser.js b/browsers/browser.js index 6bc9909..9968848 100644 --- a/browsers/browser.js +++ b/browsers/browser.js @@ -78,21 +78,26 @@ function onPrepared(error, data, notePath, action) { return; if (writerFrame.src == "") { - if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && navigator.userAgent.toLowerCase().indexOf("android") > -1) {//open in new tab for firefox android - window.open("writer?path=" + encodeURIComponent(notePath) + (action != undefined ? "&action=" + action : ""), "_blank"); - } - else { - writerFrame.src = data + (notePath != undefined ? ("?path=" + encodeURIComponent(notePath) + (action != undefined ? "&action=" + action : "")) : ""); if (notePath !== undefined) { $("#editor-container").show() $(loadingView).fadeIn(function () { writerFrame.style.display = "inline-flex" + if(compatibility.isElectron){ + writerFrame.addEventListener("dom-ready", () => { + const remote = require('@electron/remote'); + var main = remote.require("./main"); + main.enableEditorWebContent(document.getElementById("writer-webview").getWebContentsId()) + writerFrame.openDevTools() + writerFrame.send('remote_ready', undefined); + }) + } + writerFrame.src = data + (notePath != undefined ? ("?path=" + encodeURIComponent(notePath) + (action != undefined ? "&action=" + action : "")) : ""); + + + }) } - } - /*setTimeout(function () { - writerFrame.openDevTools() - }, 1000)*/ + } else { console.log("reuse old iframe"); diff --git a/compatibility/compatibility-browser.js b/compatibility/compatibility-browser.js index dd78e50..e41e2bf 100644 --- a/compatibility/compatibility-browser.js +++ b/compatibility/compatibility-browser.js @@ -36,9 +36,9 @@ class BrowserCompatibility extends Compatibility { } else { const { - remote, ipcRenderer } = require('electron'); + const remote = require('@electron/remote'); $('head').append("<style>\ @media screen and (min-width: 1400px) {\ #loading-view {\ @@ -61,7 +61,7 @@ class BrowserCompatibility extends Compatibility { syncButton.classList.remove("rotation") syncButton.disabled = false; }); - var main = remote.require("./main.js"); + var main = remote.require("./main"); if (main.isSyncing()) { syncButton.classList.add("rotation") syncButton.disabled = true; diff --git a/compatibility/compatibility-editor.js b/compatibility/compatibility-editor.js index 41c2699..011eeef 100644 --- a/compatibility/compatibility-editor.js +++ b/compatibility/compatibility-editor.js @@ -65,6 +65,16 @@ class CompatibilityEditor extends Compatibility { } } } - -var compatibility = new CompatibilityEditor(); -var isElectron = compatibility.isElectron;
\ No newline at end of file +var isElectron = typeof require === "function" || typeof parent.require === "function"; +if(!isElectron){ + $(document).ready(function(){ + init() + }) +} +else{ + console.log("isDefinitivetyelectron") + var ipcRenderer = require('electron').ipcRenderer; + ipcRenderer.on('remote_ready', function (event, path) { + init() + }); +}
\ No newline at end of file diff --git a/compatibility/compatibility.js b/compatibility/compatibility.js index d5f0088..6df9fa6 100644 --- a/compatibility/compatibility.js +++ b/compatibility/compatibility.js @@ -66,9 +66,8 @@ class Compatibility { } openElectronSyncDialog() { - var { - remote - } = require('electron'); + const remote = require('@electron/remote'); + const BrowserWindow = remote.BrowserWindow; var win = new BrowserWindow({ @@ -90,6 +89,9 @@ class Compatibility { slashes: true })) win.setMenu(null) + win.webContents.openDevTools() + var main = remote.require("./main"); + main.enableEditorWebContent(win.webContents.id) } sendNextLargeDownload() { diff --git a/compatibility/electron/request_builder.js b/compatibility/electron/request_builder.js index b3ba4da..6e51693 100644 --- a/compatibility/electron/request_builder.js +++ b/compatibility/electron/request_builder.js @@ -1,8 +1,8 @@ class ElectronRequestBuilder extends RequestBuilder { constructor() { super("./"); - var remote = compatRequire('electron').remote; - this.main = remote.require("./main.js"); + var remote = require('@electron/remote'); + this.main = remote.require("./main"); } get(path, callback) { var requestId = Utils.generateUID() @@ -247,7 +247,7 @@ </div> <div id="editor-container"> - <webview class="editor" id="writer-webview" nodeintegration webpreferences="contextIsolation=false"> </webview> + <webview class="editor" id="writer-webview" nodeintegration enableremotemodule webpreferences="contextIsolation=false,enableRemoteModule=true"> </webview> <iframe class="editor" id="writer-iframe" allowfullscreen></iframe> <div id="loading-view"> <button class="mdl-button mdl-js-button" id="cancel-load-button" data-i18n="cancel">Cancel</button> @@ -1,11 +1,13 @@ const { app, BrowserWindow, - ipcMain + ipcMain, + webContents } = require('electron'); const path = require('path') const url = require('url') - +// In the main process: +require('@electron/remote/main').initialize() const Store = require('electron-store'); const store = new Store(); var SettingsHelper = require("./server/settings_helper").SettingsHelper; @@ -75,9 +77,7 @@ function createWindow() { webPreferences: { nodeIntegration: true, webviewTag: true, - enableRemoteModule: true, contextIsolation: false, - enableRemoteModule: true } }) @@ -90,9 +90,9 @@ function createWindow() { protocol: 'file:', slashes: true }) + '?api_url=' + server.carnetHttpServer.getAddress()) - + require("@electron/remote/main").enable(win.webContents); // Open the DevTools. - //win.webContents.openDevTools() + win.webContents.openDevTools() console.log("app uid " + uid) // Emitted when the window is closed. @@ -180,6 +180,13 @@ exports.displayMainWindow = (size, pos) => { win.show(); } +exports.enableEditorWebContent = (webContentsId) => { + console.log("calling enableEditorWebContent "+webContentsId) + require("@electron/remote/main").enable(webContents.fromId(webContentsId)); + console.log("called enableEditorWebContent"+webContents.fromId(webContentsId)) + +} + exports.hideMainWindow = () => { win.hide(); diff --git a/package.json b/package.json index 8340bc7..cdbd5d8 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ } }, "dependencies": { + "@electron/remote": "^2.0.4", "archiver": "^5.3.0", "desandro-matches-selector": "^2.0.2", "electron-store": "^8.0.1", @@ -89,7 +90,7 @@ "qs": "^6.10.2", "rimraf": "^3.0.2", "textversionjs": "^1.1.3", - "webdav": "^4.7.0" + "webdav": "^4.8.0" }, "devDependencies": { "@babel/cli": "^7.16.7", diff --git a/reader/reader.js b/reader/reader.js index 54980c9..dd76af8 100644 --- a/reader/reader.js +++ b/reader/reader.js @@ -1647,8 +1647,12 @@ if (loaded == undefined) var loaded = false; //don't know why, loaded twice on android var writer = undefined; - -$(document).ready(function () { +var isElectron = false; +var compatibility = undefined; +function init () { + compatibility = new CompatibilityEditor(); + isElectron = compatibility.isElectron; + console.log("isElectron "+isElectron) rootpath = document.getElementById("root-url").innerHTML.trim(); api_url = document.getElementById("api-url").innerHTML.trim(); @@ -1695,7 +1699,7 @@ $(document).ready(function () { }) $.i18n().locale = navigator.language; -}); +} $(window).on('touchstart', function (e) { if ($(e.target).closest('.block-scroll').length >= 1) { writer.oCenter.style.overflowY = "hidden"; diff --git a/server/keywords/keywords_db_manager.js b/server/keywords/keywords_db_manager.js index a79a67a..25e494a 100644 --- a/server/keywords/keywords_db_manager.js +++ b/server/keywords/keywords_db_manager.js @@ -100,7 +100,7 @@ KeywordsDBManager.prototype.mergeDB = function (path, callback) { } if (hasChanged) { dataJson["data"].sort(keysrt('time')) - require("mkdirp")(getParentFolderFromPath(db.path), function () { + require("mkdirp")(getParentFolderFromPath(db.path)).then(made => { lockFile.lock('recent.lock', { wait: 10000 }, function (er) { @@ -135,7 +135,7 @@ KeywordsDBManager.prototype.actionArray = function (items, callback) { }; fullDB["data"].push(item); } - require("mkdirp")(getParentFolderFromPath(db.path), function () { + require("mkdirp")(getParentFolderFromPath(db.path)).then(made => { // opts is optional, and defaults to {} console.logDebug("writing") diff --git a/server/recent/local_recent_db_manager.js b/server/recent/local_recent_db_manager.js index 5205b89..8e88891 100644 --- a/server/recent/local_recent_db_manager.js +++ b/server/recent/local_recent_db_manager.js @@ -32,7 +32,7 @@ LocalRecentDBManager.prototype.actionArray = function (items, callback) { }; fullDB["data"].push(item); } - require("mkdirp")(getParentFolderFromPath(db.path), function () { + require("mkdirp")(getParentFolderFromPath(db.path)).then(made => { // opts is optional, and defaults to {} console.logDebug("writing") @@ -74,7 +74,7 @@ LocalRecentDBManager.prototype.action = function (path, action, time, callback) fullDB["data"].push(item); console.logDebug(JSON.stringify(item)) - require("mkdirp")(getParentFolderFromPath(db.path), function () { + require("mkdirp")(getParentFolderFromPath(db.path)).then(made => { // opts is optional, and defaults to {} console.logDebug("writing") @@ -134,7 +134,7 @@ LocalRecentDBManager.prototype.mergeDB = function (path, callback) { } dataJson["data"] = dataJson["data"].sort(keysrt('time')) if (hasChanged) { - require("mkdirp")(getParentFolderFromPath(db.path), function () { + require("mkdirp")(getParentFolderFromPath(db.path)).then(made => { // opts is optional, and defaults to {} lockFile.lock('recent.lock', { wait: 10000 diff --git a/server/settings_helper.js b/server/settings_helper.js index 8989614..dc715f8 100644 --- a/server/settings_helper.js +++ b/server/settings_helper.js @@ -78,21 +78,31 @@ SettingsHelper.prototype.getRemoteWebdavPath = function () { SettingsHelper.prototype.setRemoteWebdavPath = function (path) { - - return store.set("remote_webdav_path", path) + if(path == undefined) + store.delete("remote_webdav_path") + else + return store.set("remote_webdav_path", path) } SettingsHelper.prototype.setRemoteWebdavAddr = function (addr) { - - return store.set("remote_webdav_addr", addr) + if(addr == undefined) + store.delete("remote_webdav_addr") + else + return store.set("remote_webdav_addr", addr) } SettingsHelper.prototype.setRemoteWebdavUsername = function (username) { - return store.set("remote_webdav_username", username) + if(username == undefined) + store.delete("remote_webdav_username") + else + return store.set("remote_webdav_username", username) } SettingsHelper.prototype.setRemoteWebdavPassword = function (password) { - return store.set("remote_webdav_password", password) + if(password == undefined) + store.delete("remote_webdav_password") + else + return store.set("remote_webdav_password", password) } SettingsHelper.prototype.displayFrame = function () { diff --git a/server/sync/sync.js b/server/sync/sync.js index bd016ad..9ec7b43 100644 --- a/server/sync/sync.js +++ b/server/sync/sync.js @@ -16,15 +16,21 @@ var Sync = function (onSyncStart, onSyncEnd) { } Sync.prototype.connect = function () { - var createClient = require("webdav"); + const { AuthType, createClient } = require("webdav"); + var sync = this; console.logDebug("connecting with " + sync.settingsHelper.getRemoteWebdavUsername()) - + const username = sync.settingsHelper.getRemoteWebdavUsername() + const password = sync.settingsHelper.getRemoteWebdavPassword() this.client = createClient( sync.settingsHelper.getRemoteWebdavAddr(), - sync.settingsHelper.getRemoteWebdavUsername(), - sync.settingsHelper.getRemoteWebdavPassword() - ); + { + username, + password + } + + ) + } diff --git a/settings/webdav_dialog.js b/settings/webdav_dialog.js index 272f2b6..e888393 100644 --- a/settings/webdav_dialog.js +++ b/settings/webdav_dialog.js @@ -50,11 +50,15 @@ function getWebdavAddress() { function connect() { if (!(document.getElementById("address").value == "" || document.getElementById("username").value == "" || document.getElementById("password").value == "")) { document.getElementById("loading-view").style.display = "block" - var createClient = require("webdav"); + const { AuthType, createClient } = require("webdav"); this.client = createClient( getWebdavAddress(), - document.getElementById("username").value, - document.getElementById("password").value + { + authType: AuthType.Password, + username: document.getElementById("username").value, + password: document.getElementById("password").value + } + ).getDirectoryContents("/") .then(function (contents) { document.getElementById("loading-view").style.display = "none" @@ -67,7 +71,7 @@ function connect() { var SyncDBManager = require("../server/sync/sync_db_manager").SyncDBManager SyncDBManager.getInstance().reset() - const remote = require('electron').remote; + const remote = require('@electron/remote'); const window = remote.getCurrentWindow(); window.close(); }).catch(function (e) { |