From 029f5efc82adcd8573844e13a452e75a7c99e389 Mon Sep 17 00:00:00 2001 From: MickaelK Date: Tue, 30 Jan 2024 17:37:05 +1100 Subject: [PATCH] fix ([data-bind=backend-enabled]): remove quickfix and fix root cause of cf83f7507c29267ba132e31256091a3d23ad1fc0 --- public/assets/pages/adminpage/ctrl_backend_state.js | 5 ++++- public/assets/pages/adminpage/decorator_admin_only.js | 1 - public/assets/pages/adminpage/model_admin_session.js | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/public/assets/pages/adminpage/ctrl_backend_state.js b/public/assets/pages/adminpage/ctrl_backend_state.js index 22275475..251f5c74 100644 --- a/public/assets/pages/adminpage/ctrl_backend_state.js +++ b/public/assets/pages/adminpage/ctrl_backend_state.js @@ -12,7 +12,10 @@ const backendsEnabled$ = new rxjs.BehaviorSubject(); export async function initStorage() { return await getConfig().pipe( rxjs.map(({ connections }) => connections), - rxjs.tap((connections) => backendsEnabled$.next(Array.isArray(connections) ? connections : [])), + rxjs.tap((connections) => { + if (backendsEnabled$.value !== undefined) return; + backendsEnabled$.next(Array.isArray(connections) ? connections : []) + }), ).toPromise(); } diff --git a/public/assets/pages/adminpage/decorator_admin_only.js b/public/assets/pages/adminpage/decorator_admin_only.js index 19e70f49..1c2f8b37 100644 --- a/public/assets/pages/adminpage/decorator_admin_only.js +++ b/public/assets/pages/adminpage/decorator_admin_only.js @@ -7,7 +7,6 @@ import { isAdmin$ } from "./model_admin_session.js"; export default function AdminOnly(ctrlWrapped) { return (render) => { effect(isAdmin$().pipe( - rxjs.distinctUntilChanged(), rxjs.map((isAdmin) => isAdmin ? ctrlWrapped : ctrlLogin), rxjs.tap((ctrl) => ctrl(render)), rxjs.catchError(ctrlError(render)), diff --git a/public/assets/pages/adminpage/model_admin_session.js b/public/assets/pages/adminpage/model_admin_session.js index 29efdd12..634c199a 100644 --- a/public/assets/pages/adminpage/model_admin_session.js +++ b/public/assets/pages/adminpage/model_admin_session.js @@ -9,9 +9,11 @@ const adminSession$ = rxjs.merge( rxjs.startWith(null), rxjs.mergeMap(() => ajax({ url: "/admin/api/session", responseType: "json" })), rxjs.map(({ responseJSON }) => responseJSON.result), - rxjs.distinctUntilChanged(), ) -).pipe(rxjs.shareReplay(1)); +).pipe( + rxjs.distinctUntilChanged(), + rxjs.shareReplay(1) +); export function isAdmin$() { return adminSession$;