filestash/public/assets/pages/ctrl_logout.js
2025-08-07 23:55:52 +10:00

24 lines
794 B
JavaScript

import { navigate } from "../lib/skeleton/index.js";
import { toHref } from "../lib/skeleton/router.js";
import rxjs, { effect } from "../lib/rx.js";
import { deleteSession } from "../model/session.js";
import { init as setup_config, get as getConfig } from "../model/config.js";
import ctrlError from "./ctrl_error.js";
import $loader from "../components/loader.js";
export default function(render) {
render($loader);
effect(deleteSession().pipe(
rxjs.mergeMap(setup_config),
rxjs.tap(() => { while (hooks.length) hooks.pop()(); }),
rxjs.tap(() => getConfig("logout") ? location.href = getConfig("logout") : navigate(toHref("/"))),
rxjs.catchError(ctrlError(render)),
));
}
const hooks = [];
export function onLogout(fn) {
hooks.push(fn);
}