mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-01-22 15:33:13 +01:00
fix: #8955, popstate to purged topic should go to homepage
This commit is contained in:
@@ -423,16 +423,34 @@ ajaxify = window.ajaxify || {};
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$(window).on('popstate', function (ev) {
|
$(window).on('popstate', function (ev) {
|
||||||
ev = ev.originalEvent;
|
ev = ev.originalEvent;
|
||||||
|
let url = ev.state.url;
|
||||||
|
const execute = function () {
|
||||||
|
ajaxify.go(url, function () {
|
||||||
|
$(window).trigger('action:popstate', { url: url });
|
||||||
|
}, true);
|
||||||
|
};
|
||||||
|
|
||||||
if (ev !== null && ev.state) {
|
if (ev !== null && ev.state) {
|
||||||
if (ev.state.url === null && ev.state.returnPath !== undefined) {
|
if (url === null && ev.state.returnPath !== undefined) {
|
||||||
window.history.replaceState({
|
window.history.replaceState({
|
||||||
url: ev.state.returnPath,
|
url: ev.state.returnPath,
|
||||||
}, ev.state.returnPath, config.relative_path + '/' + ev.state.returnPath);
|
}, ev.state.returnPath, config.relative_path + '/' + ev.state.returnPath);
|
||||||
} else if (ev.state.url !== undefined) {
|
} else if (url !== undefined) {
|
||||||
ajaxify.go(ev.state.url, function () {
|
if (url.startsWith('topic/')) {
|
||||||
$(window).trigger('action:popstate', { url: ev.state.url });
|
// Check topic exists
|
||||||
}, true);
|
fetch(`${config.relative_path}/${url}`, {
|
||||||
|
method: 'HEAD',
|
||||||
|
cache: 'no-cache',
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.status === 404) {
|
||||||
|
url = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
execute();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user