accounts-frontend/packages/app/services/history.js

36 lines
732 B
JavaScript

/**
* A helper wrapper service around window.history
*/
import { createBrowserHistory } from 'history';
export const browserHistory = createBrowserHistory();
browserHistory.listen(() => {
patchHistory(browserHistory);
});
function patchHistory(history) {
Object.assign(history.location, {
query: new URLSearchParams(history.location.search),
});
}
patchHistory(browserHistory);
export default {
init() {
this.initialLength = window.history.length;
},
/**
* @returns {boolean} - whether history.back() can be safetly called
*/
canGoBack() {
return (
document.referrer.includes(`${location.protocol}//${location.host}`) ||
this.initialLength < window.history.length
);
},
};