From 3a0aa1614195f9acf689ca37d565f93a9e40d6ea Mon Sep 17 00:00:00 2001 From: Lukas Mertens Date: Wed, 10 Apr 2024 16:29:09 +0200 Subject: [PATCH] feat(loopbackRpcIssuer): localStorage integration for configs Closes #103 Signed-off-by: Lukas Mertens commit-id:110f685c --- src/modules/evbc/rpc/loopbackRpcIssuer.ts | 24 ++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/modules/evbc/rpc/loopbackRpcIssuer.ts b/src/modules/evbc/rpc/loopbackRpcIssuer.ts index 348597da..68dc88a9 100644 --- a/src/modules/evbc/rpc/loopbackRpcIssuer.ts +++ b/src/modules/evbc/rpc/loopbackRpcIssuer.ts @@ -1,7 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 // Copyright 2020 - 2024 Pionix GmbH and Contributors to EVerest import {LOOPBACK_WAIT_MS} from "@/modules/evbc/connection"; -import {EverestConfigList, EverestInterfaceDefinitionList, EverestModuleDefinitionList} from "@/modules/evbc"; +import { + EverestConfig, + EverestConfigList, + EverestInterfaceDefinitionList, + EverestModuleDefinitionList +} from "@/modules/evbc"; import SampleManifestList from "@/modules/evbc/sample_module_info"; import SampleInterfaceList from "@/modules/evbc/sample_interfaces_list"; import SampleConfigList from "@/modules/evbc/sample_config_list"; @@ -34,10 +39,23 @@ export class LoopbackRpcIssuer extends RpcIssuer { } public async get_configs(): Promise { - return this.random_wait_resolve(SampleConfigList); + const configs = LoopbackRpcIssuer.getConfigsFromLocalStorageOrDefault(); + return this.random_wait_resolve(configs); } - public async save_config(): Promise { + private static getConfigsFromLocalStorageOrDefault() { + const configsString = localStorage.getItem("configs"); + if (configsString) { + return Object.assign({}, SampleConfigList, JSON.parse(configsString)); + } else { + return SampleConfigList; + } + } + + public async save_config(params: {name: string, config: EverestConfig}): Promise { + const configs = LoopbackRpcIssuer.getConfigsFromLocalStorageOrDefault(); + configs[params.name] = params.config; + localStorage.setItem("configs", JSON.stringify(configs)); return this.random_wait_resolve(); }