88 lines
2.6 KiB
Vue
88 lines
2.6 KiB
Vue
<script>
|
|
import {
|
|
getEdgeGatewayModuleConfig,
|
|
setEdgeGatewayModuleConfig,
|
|
testEdgeGatewayBrokerConfig,
|
|
} from "@/services/edgeGateways.js";
|
|
|
|
const normalizeEntries = (entries) => {
|
|
if (Array.isArray(entries)) {
|
|
return entries;
|
|
}
|
|
|
|
if (entries && typeof entries === "object") {
|
|
return Object.values(entries);
|
|
}
|
|
|
|
return [];
|
|
};
|
|
|
|
const SENSITIVE_WRITE_ONLY_KEYS = new Set(["broker_shared_secret"]);
|
|
|
|
const toConfigPayload = (entries) => {
|
|
const payload = {};
|
|
normalizeEntries(entries).forEach((entry) => {
|
|
if (!entry || !entry.variable) {
|
|
return;
|
|
}
|
|
payload[entry.variable] = SENSITIVE_WRITE_ONLY_KEYS.has(entry.variable) ? "" : entry.value;
|
|
});
|
|
return payload;
|
|
};
|
|
|
|
export const Config = {
|
|
get: async (variable) => getEdgeGatewayModuleConfig(variable),
|
|
get_all: async () =>
|
|
getEdgeGatewayModuleConfig().then((response) => {
|
|
const entries = normalizeEntries(response?.data?.data || []);
|
|
response.data.data = entries;
|
|
response.data.config = toConfigPayload(entries);
|
|
return response;
|
|
}),
|
|
get_config: async () => Config.get_all().then((response) => response?.data?.config || {}),
|
|
set_config: async (payload) => setEdgeGatewayModuleConfig(payload),
|
|
test_broker: async (payload) => testEdgeGatewayBrokerConfig(payload),
|
|
set: async (variable, value) => {
|
|
const currentConfig = await Config.get_config();
|
|
SENSITIVE_WRITE_ONLY_KEYS.forEach((key) => {
|
|
if (key !== variable) {
|
|
delete currentConfig[key];
|
|
}
|
|
});
|
|
return Config.set_config({
|
|
...currentConfig,
|
|
[variable]: value,
|
|
});
|
|
},
|
|
keys: {
|
|
enabled: {
|
|
get: async () => Config.get("enabled"),
|
|
set: async (value) => Config.set("enabled", value),
|
|
},
|
|
default_release_channel: {
|
|
get: async () => Config.get("default_release_channel"),
|
|
set: async (value) => Config.set("default_release_channel", value),
|
|
},
|
|
default_update_window: {
|
|
get: async () => Config.get("default_update_window"),
|
|
set: async (value) => Config.set("default_update_window", value),
|
|
},
|
|
broker_url: {
|
|
get: async () => Config.get("broker_url"),
|
|
set: async (value) => Config.set("broker_url", value),
|
|
},
|
|
public_broker_url: {
|
|
get: async () => Config.get("public_broker_url"),
|
|
set: async (value) => Config.set("public_broker_url", value),
|
|
},
|
|
broker_auth_mode: {
|
|
get: async () => Config.get("broker_auth_mode"),
|
|
set: async (value) => Config.set("broker_auth_mode", value),
|
|
},
|
|
broker_shared_secret: {
|
|
set: async (value) => Config.set("broker_shared_secret", value),
|
|
},
|
|
},
|
|
};
|
|
</script>
|