From 7c9ed182528c813f02b3f7cf1c3f7225b1ce331b Mon Sep 17 00:00:00 2001 From: Lino Schmidt Date: Mon, 13 Jun 2022 22:38:35 +0200 Subject: [PATCH] Added auto update --- src/components/ui/menu.tsx | 13 +---------- src/index.ts | 47 +++++++++++++++++++++++++++++++++++++- src/renderer.tsx | 2 +- 3 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/components/ui/menu.tsx b/src/components/ui/menu.tsx index cf41987..e4c95c6 100644 --- a/src/components/ui/menu.tsx +++ b/src/components/ui/menu.tsx @@ -2,16 +2,6 @@ import React, {useState} from "react"; import { openSide, Side } from "../../renderer"; import {blender, blenderCmd} from "../blender-controller"; -const UpdateButton = () => ( -
- - {/* Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. */} - - -
-) - const MainSideButtons = () => (
openSide(Side.Settings)}> @@ -45,7 +35,7 @@ const BlenderReadySVG = () => ( let setBlenderLoading:React.Dispatch>; let setBlenderStatus:React.Dispatch>; -function Menu({updateAvailable, side}:{updateAvailable:boolean, side:Side}) { +function Menu({side}:{side:Side}) { const [blenderLoading, setBlenderLoadingInner] = useState(true); setBlenderLoading = setBlenderLoadingInner; @@ -61,7 +51,6 @@ function Menu({updateAvailable, side}:{updateAvailable:boolean, side:Side}) {

{blenderStatus}

- {updateAvailable? : null} {(side == Side.Main)? : null} {(side == Side.Settings)? : null} {(side == Side.Rendering)? : null} diff --git a/src/index.ts b/src/index.ts index be952dd..9d2970d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,51 @@ -import {app, BrowserWindow} from 'electron'; +import {app, BrowserWindow, dialog} from 'electron'; import {initialize as remoteInitialize, enable as remoteEnable} from '@electron/remote/main'; import path from 'path'; +import { autoUpdater } from "electron-updater"; +import logger from 'electron-log'; + +logger.transports.console.format = "{h}:{i}:{s} {text}"; +logger.transports.file.getFile(); +logger.transports.file.resolvePath = () => path.join(app.getPath('userData'), "logs", "start.log"); + +autoUpdater.autoDownload = false; + +autoUpdater.checkForUpdatesAndNotify(); + +autoUpdater.on('update-available', async () => { + const response = await dialog.showMessageBox({ + type: 'info', + title: 'Update Available', + message: 'Found updates, do you want update now?', + buttons: ['Yes', 'Later'], + }); + + if (response.response === 0) { + logger.log('Downloading Update'); + autoUpdater.downloadUpdate(); + await dialog.showMessageBox({ + type: 'info', + title: 'Update Downloading', + message: + 'Update is being downloaded, you will be notified when it is ready to install', + buttons: [], + }); + } +}); + +autoUpdater.on('update-downloaded', async () => { + const response = await dialog.showMessageBox({ + type: 'info', + buttons: ['Restart', 'Later'], + title: 'Application Update', + message: 'Update', + detail: + 'A new version has been downloaded. Restart the application to apply the updates.', + }); + if (response.response === 0) { + setImmediate(() => autoUpdater.quitAndInstall()); + } +}); // Handle creating/removing shortcuts on Windows when installing/uninstalling. if (require('electron-squirrel-startup')) { diff --git a/src/renderer.tsx b/src/renderer.tsx index 0a61bda..c9c41c3 100644 --- a/src/renderer.tsx +++ b/src/renderer.tsx @@ -26,7 +26,7 @@ function openSide(side:Side) { root.render( - + {(side === Side.Main)? : null} {(side === Side.Settings)? : null} {(side === Side.Rendering)? : null}