import { createElement, createRender } from "../lib/skeleton/index.js"; import { toHref, fromHref, navigate } from "../lib/skeleton/router.js"; import { forwardURLParams } from "../lib/path.js"; import rxjs, { effect, applyMutation } from "../lib/rx.js"; import { qs, safe } from "../lib/dom.js"; import t from "../locales/index.js"; import { AjaxError, ApplicationError } from "../lib/error.js"; import "../components/icon.js"; export default function(render) { let hasBack = window.self === window.top; if (!render) { render = createRender(document.body); try { render = createRender(qs(document.body, "[role=\"main\"]")); } catch (err) { hasBack = false; } } return function(err) { const [msg, trace] = processError(err); const shouldRedirectLogin = err instanceof AjaxError && err.err().status === 401; let link = ""; if (hasBack) { link = forwardURLParams(calculateBacklink(fromHref(window.location.pathname)), ["share"]); if (shouldRedirectLogin) { link = fromHref("/login?next=" + encodeURIComponent(forwardURLParams(fromHref(window.location.pathname), ["share"]))); } } const $page = createElement(`
${formatTrace(trace)}