From a076bad5fa6b955733bbbbd2f20bc1b4b7523de3 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Thu, 10 Mar 2022 20:41:20 -0800 Subject: [PATCH] core: finally handle server update and version notificaitons --- plugins/core/package-lock.json | 4 +- plugins/core/package.json | 2 +- plugins/core/ui/src/client.ts | 2 +- plugins/core/ui/src/components/Drawer.vue | 39 +++ .../components/builtin/SettingsComponent.vue | 279 +++++++----------- 5 files changed, 147 insertions(+), 179 deletions(-) diff --git a/plugins/core/package-lock.json b/plugins/core/package-lock.json index 1f5337c0a..ab4c48972 100644 --- a/plugins/core/package-lock.json +++ b/plugins/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/core", - "version": "0.0.213", + "version": "0.0.217", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/core", - "version": "0.0.213", + "version": "0.0.217", "license": "Apache-2.0", "dependencies": { "@koush/wrtc": "^0.5.2", diff --git a/plugins/core/package.json b/plugins/core/package.json index 943050921..0ce26d776 100644 --- a/plugins/core/package.json +++ b/plugins/core/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/core", - "version": "0.0.213", + "version": "0.0.217", "description": "Scrypted Core plugin. Provides the UI, websocket, and engine.io APIs.", "author": "Scrypted", "license": "Apache-2.0", diff --git a/plugins/core/ui/src/client.ts b/plugins/core/ui/src/client.ts index 42669ab58..47d8a7be8 100644 --- a/plugins/core/ui/src/client.ts +++ b/plugins/core/ui/src/client.ts @@ -110,5 +110,5 @@ Vue.use(Vue => { }); }; - Vue.prototype.$connectScrypted(); + Vue.prototype.$connectingScrypted = Vue.prototype.$connectScrypted(); }); diff --git a/plugins/core/ui/src/components/Drawer.vue b/plugins/core/ui/src/components/Drawer.vue index 28fb4189b..29676abc4 100644 --- a/plugins/core/ui/src/components/Drawer.vue +++ b/plugins/core/ui/src/components/Drawer.vue @@ -2,6 +2,22 @@ + + + + fa-download + + + + Update {{ updateAvailable }} + + + import { getComponentViewPath } from "./helpers"; +import { checkUpdate } from "./plugin/plugin"; export default { props: { @@ -133,6 +150,9 @@ export default { }, }, }, + mounted() { + this.checkUpdateAvailable(); + }, computed: { scryptedVersion() { return this.$store.state.version; @@ -140,6 +160,24 @@ export default { }, methods: { getComponentViewPath, + async checkUpdateAvailable() { + await this.$connectingScrypted; + const info = await this.$scrypted.systemManager.getComponent("info"); + const version = await info.getVersion(); + this.currentVersion = version; + const { updateAvailable } = await checkUpdate( + "@scrypted/server", + version + ); + this.updateAvailable = updateAvailable; + if (updateAvailable) { + const logger = this.$scrypted.deviceManager.getDeviceLogger(); + const u = new URL(window.location) + u.hash = "#/component/settings"; + logger.clearAlerts(); + logger.a(`Scrypted Server update available: ${updateAvailable}. ${u}`); + } + }, filterComponents: function (category) { return this.components.filter( (component) => component.category == category @@ -148,6 +186,7 @@ export default { }, data: function () { return { + updateAvailable: null, actives: {}, // components: [], builtinComponents: [ diff --git a/plugins/core/ui/src/components/builtin/SettingsComponent.vue b/plugins/core/ui/src/components/builtin/SettingsComponent.vue index 1541b54d5..1dace3515 100644 --- a/plugins/core/ui/src/components/builtin/SettingsComponent.vue +++ b/plugins/core/ui/src/components/builtin/SettingsComponent.vue @@ -1,196 +1,140 @@