aboutsummaryrefslogtreecommitdiffstats
path: root/src/scripts/common/login/form-caching.ts
blob: 656de6ecfeb5a07a92a21e045d5e9b45bc069cab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { addPostListener, addPostResponder, JQueryAjaxResponse } from "@/shared/intercept-jquery-ajax";

/** Caches the login area HTML to avoid re-fetching it on subsequent requests. */
let loginAreaHTML: JQueryAjaxResponse | null = null;

/**
 * Intercepts `viewLoginAreaAction` AJAX requests and serves the cached HTML
 * if available, avoiding an unnecessary network round-trip.
 */
addPostResponder(
	"viewLoginAreaAction",
	function(_args): JQueryAjaxResponse | null {
		return loginAreaHTML;
	}
);

/**
 * Listens for successful `viewLoginAreaAction` responses and stores the
 * returned HTML so the responder above can serve it from cache later.
 */
addPostListener(
	"viewLoginAreaAction",
	function(_args, result): void {
		if (result.textStatus === "success")
			loginAreaHTML = result;
	},
	false
);