From 3303fd1ee92571f6262c8322e7f8cb093eb36ab1 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 14:51:43 +0200 Subject: [PATCH 01/17] removed obsolete code --- app/src/electron.js | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index 31b2fe062..921ce7937 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -18,7 +18,6 @@ const url = require('url'); const mainMenuDefinition = require('./mainMenuDefinition'); const { isProApp } = require('./proTools'); const updaterChannel = require('./updaterChannel'); -let disableAutoUpgrade = false; // require('@electron/remote/main').initialize(); @@ -52,21 +51,11 @@ const isMac = () => os.platform() == 'darwin'; try { initialConfig = JSON.parse(fs.readFileSync(configRootPath, { encoding: 'utf-8' })); - disableAutoUpgrade = initialConfig['disableAutoUpgrade'] || false; } catch (err) { console.log('Error loading config-root:', err.message); initialConfig = {}; } -if (process.argv.includes('--disable-auto-upgrade')) { - console.log('Disabling auto-upgrade'); - disableAutoUpgrade = true; -} -if (process.argv.includes('--enable-auto-upgrade')) { - console.log('Enabling auto-upgrade'); - disableAutoUpgrade = false; -} - // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let mainWindow; @@ -323,7 +312,6 @@ function createWindow() { const datadir = path.join(os.homedir(), '.dbgate'); let settingsJson = {}; - let licenseKey = null; try { settingsJson = fillMissingSettings( JSON.parse(fs.readFileSync(path.join(datadir, 'settings.json'), { encoding: 'utf-8' })) @@ -332,14 +320,6 @@ function createWindow() { console.log('Error loading settings.json:', err.message); settingsJson = fillMissingSettings({}); } - if (isProApp()) { - try { - licenseKey = fs.readFileSync(path.join(datadir, 'license.key'), { encoding: 'utf-8' }); - } catch (err) { - console.log('Error loading license.key:', err.message); - licenseKey = null; - } - } let bounds = initialConfig['winBounds']; if (bounds) { @@ -389,7 +369,6 @@ function createWindow() { JSON.stringify({ winBounds: mainWindow.getBounds(), winIsMaximized: mainWindow.isMaximized(), - disableAutoUpgrade, }), 'utf-8' ); @@ -460,11 +439,9 @@ function createWindow() { } function onAppReady() { - if (disableAutoUpgrade) { - console.log('Auto-upgrade is disabled, run dbgate --enable-auto-upgrade to enable'); - } - if (!process.env.DEVMODE && !disableAutoUpgrade) { - autoUpdater.checkForUpdatesAndNotify(); + if (!process.env.DEVMODE) { + autoUpdater.autoDownload = false; + autoUpdater.checkForUpdates(); } createWindow(); } From 703a4bdb57d7aa13f597907c74eb5919932d5d2a Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 15:44:34 +0200 Subject: [PATCH 02/17] checking for update --- app/src/electron.js | 47 +++++++++++++++++++++- app/src/mainMenuDefinition.js | 2 + packages/web/src/App.svelte | 2 + packages/web/src/commands/stdCommands.ts | 12 ++++++ packages/web/src/stores.ts | 8 ++++ packages/web/src/utility/appUpdate.ts | 48 +++++++++++++++++++++++ packages/web/src/widgets/StatusBar.svelte | 7 ++++ 7 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 packages/web/src/utility/appUpdate.ts diff --git a/app/src/electron.js b/app/src/electron.js index 921ce7937..e41571049 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -28,6 +28,7 @@ let apiLoaded = false; let mainModule; // let getLogger; // let loadLogsContent; +let appUpdateStatus = ''; process.on('uncaughtException', function (error) { console.error('uncaughtException', error); @@ -201,6 +202,9 @@ ipcMain.on('app-started', async (event, arg) => { if (initialConfig['winIsMaximized']) { mainWindow.webContents.send('setIsMaximized', true); } + if (autoUpdater.isUpdaterActive()) { + mainWindow.webContents.send('setAppUpdaterActive'); + } }); ipcMain.on('window-action', async (event, arg) => { if (!mainWindow) { @@ -274,6 +278,15 @@ ipcMain.handle('showItemInFolder', async (event, path) => { ipcMain.handle('openExternal', async (event, url) => { electron.shell.openExternal(url); }); +ipcMain.handle('downloadUpdate', async (event, url) => { + autoUpdater.downloadUpdate(); +}); +ipcMain.on('applyUpdate', async (event, url) => { + autoUpdater.quitAndInstall(false, true); +}); +ipcMain.on('check-for-updates', async (event, url) => { + autoUpdater.checkForUpdates(); +}); function fillMissingSettings(value) { const res = { @@ -335,7 +348,7 @@ function createWindow() { titleBarStyle: useNativeMenu ? undefined : 'hidden', ...bounds, icon: os.platform() == 'win32' ? 'icon.ico' : path.resolve(__dirname, '../icon.png'), - partition: 'persist:dbgate', + partition: isProApp() ? 'persist:dbgate-premium' : 'persist:dbgate', webPreferences: { nodeIntegration: true, contextIsolation: false, @@ -438,6 +451,38 @@ function createWindow() { }); } +function changeAppUpdateStatus(message) { + appUpdateStatus = message; + mainWindow.webContents.send('app-update-status', appUpdateStatus); +} + +autoUpdater.on('checking-for-update', () => { + console.log('Checking for updates'); + changeAppUpdateStatus('Checking for updates...'); +}); + +autoUpdater.on('update-available', info => { + console.log('Update available', info); + changeAppUpdateStatus(`New version ${info.version} available`); + mainWindow.webContents.send('update-available', info.version); +}); + +autoUpdater.on('update-not-available', info => { + console.log('Update not available', info); + changeAppUpdateStatus(`No new updates`); +}); + +autoUpdater.on('update-downloaded', info => { + console.log('Update downloaded from', info); + changeAppUpdateStatus(`Downloaded new version ${info.version}`); + mainWindow.webContents.send('downloaded-new-version', info.version); +}); + +autoUpdater.on('error', error => { + changeAppUpdateStatus(`Autoupdate error`); + console.error('Update error', error); +}); + function onAppReady() { if (!process.env.DEVMODE) { autoUpdater.autoDownload = false; diff --git a/app/src/mainMenuDefinition.js b/app/src/mainMenuDefinition.js index 5d5cd1188..40cc485dc 100644 --- a/app/src/mainMenuDefinition.js +++ b/app/src/mainMenuDefinition.js @@ -105,6 +105,8 @@ module.exports = ({ editMenu }) => [ { command: 'settings.commands', hideDisabled: true }, { command: 'tabs.changelog', hideDisabled: true }, { command: 'about.show', hideDisabled: true }, + { divider: true }, + { command: 'file.checkForUpdates', hideDisabled: true }, ], }, ]; diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 0c0c8c08b..4669f628a 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -21,6 +21,7 @@ import AppStartInfo from './widgets/AppStartInfo.svelte'; import SettingsListener from './utility/SettingsListener.svelte'; import { handleAuthOnStartup } from './clientAuth'; + import { initializeAppUpdates } from './utility/appUpdate'; export let isAdminPage = false; @@ -49,6 +50,7 @@ subscribeConnectionPingers(); subscribePermissionCompiler(); installNewVolatileConnectionListener(); + initializeAppUpdates(); } loadedApi = loadedApiValue; diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index d1b23a4dd..34f2f7bef 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -3,6 +3,7 @@ import { currentTheme, emptyConnectionGroupNames, extensions, + getAppUpdaterActive, getExtensions, getVisibleToolbar, visibleToolbar, @@ -585,6 +586,17 @@ registerCommand({ onClick: () => disconnectServerConnection(getCurrentConfig()?.singleConnection?._id), }); +registerCommand({ + id: 'file.checkForUpdates', + category: 'App', + name: 'Check for updates', + // testEnabled: () => true, + testEnabled: () => getAppUpdaterActive(), + onClick: () => getElectron().send('check-for-updates'), +}); + + + export function registerFileCommands({ idPrefix, category, diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index b275d216d..27e3d6fe4 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -123,6 +123,8 @@ export const commandsCustomized = derived([commands, commandsSettings], ([$comma ...$commandsSettings[k], })) ); +export const appUpdateStatus = writable(''); +export const appUpdaterActive = writable(false); export const draggingTab = writable(null); export const draggingTabTarget = writable(null); @@ -303,3 +305,9 @@ currentArchive.subscribe(value => { currentArchiveValue = value; }); export const getCurrentArchive = () => currentArchiveValue; + +let appUpdaterActiveValue = false; +appUpdaterActive.subscribe(value => { + appUpdaterActiveValue = value; +}); +export const getAppUpdaterActive = () => appUpdaterActiveValue; \ No newline at end of file diff --git a/packages/web/src/utility/appUpdate.ts b/packages/web/src/utility/appUpdate.ts new file mode 100644 index 000000000..3e0083139 --- /dev/null +++ b/packages/web/src/utility/appUpdate.ts @@ -0,0 +1,48 @@ +import { appUpdaterActive, appUpdateStatus } from '../stores'; +import getElectron from './getElectron'; +import { showSnackbar } from './snackbar'; + +export function initializeAppUpdates() { + const electron = getElectron(); + if (!electron) { + return; + } + + electron.addEventListener('update-available', (e, version) => { + showSnackbar({ + message: `Update available: ${version}`, + allowClose: true, + buttons: [ + { + label: 'Download', + onClick: () => { + electron.send('downloadUpdate'); + }, + }, + ], + }); + }); + + electron.addEventListener('app-update-status', (e, text) => { + appUpdateStatus.set(text); + }); + + electron.addEventListener('downloaded-new-version', (e, version) => { + showSnackbar({ + message: `New version ${version} downloaded`, + allowClose: true, + buttons: [ + { + label: 'Restart', + onClick: () => { + electron.send('applyUpdate'); + }, + }, + ], + }); + }); + + electron.addEventListener('setAppUpdaterActive', (e, error) => { + appUpdaterActive.set(true); + }); +} diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte index 338854879..4cd8ddaae 100644 --- a/packages/web/src/widgets/StatusBar.svelte +++ b/packages/web/src/widgets/StatusBar.svelte @@ -8,6 +8,7 @@ import { activeTabId, + appUpdateStatus, currentArchive, currentDatabase, currentThemeDefinition, @@ -169,6 +170,12 @@ {item.text} {/each} + + {#if $appUpdateStatus} +
+ {$appUpdateStatus} +
+ {/if} From 1fcaf08644674d9f6fe22f52875b8b5efb9c84e7 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 15:51:41 +0200 Subject: [PATCH 03/17] auto close snackbar --- packages/web/src/utility/appUpdate.ts | 2 ++ packages/web/src/utility/snackbar.ts | 1 + packages/web/src/widgets/Snackbar.svelte | 12 +++++++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/web/src/utility/appUpdate.ts b/packages/web/src/utility/appUpdate.ts index 3e0083139..60a2e1784 100644 --- a/packages/web/src/utility/appUpdate.ts +++ b/packages/web/src/utility/appUpdate.ts @@ -18,6 +18,7 @@ export function initializeAppUpdates() { onClick: () => { electron.send('downloadUpdate'); }, + autoClose: true, }, ], }); @@ -37,6 +38,7 @@ export function initializeAppUpdates() { onClick: () => { electron.send('applyUpdate'); }, + autoClose: true, }, ], }); diff --git a/packages/web/src/utility/snackbar.ts b/packages/web/src/utility/snackbar.ts index 45009b52a..4214a109c 100644 --- a/packages/web/src/utility/snackbar.ts +++ b/packages/web/src/utility/snackbar.ts @@ -3,6 +3,7 @@ import { openedSnackbars } from '../stores'; export interface SnackbarButton { label: string; onClick: Function; + autoClose?: boolean; } export interface SnackbarInfo { diff --git a/packages/web/src/widgets/Snackbar.svelte b/packages/web/src/widgets/Snackbar.svelte index 51f7e003d..61bc6f522 100644 --- a/packages/web/src/widgets/Snackbar.svelte +++ b/packages/web/src/widgets/Snackbar.svelte @@ -18,7 +18,6 @@ onMount(() => { if (autoClose) setTimeout(handleClose, 3000); }); -
@@ -37,7 +36,15 @@
{#each buttons as button}
- + { + if (button.autoClose) { + handleClose(); + } + button.onClick?.(); + }} + />
{/each}
@@ -76,5 +83,4 @@ .button { margin: 5px; } - From db1d4aa5559b4ff56af92ebc468b20d245b67b06 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 15:52:08 +0200 Subject: [PATCH 04/17] v5.4.4-beta.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3baf284ba..dbf843929 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.4.4-premium-beta.5", + "version": "5.4.4-beta.6", "name": "dbgate-all", "workspaces": [ "packages/*", From 2db3f14509ce01642025de027188aa8fe64a32f7 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:03:49 +0200 Subject: [PATCH 05/17] configurable auto-update mode --- app/src/electron.js | 9 ++++++--- packages/web/src/settings/SettingsModal.svelte | 12 ++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index e41571049..08702e6e9 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -29,6 +29,7 @@ let mainModule; // let getLogger; // let loadLogsContent; let appUpdateStatus = ''; +let settingsJson = {}; process.on('uncaughtException', function (error) { console.error('uncaughtException', error); @@ -285,6 +286,7 @@ ipcMain.on('applyUpdate', async (event, url) => { autoUpdater.quitAndInstall(false, true); }); ipcMain.on('check-for-updates', async (event, url) => { + autoUpdater.autoDownload = false; autoUpdater.checkForUpdates(); }); @@ -324,7 +326,6 @@ function ensureBoundsVisible(bounds) { function createWindow() { const datadir = path.join(os.homedir(), '.dbgate'); - let settingsJson = {}; try { settingsJson = fillMissingSettings( JSON.parse(fs.readFileSync(path.join(datadir, 'settings.json'), { encoding: 'utf-8' })) @@ -485,8 +486,10 @@ autoUpdater.on('error', error => { function onAppReady() { if (!process.env.DEVMODE) { - autoUpdater.autoDownload = false; - autoUpdater.checkForUpdates(); + if (settingsJson['app.autoUpdateMode'] != 'skip') { + autoUpdater.autoDownload = settingsJson['app.autoUpdateMode'] == 'download'; + autoUpdater.checkForUpdates(); + } } createWindow(); } diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte index 5f384e00e..6b36c9421 100644 --- a/packages/web/src/settings/SettingsModal.svelte +++ b/packages/web/src/settings/SettingsModal.svelte @@ -342,6 +342,18 @@ ORDER BY
Other
+ + From 11e8cff77edce7e1c00f93740123f36f64d72e92 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:04:04 +0200 Subject: [PATCH 06/17] v5.4.4-beta.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dbf843929..41386b066 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.4.4-beta.6", + "version": "5.4.4-beta.7", "name": "dbgate-all", "workspaces": [ "packages/*", From 0ea84fe03436948054b6f92595ec0fc0ebcf83e0 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:16:47 +0200 Subject: [PATCH 07/17] checking for updates moved into app-ready --- app/src/electron.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index 08702e6e9..2919b1c21 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -206,6 +206,12 @@ ipcMain.on('app-started', async (event, arg) => { if (autoUpdater.isUpdaterActive()) { mainWindow.webContents.send('setAppUpdaterActive'); } + if (!process.env.DEVMODE) { + if (settingsJson['app.autoUpdateMode'] != 'skip') { + autoUpdater.autoDownload = settingsJson['app.autoUpdateMode'] == 'download'; + autoUpdater.checkForUpdates(); + } + } }); ipcMain.on('window-action', async (event, arg) => { if (!mainWindow) { @@ -485,12 +491,6 @@ autoUpdater.on('error', error => { }); function onAppReady() { - if (!process.env.DEVMODE) { - if (settingsJson['app.autoUpdateMode'] != 'skip') { - autoUpdater.autoDownload = settingsJson['app.autoUpdateMode'] == 'download'; - autoUpdater.checkForUpdates(); - } - } createWindow(); } From f5f653965f8c052926a10bbaa59f1d7e918ee596 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:21:50 +0200 Subject: [PATCH 08/17] copy blockmap --- .github/workflows/build-app-beta.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-app-beta.yaml b/.github/workflows/build-app-beta.yaml index f04798524..c516c9475 100644 --- a/.github/workflows/build-app-beta.yaml +++ b/.github/workflows/build-app-beta.yaml @@ -102,6 +102,7 @@ jobs: mv app/dist/*.deb artifacts/ || true mv app/dist/*.snap artifacts/ || true mv app/dist/*.dmg artifacts/ || true + mv app/dist/*.blockmap artifacts/ || true mv app/dist/*.yml artifacts/ || true rm artifacts/builder-debug.yml From a78c375b90380e39b512ebfd65185b74e46aaf76 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:22:48 +0200 Subject: [PATCH 09/17] v5.4.4-beta.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 41386b066..7e1925b79 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.4.4-beta.7", + "version": "5.4.4-beta.8", "name": "dbgate-all", "workspaces": [ "packages/*", From 628d8eb5dca1b3c93d115404ef297e6de558a434 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:33:47 +0200 Subject: [PATCH 10/17] fix --- app/src/electron.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/electron.js b/app/src/electron.js index 2919b1c21..d158c54c4 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -471,7 +471,9 @@ autoUpdater.on('checking-for-update', () => { autoUpdater.on('update-available', info => { console.log('Update available', info); changeAppUpdateStatus(`New version ${info.version} available`); - mainWindow.webContents.send('update-available', info.version); + if (!autoUpdater.autoDownload) { + mainWindow.webContents.send('update-available', info.version); + } }); autoUpdater.on('update-not-available', info => { From fdb5fdfadd81541012876fd7bc112a8120a66b95 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:54:11 +0200 Subject: [PATCH 11/17] fix --- packages/web/src/utility/appUpdate.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/web/src/utility/appUpdate.ts b/packages/web/src/utility/appUpdate.ts index 60a2e1784..a5ad236f9 100644 --- a/packages/web/src/utility/appUpdate.ts +++ b/packages/web/src/utility/appUpdate.ts @@ -1,3 +1,4 @@ +import invalidateCommands from '../commands/invalidateCommands'; import { appUpdaterActive, appUpdateStatus } from '../stores'; import getElectron from './getElectron'; import { showSnackbar } from './snackbar'; @@ -46,5 +47,6 @@ export function initializeAppUpdates() { electron.addEventListener('setAppUpdaterActive', (e, error) => { appUpdaterActive.set(true); + invalidateCommands(); }); } From 5b010bcc53c6dd85ed054778e1d6e7d3c94e820a Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:58:11 +0200 Subject: [PATCH 12/17] fix --- packages/api/src/utility/checkLicense.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/api/src/utility/checkLicense.js b/packages/api/src/utility/checkLicense.js index b43b3c1f7..a21a66c40 100644 --- a/packages/api/src/utility/checkLicense.js +++ b/packages/api/src/utility/checkLicense.js @@ -5,6 +5,14 @@ function checkLicense() { }; } +function checkLicenseKey(key) { + return { + status: 'ok', + type: 'community', + }; +} + module.exports = { checkLicense, + checkLicenseKey, }; From ba665931dd8813c26c0866b2574b61d2e784292f Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 16:58:47 +0200 Subject: [PATCH 13/17] v5.4.4-beta.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7e1925b79..9cbe15d62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.4.4-beta.8", + "version": "5.4.4-beta.9", "name": "dbgate-all", "workspaces": [ "packages/*", From 6e6699f60a19e3a6744495bfef0f1a63d1176e3e Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Mon, 9 Sep 2024 17:00:21 +0200 Subject: [PATCH 14/17] copy blockmap --- .github/workflows/build-app-pro-beta.yaml | 1 + .github/workflows/build-app-pro.yaml | 1 + .github/workflows/build-app.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/build-app-pro-beta.yaml b/.github/workflows/build-app-pro-beta.yaml index b1d9ec240..184a44d8c 100644 --- a/.github/workflows/build-app-pro-beta.yaml +++ b/.github/workflows/build-app-pro-beta.yaml @@ -132,6 +132,7 @@ jobs: mv ../dbgate-merged/app/dist/*.deb artifacts/ || true mv ../dbgate-merged/app/dist/*.snap artifacts/ || true mv ../dbgate-merged/app/dist/*.dmg artifacts/ || true + mv ../dbgate-merged/app/dist/*.blockmap artifacts/ || true mv ../dbgate-merged/app/dist/*.yml artifacts/ || true rm artifacts/builder-debug.yml diff --git a/.github/workflows/build-app-pro.yaml b/.github/workflows/build-app-pro.yaml index d893bc401..fc2e15532 100644 --- a/.github/workflows/build-app-pro.yaml +++ b/.github/workflows/build-app-pro.yaml @@ -135,6 +135,7 @@ jobs: mv ../dbgate-merged/app/dist/*.AppImage artifacts/ || true mv ../dbgate-merged/app/dist/*.deb artifacts/ || true mv ../dbgate-merged/app/dist/*.dmg artifacts/ || true + mv ../dbgate-merged/app/dist/*.blockmap artifacts/ || true mv ../dbgate-merged/app/dist/*.yml artifacts/ || true rm artifacts/builder-debug.yml diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 87f6734c8..ed5ada489 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -109,6 +109,7 @@ jobs: mv app/dist/*.deb artifacts/ || true mv app/dist/*.dmg artifacts/ || true mv app/dist/*.snap artifacts/dbgate-latest.snap || true + mv app/dist/*.blockmap artifacts/ || true mv app/dist/*.yml artifacts/ || true rm artifacts/builder-debug.yml From 818f4eaa104affbc3ef55ccde379b91977938fa6 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Tue, 10 Sep 2024 08:34:14 +0200 Subject: [PATCH 15/17] update status with icon --- app/src/electron.js | 29 +++++++++++++++++------ packages/web/src/icons/FontIcon.svelte | 1 + packages/web/src/stores.ts | 4 ++-- packages/web/src/utility/appUpdate.ts | 4 ++-- packages/web/src/widgets/StatusBar.svelte | 3 ++- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index d158c54c4..2849b25ef 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -458,19 +458,25 @@ function createWindow() { }); } -function changeAppUpdateStatus(message) { - appUpdateStatus = message; +function changeAppUpdateStatus(status) { + appUpdateStatus = status; mainWindow.webContents.send('app-update-status', appUpdateStatus); } autoUpdater.on('checking-for-update', () => { console.log('Checking for updates'); - changeAppUpdateStatus('Checking for updates...'); + changeAppUpdateStatus({ + icon: 'icon loading', + message: 'Checking for updates...', + }); }); autoUpdater.on('update-available', info => { console.log('Update available', info); - changeAppUpdateStatus(`New version ${info.version} available`); + changeAppUpdateStatus({ + icon: 'icon download', + message: `New version ${info.version} available`, + }); if (!autoUpdater.autoDownload) { mainWindow.webContents.send('update-available', info.version); } @@ -478,17 +484,26 @@ autoUpdater.on('update-available', info => { autoUpdater.on('update-not-available', info => { console.log('Update not available', info); - changeAppUpdateStatus(`No new updates`); + changeAppUpdateStatus({ + icon: 'icon check', + message: `No new updates`, + }); }); autoUpdater.on('update-downloaded', info => { console.log('Update downloaded from', info); - changeAppUpdateStatus(`Downloaded new version ${info.version}`); + changeAppUpdateStatus({ + icon: 'icon download', + message: `Downloaded new version ${info.version}`, + }); mainWindow.webContents.send('downloaded-new-version', info.version); }); autoUpdater.on('error', error => { - changeAppUpdateStatus(`Autoupdate error`); + changeAppUpdateStatus({ + icon: 'icon error', + message: `Autoupdate error`, + }); console.error('Update error', error); }); diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte index 4296d82f4..143235dde 100644 --- a/packages/web/src/icons/FontIcon.svelte +++ b/packages/web/src/icons/FontIcon.svelte @@ -140,6 +140,7 @@ 'icon custom-join': 'mdi mdi-arrow-left-right-bold', 'icon parent-filter': 'mdi mdi-home-alert', 'icon parent-filter-outline': 'mdi mdi-home-alert-outline', + 'icon download': 'mdi mdi-download', 'icon run': 'mdi mdi-play', 'icon chevron-down': 'mdi mdi-chevron-down', diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 27e3d6fe4..f68403d7a 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -123,7 +123,7 @@ export const commandsCustomized = derived([commands, commandsSettings], ([$comma ...$commandsSettings[k], })) ); -export const appUpdateStatus = writable(''); +export const appUpdateStatus = writable(null); export const appUpdaterActive = writable(false); export const draggingTab = writable(null); @@ -310,4 +310,4 @@ let appUpdaterActiveValue = false; appUpdaterActive.subscribe(value => { appUpdaterActiveValue = value; }); -export const getAppUpdaterActive = () => appUpdaterActiveValue; \ No newline at end of file +export const getAppUpdaterActive = () => appUpdaterActiveValue; diff --git a/packages/web/src/utility/appUpdate.ts b/packages/web/src/utility/appUpdate.ts index a5ad236f9..07e9034b8 100644 --- a/packages/web/src/utility/appUpdate.ts +++ b/packages/web/src/utility/appUpdate.ts @@ -25,8 +25,8 @@ export function initializeAppUpdates() { }); }); - electron.addEventListener('app-update-status', (e, text) => { - appUpdateStatus.set(text); + electron.addEventListener('app-update-status', (e, value) => { + appUpdateStatus.set(value); }); electron.addEventListener('downloaded-new-version', (e, version) => { diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte index 4cd8ddaae..bca1b8c93 100644 --- a/packages/web/src/widgets/StatusBar.svelte +++ b/packages/web/src/widgets/StatusBar.svelte @@ -173,7 +173,8 @@ {#if $appUpdateStatus}
- {$appUpdateStatus} + + {$appUpdateStatus.message}
{/if}
From 64ab1bb1119dd837571c28087b9782c90f577848 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Tue, 10 Sep 2024 08:41:03 +0200 Subject: [PATCH 16/17] autoupgrade status --- app/src/electron.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/app/src/electron.js b/app/src/electron.js index 2849b25ef..cdaee3d47 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -287,6 +287,10 @@ ipcMain.handle('openExternal', async (event, url) => { }); ipcMain.handle('downloadUpdate', async (event, url) => { autoUpdater.downloadUpdate(); + changeAppUpdateStatus({ + icon: 'icon loading', + message: `Downloading update...`, + }); }); ipcMain.on('applyUpdate', async (event, url) => { autoUpdater.quitAndInstall(false, true); @@ -473,12 +477,17 @@ autoUpdater.on('checking-for-update', () => { autoUpdater.on('update-available', info => { console.log('Update available', info); - changeAppUpdateStatus({ - icon: 'icon download', - message: `New version ${info.version} available`, - }); - if (!autoUpdater.autoDownload) { + if (autoUpdater.autoDownload) { + changeAppUpdateStatus({ + icon: 'icon loading', + message: `Downloading update...`, + }); + } else { mainWindow.webContents.send('update-available', info.version); + changeAppUpdateStatus({ + icon: 'icon download', + message: `New version ${info.version} available`, + }); } }); From 69bc9d6111bf063685e5c398cd24677e3482c459 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Tue, 10 Sep 2024 08:41:15 +0200 Subject: [PATCH 17/17] v5.4.4-beta.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9cbe15d62..7da3e2940 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "5.4.4-beta.9", + "version": "5.4.4-beta.10", "name": "dbgate-all", "workspaces": [ "packages/*",