Files
pleno-vue/src/components/session/token/superUser/modules/selfserve/Config.vue
T

92 lines
2.2 KiB
Vue

<script>
import {authenticatedRequest} from "@/components/session/authenticatedRequest.vue";
const normalizeEntries = (entries) => {
if (Array.isArray(entries)) {
return entries;
}
if (entries && typeof entries === "object") {
return Object.values(entries);
}
return [];
};
const toConfigPayload = (entries) => {
const payload = {};
normalizeEntries(entries).forEach((entry) => {
if (!entry || !entry.variable) {
return;
}
payload[entry.variable] = entry.value;
});
return payload;
};
/**
* The Self Serve -> Config object
*/
export const Config = {
get: async ( variable ) => {
return authenticatedRequest(
"/selfserve/config?variable=" + variable,
"GET")
},
get_all: async () => {
return authenticatedRequest(
"/selfserve/config",
"GET").then((response) => {
const normalizedEntries = normalizeEntries(response?.data?.data);
response.data.data = normalizedEntries;
response.data.config = toConfigPayload(normalizedEntries);
return response;
});
},
get_config: async () => {
return Config.get_all().then((response) => response?.data?.config || {});
},
set_config: async (payload) => {
return authenticatedRequest(
"/selfserve/config",
"POST",
payload
);
},
set: async ( variable, value ) => {
const currentConfig = await Config.get_config();
return Config.set_config({
...currentConfig,
[variable]: value
});
},
keys: {
dynamic_image_size: {
get: async () => {
return Config.get("dynamic_image_size");
},
set: async (value) => {
return Config.set("dynamic_image_size", value);
},
},
minute_product: {
get: async () => {
return Config.get("minute_product");
},
set: async (value) => {
return Config.set("minute_product", value);
},
},
},
enabled: {
get: async () => {
return Config.get("enabled");
},
set: async (enabled) => {
return Config.set("enabled", enabled);
},
},
};
</script>