diff --git a/server/src/runtime.ts b/server/src/runtime.ts index fec2c525c..5920fb8d2 100644 --- a/server/src/runtime.ts +++ b/server/src/runtime.ts @@ -493,7 +493,7 @@ export class ScryptedRuntime extends PluginHttp { } catch (e) { } - await this.upsertDevice(plugin._id, device); + this.upsertDevice(plugin._id, device); return this.runPlugin(plugin, pluginDebug); } diff --git a/server/src/services/plugin.ts b/server/src/services/plugin.ts index eb0f20262..5d7f0973b 100644 --- a/server/src/services/plugin.ts +++ b/server/src/services/plugin.ts @@ -4,6 +4,7 @@ import { Plugin } from '../db-types'; import { getState } from "../state"; import axios from 'axios'; import semver from 'semver'; +import { sleep } from "../sleep"; export class PluginComponent { scrypted: ScryptedRuntime; @@ -11,6 +12,17 @@ export class PluginComponent { this.scrypted = scrypted; } + async renameDeviceId(id: string, newId: string) { + const pluginDevice = this.scrypted.findPluginDeviceById(id); + await this.kill(pluginDevice.pluginId); + // wait for everything to settle. + await sleep(2000); + await this.scrypted.removeDevice(pluginDevice); + pluginDevice._id = newId; + await this.scrypted.datastore.upsert(pluginDevice); + await this.scrypted.notifyPluginDeviceDescriptorChanged(pluginDevice); + } + getNativeId(id: string) { return this.scrypted.findPluginDeviceById(id)?.nativeId; }