(enable: boolean, name: string)
| 216 | } |
| 217 | |
| 218 | @bind async enableDisableExtension(enable: boolean, name: string): Promise<void> { |
| 219 | if (enable) { |
| 220 | let extension: Extension; |
| 221 | |
| 222 | switch (name) { |
| 223 | case "Frontend": { |
| 224 | if (!settings.get().frontend.enabled) { |
| 225 | throw new Error("Tried to enable Frontend extension disabled in settings"); |
| 226 | } |
| 227 | |
| 228 | // this is not actually used, not tested either |
| 229 | /* v8 ignore start */ |
| 230 | const {Frontend} = await import("./extension/frontend.js"); |
| 231 | |
| 232 | extension = new Frontend(...this.extensionArgs); |
| 233 | |
| 234 | break; |
| 235 | /* v8 ignore stop */ |
| 236 | } |
| 237 | case "HomeAssistant": { |
| 238 | if (!settings.get().homeassistant.enabled) { |
| 239 | throw new Error("Tried to enable HomeAssistant extension disabled in settings"); |
| 240 | } |
| 241 | |
| 242 | const {HomeAssistant} = await import("./extension/homeassistant.js"); |
| 243 | |
| 244 | extension = new HomeAssistant(...this.extensionArgs); |
| 245 | |
| 246 | break; |
| 247 | } |
| 248 | default: { |
| 249 | throw new Error( |
| 250 | `Extension ${name} does not exist (should be added with 'addExtension') or is built-in that cannot be enabled at runtime`, |
| 251 | ); |
| 252 | } |
| 253 | } |
| 254 | |
| 255 | const existingExtension = this.getExtension(name); |
| 256 | |
| 257 | if (existingExtension) { |
| 258 | await this.removeExtension(existingExtension); |
| 259 | } |
| 260 | |
| 261 | this.extensions.add(extension); |
| 262 | } else { |
| 263 | switch (name) { |
| 264 | case "Frontend": { |
| 265 | if (settings.get().frontend.enabled) { |
| 266 | throw new Error("Tried to disable Frontend extension enabled in settings"); |
| 267 | } |
| 268 | |
| 269 | break; |
| 270 | } |
| 271 | case "HomeAssistant": { |
| 272 | if (settings.get().homeassistant.enabled) { |
| 273 | throw new Error("Tried to disable HomeAssistant extension enabled in settings"); |
| 274 | } |
| 275 |
no test coverage detected