chore (refactoring): get rid of behavior subject

This commit is contained in:
MickaelK
2024-01-06 18:01:42 +11:00
parent 0367f45089
commit 19fe2a4ba5
2 changed files with 30 additions and 22 deletions
@@ -56,7 +56,7 @@ export default async function(render) {
effect(init$.pipe(
rxjs.mergeMap(($nodes) => $nodes),
rxjs.mergeMap(($node) => onClick($node)),
rxjs.map(($node) => addBackendEnabled($node.getAttribute("data-label"))),
rxjs.mergeMap(($node) => addBackendEnabled($node.getAttribute("data-label"))),
saveConnections(),
));
@@ -106,7 +106,7 @@ export default async function(render) {
rxjs.mergeMap(($nodes) => $nodes),
rxjs.mergeMap(($node) => onClick($node.querySelector(".icons"))),
rxjs.map(($node) => qs($node.parentElement, "input").value),
rxjs.map((label) => removeBackendEnabled(label)),
rxjs.mergeMap((label) => removeBackendEnabled(label)),
saveConnections(),
));
@@ -7,7 +7,7 @@ import { formObjToJSON$ } from "./helper_form.js";
export { getBackends as getBackendAvailable } from "./model_backend.js";
const backendsEnabled$ = new rxjs.BehaviorSubject([]);
const backendsEnabled$ = new rxjs.ReplaySubject(1);
export async function initStorage() {
return await getConfig().pipe(
@@ -21,32 +21,40 @@ export function getBackendEnabled() {
}
export function addBackendEnabled(type) {
const existingLabels = new Set();
backendsEnabled$.value.forEach((obj) => {
existingLabels.add(obj.label.toLowerCase());
});
return backendsEnabled$.pipe(
rxjs.first(),
rxjs.map((backends) => {
const existingLabels = new Set();
backends.forEach((obj) => {
existingLabels.add(obj.label.toLowerCase());
});
let label = ""; let i = 1;
while (true) {
label = type + (i === 1 ? "" : ` ${i}`);
if (existingLabels.has(label) === false) break;
i += 1;
}
let label = ""; let i = 1;
while (true) {
label = type + (i === 1 ? "" : ` ${i}`);
if (existingLabels.has(label) === false) break;
i += 1;
}
const b = backendsEnabled$.value.concat({ type, label });
backendsEnabled$.next(b);
return b;
const b = backends.concat({ type, label });
backendsEnabled$.next(b);
return b;
}),
);
}
export function removeBackendEnabled(labelToRemove) {
const b = backendsEnabled$.value.filter(({ label }) => {
return label !== labelToRemove;
});
backendsEnabled$.next(b);
return b;
return backendsEnabled$.pipe(
rxjs.first(),
rxjs.map((backends) => {
const b = backends.filter(({ label }) => label !== labelToRemove);
backendsEnabled$.next(b);
return b;
}),
);
}
const middlewareEnabled$ = new rxjs.BehaviorSubject(null);
const middlewareEnabled$ = new rxjs.ReplaySubject(1);
export async function initMiddleware() {
return await getAdminConfig().pipe(