From ae2160afcdf576057704af0d00226480e53e1011 Mon Sep 17 00:00:00 2001 From: tophf Date: Fri, 28 Jan 2022 19:08:32 +0300 Subject: [PATCH] keep router buffer on tab reload --- js/router.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/js/router.js b/js/router.js index 6c6d6f19..28b4ef7c 100644 --- a/js/router.js +++ b/js/router.js @@ -3,13 +3,17 @@ 'use strict'; const router = { - buffer: [], + buffer: (history.state || {}).buffer || [], watchers: [], getSearch(key) { return new URLSearchParams(location.search).get(key); }, + push(url, state = history.state) { + history.pushState(Object.assign({buffer: router.buffer}, state), null, url); + }, + update(replace) { const {buffer} = router; if (!buffer.length) { @@ -53,7 +57,7 @@ const router = { if (!hash) { hash = ' '; } - history.pushState(history.state, null, hash); + router.push(hash); router.update(); }, @@ -83,7 +87,7 @@ window.on('popstate', () => router.update()); window.on('hashchange', () => router.update()); msg.on(e => { if (e.method === 'pushState' && e.url !== location.href) { - history.pushState(history.state, null, e.url); + router.push(e.url); router.update(); return true; }