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$;