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 @@