From 624f91bd7ca76c0803d93e8946beb10aae43f87a Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Fri, 24 Sep 2021 00:44:26 -0700 Subject: [PATCH] cameras: Update to notify recommended rebroadcast plugin --- common/src/alert-recommended-plugins.ts | 30 +++++++ common/src/autoenable-mixin-provider.ts | 2 +- plugins/amcrest/package-lock.json | 4 +- plugins/amcrest/package.json | 2 +- plugins/core/package-lock.json | 4 +- plugins/core/package.json | 2 +- plugins/core/ui/src/components/Device.vue | 85 +++++++++---------- .../src/components/plugin/InstallPlugin.vue | 2 +- plugins/core/ui/src/router.ts | 4 + plugins/hikvision/package-lock.json | 4 +- plugins/hikvision/package.json | 2 +- plugins/onvif/package-lock.json | 4 +- plugins/onvif/package.json | 2 +- plugins/rtsp/package-lock.json | 58 ++++++++++--- plugins/rtsp/package.json | 6 +- plugins/rtsp/src/recommend.ts | 7 ++ plugins/rtsp/src/rtsp.ts | 5 +- plugins/unifi-protect/package-lock.json | 4 +- plugins/unifi-protect/package.json | 2 +- plugins/unifi-protect/src/main.ts | 2 + 20 files changed, 156 insertions(+), 75 deletions(-) create mode 100644 common/src/alert-recommended-plugins.ts create mode 100644 plugins/rtsp/src/recommend.ts diff --git a/common/src/alert-recommended-plugins.ts b/common/src/alert-recommended-plugins.ts new file mode 100644 index 000000000..e09ec4d17 --- /dev/null +++ b/common/src/alert-recommended-plugins.ts @@ -0,0 +1,30 @@ +import sdk from "@scrypted/sdk"; + +const { systemManager, log } = sdk; + +export async function alertRecommendedPlugins(plugins: { [pkg: string]: string }) { + const pluginsComponent = await systemManager.getComponent('plugins'); + let recommended: any; + try { + recommended = JSON.parse(localStorage.getItem('alert-recommended')); + } + catch (e) { + recommended = {}; + } + for (const plugin of Object.keys(plugins)) { + try { + if (recommended[plugin]) + continue; + + recommended[plugin] = true; + localStorage.setItem('alert-recommended', JSON.stringify(recommended)); + const id = await pluginsComponent.getIdForPluginId(plugin); + if (id) + continue; + const name = plugins[plugin]; + log.a(`Installation of the ${name} plugin is also recommended. origin:/#/component/plugin/install/${plugin}`) + } + catch (e) { + } + } +} diff --git a/common/src/autoenable-mixin-provider.ts b/common/src/autoenable-mixin-provider.ts index 2dfc415b5..6318ab83f 100644 --- a/common/src/autoenable-mixin-provider.ts +++ b/common/src/autoenable-mixin-provider.ts @@ -1,4 +1,4 @@ -import { MixinProvider, ScryptedDevice, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface } from "@scrypted/sdk"; +import { ScryptedDevice, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface } from "@scrypted/sdk"; import sdk from "@scrypted/sdk"; const { systemManager } = sdk; diff --git a/plugins/amcrest/package-lock.json b/plugins/amcrest/package-lock.json index 98c529c1f..71ce2b401 100644 --- a/plugins/amcrest/package-lock.json +++ b/plugins/amcrest/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/amcrest", - "version": "0.0.35", + "version": "0.0.36", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/amcrest", - "version": "0.0.35", + "version": "0.0.36", "license": "Apache", "dependencies": { "@koush/axios-digest-auth": "^0.7.2", diff --git a/plugins/amcrest/package.json b/plugins/amcrest/package.json index 09867c483..f8f6cc6b8 100644 --- a/plugins/amcrest/package.json +++ b/plugins/amcrest/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/amcrest", - "version": "0.0.35", + "version": "0.0.36", "description": "Amcrest Plugin for Scrypted", "author": "Scrypted", "license": "Apache", diff --git a/plugins/core/package-lock.json b/plugins/core/package-lock.json index 4dc310437..c5e461f8e 100644 --- a/plugins/core/package-lock.json +++ b/plugins/core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@scrypted/core", - "version": "0.0.96", + "version": "0.0.97", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@scrypted/core", - "version": "0.0.96", + "version": "0.0.97", "license": "Apache-2.0", "dependencies": { "@scrypted/sdk": "file:../../sdk", diff --git a/plugins/core/package.json b/plugins/core/package.json index c87c91b34..923bd2574 100644 --- a/plugins/core/package.json +++ b/plugins/core/package.json @@ -1,6 +1,6 @@ { "name": "@scrypted/core", - "version": "0.0.96", + "version": "0.0.97", "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/components/Device.vue b/plugins/core/ui/src/components/Device.vue index 496bf616e..68c455dac 100644 --- a/plugins/core/ui/src/components/Device.vue +++ b/plugins/core/ui/src/components/Device.vue @@ -1,21 +1,38 @@