diff --git a/package-lock.json b/package-lock.json index 0e476020..96eeecf4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,18 @@ { "name": "thenewboston", - "version": "1.0.0-alpha.43", + "version": "1.0.0-alpha.44", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "thenewboston", - "version": "1.0.0-alpha.43", + "version": "1.0.0-alpha.44", "hasInstallScript": true, "license": "MIT", "dependencies": { "@thenewboston/ui": "^0.1.5", "@thenewboston/utils": "^1.0.0", + "app-root-path": "3.0.0", "axios": "^0.21.1", "bfj": "^7.0.2", "camelcase": "^6.1.0", @@ -22,6 +23,7 @@ "electron-squirrel-startup": "^1.0.0", "electron-store": "^5.2.0", "electron-updater": "^4.3.5", + "electron-window-state-manager": "^0.3.2", "formik": "^2.2.6", "fs-extra": "^9.0.1", "lodash-es": "^4.17.20", @@ -8727,6 +8729,14 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/appdmg": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/appdmg/-/appdmg-0.6.0.tgz", @@ -14035,6 +14045,20 @@ "semver": "^7.3.2" } }, + "node_modules/electron-window-state-manager": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/electron-window-state-manager/-/electron-window-state-manager-0.3.2.tgz", + "integrity": "sha1-pVLqNUcCl8mZx0TYGrsqjIpRdw4=", + "dependencies": { + "app-root-path": "^1.3.0", + "fs-jetpack": "^0.9.2" + } + }, + "node_modules/electron-window-state-manager/node_modules/app-root-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.4.0.tgz", + "integrity": "sha1-YzXYZclkDQ+tmQBOWnkjIjjpLfo=" + }, "node_modules/electron-winstaller": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-4.0.1.tgz", @@ -14214,17 +14238,17 @@ } }, "node_modules/elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, "node_modules/elliptic/node_modules/bn.js": { @@ -16506,6 +16530,39 @@ "node": ">=10" } }, + "node_modules/fs-jetpack": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.9.2.tgz", + "integrity": "sha1-k7QU29B4AYY9ZMgadq3APYUMm1Y=", + "dependencies": { + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "q": "^1.0.1", + "rimraf": "^2.2.8" + } + }, + "node_modules/fs-jetpack/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fs-jetpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -23777,14 +23834,14 @@ } }, "node_modules/plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "dependencies": { - "base64-js": "^1.2.3", + "base64-js": "^1.5.1", "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "xmldom": "^0.5.0" }, "engines": { "node": ">=6" @@ -27020,7 +27077,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true, "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -32728,12 +32784,12 @@ "dev": true }, "node_modules/xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", + "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", "dev": true, "engines": { - "node": ">=0.1" + "node": ">=10.0.0" } }, "node_modules/xtend": { @@ -40348,6 +40404,11 @@ } } }, + "app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" + }, "appdmg": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/appdmg/-/appdmg-0.6.0.tgz", @@ -44838,6 +44899,22 @@ "semver": "^7.3.2" } }, + "electron-window-state-manager": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/electron-window-state-manager/-/electron-window-state-manager-0.3.2.tgz", + "integrity": "sha1-pVLqNUcCl8mZx0TYGrsqjIpRdw4=", + "requires": { + "app-root-path": "^1.3.0", + "fs-jetpack": "^0.9.2" + }, + "dependencies": { + "app-root-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.4.0.tgz", + "integrity": "sha1-YzXYZclkDQ+tmQBOWnkjIjjpLfo=" + } + } + }, "electron-winstaller": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-4.0.1.tgz", @@ -44959,17 +45036,17 @@ } }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { @@ -46822,6 +46899,35 @@ "universalify": "^2.0.0" } }, + "fs-jetpack": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.9.2.tgz", + "integrity": "sha1-k7QU29B4AYY9ZMgadq3APYUMm1Y=", + "requires": { + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "q": "^1.0.1", + "rimraf": "^2.2.8" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -52733,14 +52839,14 @@ } }, "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", "dev": true, "requires": { - "base64-js": "^1.2.3", + "base64-js": "^1.5.1", "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "xmldom": "^0.5.0" } }, "pngjs": { @@ -55437,8 +55543,7 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "qrcode": { "version": "1.4.4", @@ -60226,9 +60331,9 @@ "dev": true }, "xmldom": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", - "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", + "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", "dev": true }, "xtend": { diff --git a/package.json b/package.json index 41c68103..798d6196 100644 --- a/package.json +++ b/package.json @@ -123,6 +123,7 @@ "dependencies": { "@thenewboston/ui": "^0.1.5", "@thenewboston/utils": "^1.0.0", + "app-root-path": "3.0.0", "axios": "^0.21.1", "bfj": "^7.0.2", "camelcase": "^6.1.0", @@ -133,6 +134,7 @@ "electron-squirrel-startup": "^1.0.0", "electron-store": "^5.2.0", "electron-updater": "^4.3.5", + "electron-window-state-manager": "^0.3.2", "formik": "^2.2.6", "fs-extra": "^9.0.1", "lodash-es": "^4.17.20", diff --git a/src/main/main.ts b/src/main/main.ts index 885c0f23..06a1c062 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -5,6 +5,7 @@ import contextMenu from 'electron-context-menu'; import installExtension, {REACT_DEVELOPER_TOOLS, REDUX_DEVTOOLS} from 'electron-devtools-installer'; import fs from 'fs'; import {getFailChannel, getSuccessChannel, IpcChannel} from '@shared/ipc'; +import WindowStateManager from 'electron-window-state-manager'; import menu from './menu'; declare const MAIN_WINDOW_WEBPACK_ENTRY: string; @@ -20,15 +21,31 @@ contextMenu({ let mainWindow: BrowserWindow; +const mainWindowState = new WindowStateManager('mainWindow', { + defaultHeight: 1080, + defaultWidth: 1920, +}); + const createWindow = (): void => { mainWindow = new BrowserWindow({ - height: 1080, + height: mainWindowState.height, webPreferences: { nodeIntegration: true, }, - width: 1920, + width: mainWindowState.width, + x: mainWindowState.x, + y: mainWindowState.y, }); + mainWindow.loadURL(MAIN_WINDOW_WEBPACK_ENTRY); + + if (mainWindowState.maximized) { + mainWindow.maximize(); + } + + mainWindow.on('close', () => { + mainWindowState.saveState(mainWindow); + }); }; // if gotTheLock is false, another instance of application is already running diff --git a/src/renderer/types/declarations/electron-window-state-manager.d.ts b/src/renderer/types/declarations/electron-window-state-manager.d.ts new file mode 100644 index 00000000..94f011ef --- /dev/null +++ b/src/renderer/types/declarations/electron-window-state-manager.d.ts @@ -0,0 +1 @@ +declare module 'electron-window-state-manager';