diff --git a/package-lock.json b/package-lock.json index 98ed156d..39ad67d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "oblivion-desktop", - "version": "0.23.14.2-beta", + "version": "0.23.13-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "oblivion-desktop", - "version": "0.23.14.2-beta", + "version": "0.23.13-beta", "hasInstallScript": true, "license": "Restrictive", "dependencies": { @@ -17,6 +17,7 @@ "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-settings": "^4.0.3", + "electron-updater": "^6.2.1", "lottie-react": "^2.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -4923,18 +4924,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/app-builder-lib/node_modules/builder-util-runtime": { - "version": "9.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", "dev": true, @@ -5058,7 +5047,6 @@ }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { @@ -5773,10 +5761,10 @@ "temp-file": "^3.4.0" } }, - "node_modules/builder-util/node_modules/builder-util-runtime": { + "node_modules/builder-util-runtime": { "version": "9.2.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz", + "integrity": "sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -7667,18 +7655,6 @@ "dmg-license": "^1.0.11" } }, - "node_modules/dmg-builder/node_modules/builder-util-runtime": { - "version": "9.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/dmg-builder/node_modules/fs-extra": { "version": "10.1.0", "dev": true, @@ -7947,18 +7923,6 @@ "node": ">=12" } }, - "node_modules/electron-builder/node_modules/builder-util-runtime": { - "version": "9.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", "dev": true, @@ -8044,18 +8008,6 @@ "mime": "^2.5.2" } }, - "node_modules/electron-publish/node_modules/builder-util-runtime": { - "version": "9.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", "dev": true, @@ -8096,6 +8048,34 @@ "dev": true, "license": "ISC" }, + "node_modules/electron-updater": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.2.1.tgz", + "integrity": "sha512-83eKIPW14qwZqUUM6wdsIRwVKZyjmHxQ4/8G+1C6iS5PdDt7b1umYQyj1/qPpH510GmHEQe4q0kCPe3qmb3a0Q==", + "dependencies": { + "builder-util-runtime": "9.2.4", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.8", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/electron/node_modules/@types/node": { "version": "18.19.36", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.36.tgz", @@ -12082,7 +12062,6 @@ }, "node_modules/js-yaml": { "version": "4.1.0", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -12189,7 +12168,6 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -12308,7 +12286,6 @@ }, "node_modules/lazy-val": { "version": "1.0.5", - "dev": true, "license": "MIT" }, "node_modules/lazystream": { @@ -12460,6 +12437,11 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, "node_modules/lodash.flatten": { "version": "4.4.0", "dev": true, @@ -12470,6 +12452,11 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "dev": true, @@ -15255,7 +15242,6 @@ }, "node_modules/sax": { "version": "1.2.4", - "dev": true, "license": "ISC" }, "node_modules/saxes": { @@ -15326,7 +15312,6 @@ }, "node_modules/semver": { "version": "7.5.4", - "devOptional": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -15345,7 +15330,6 @@ }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "devOptional": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -15356,7 +15340,6 @@ }, "node_modules/semver/node_modules/yallist": { "version": "4.0.0", - "devOptional": true, "license": "ISC" }, "node_modules/send": { @@ -16483,6 +16466,11 @@ "dev": true, "license": "MIT" }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, "node_modules/titleize": { "version": "3.0.0", "dev": true, @@ -17013,7 +17001,6 @@ }, "node_modules/universalify": { "version": "2.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" diff --git a/package.json b/package.json index dff39675..8720f152 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "url": "https://github.com/bepass-org/oblivion-desktop/issues", "email": "ircfspace@gmail.com" }, - "version": "0.23.13-beta", + "version": "0.23.8-beta", "license": "Restrictive", "main": "./src/main/main.ts", "scripts": { @@ -96,6 +96,7 @@ "electron-debug": "^3.2.0", "electron-log": "^4.4.8", "electron-settings": "^4.0.3", + "electron-updater": "^6.2.1", "lottie-react": "^2.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/release/app/package.json b/release/app/package.json index e99a5576..0f6f4359 100644 --- a/release/app/package.json +++ b/release/app/package.json @@ -1,7 +1,7 @@ { "name": "oblivion-desktop", "description": "unofficial desktop version of oblivion", - "version": "0.23.13-beta", + "version": "0.23.8-beta", "homepage": "https://github.com/bepass-org/oblivion-desktop#readme", "license": "Restrictive", "author": "ircfspace+kiomarzsss (https://ircf.space/)", diff --git a/src/main/main.ts b/src/main/main.ts index db3e8d80..e0dae426 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -19,12 +19,14 @@ import { Tray, nativeImage, IpcMainEvent, - globalShortcut + globalShortcut, + dialog } from 'electron'; import path from 'path'; import fs from 'fs'; import settings from 'electron-settings'; import log from 'electron-log'; +import { autoUpdater } from 'electron-updater'; import MenuBuilder from './menu'; import { exitTheApp, isDev } from './lib/utils'; import { openDevToolsByDefault, useCustomWindowXY } from './dxConfig'; @@ -48,6 +50,9 @@ export const binAssetsPath = path.join( ); export const regeditVbsDirPath = path.join(binAssetsPath, 'vbs'); +autoUpdater.allowPrerelease = true; +autoUpdater.autoRunAppAfterInstall = true; + if (!gotTheLock) { log.info('did not create new instance since there was already one running.'); app.exit(0); @@ -429,6 +434,61 @@ if (!gotTheLock) { ) ); }); + + autoUpdater.checkForUpdatesAndNotify(); + autoUpdater.on('update-available', () => { + dialog + .showMessageBox({ + type: 'info', + title: 'Update Available', + message: + 'A new version of the ' + + appTitle + + ' is available. Do you want to update now?', + buttons: ['Yes', 'No'] + }) + .then((result) => { + if (result.response === 0) { + autoUpdater.downloadUpdate(); + if (mainWindow) { + mainWindow.setProgressBar(100); + } + } + }); + }); + + autoUpdater.on('download-progress', (progressObj) => { + let logMessage: any = 'Download speed: ' + progressObj.bytesPerSecond; + logMessage = logMessage + ' - Downloaded ' + progressObj.percent + '%'; + logMessage = + logMessage + ' (' + progressObj.transferred + '/' + progressObj.total + ')'; + log.info(logMessage); + if (mainWindow) { + mainWindow.setProgressBar(Math.round(progressObj.percent) / 100); + } + }); + + autoUpdater.on('update-downloaded', () => { + if (mainWindow) { + mainWindow.setProgressBar(1); + } + dialog + .showMessageBox({ + type: 'info', + title: 'Update Ready', + message: + 'A new version of the ' + + appTitle + + ' is ready. It will be installed after a restart. Do you want to restart now?', + buttons: ['Yes', 'Later'] + }) + // eslint-disable-next-line promise/no-nesting + .then((result) => { + if (result.response === 0) { + autoUpdater.quitAndInstall(); + } + }); + }); }); // Remove this if your app does not use auto updates