Interestingly,
XF.KeepAlive.refresh() does not update the counters.
It does the cross tab communication stuff, which keeps the counters and other info in-sync across multiple browser tabs, but it doesn't update the counters.
Part of the reason for that is because we're using the native jQuery
$.ajax() call rather than
XF.ajax(). The latter of which fires some additional events.
That might be intentional.
So maybe we should leave that as it is.
But I'm not sure there's a valid reason we can't just:
JavaScript:
if (data.visitor)
{
XF.updateVisitorCounts(data.visitor, true);
}
Which does update the alert/inbox badges, and the app badge update.
So, then, could we just do:
JavaScript:
document.addEventListener("visibilitychange", () => {
if (document.visibilityState === "visible") {
XF.keepAlive.refresh();
}
});
The above probably only needs to happen specifically for the PWA (which we gate behind a
display-mode: standalone check).
It seems pretty simple, unless I'm overlooking something.
The aforementioned CSRF issue I haven't actually experienced since my phone stopped being whacky. Doesn't
XF.KeepAlive.refresh() handle an expired token already?