From 8f2f57ffc85a49f870b9c3f4df3ad94409e5d443 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Fri, 27 Mar 2020 12:24:11 +0800 Subject: [PATCH] fix skin library history state --- .../assets/src/views/skinlib/SkinLibrary/index.tsx | 11 ++++------- .../assets/tests/views/skinlib/SkinLibrary.test.tsx | 7 ++++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/resources/assets/src/views/skinlib/SkinLibrary/index.tsx b/resources/assets/src/views/skinlib/SkinLibrary/index.tsx index c17ac664..cefba0dd 100644 --- a/resources/assets/src/views/skinlib/SkinLibrary/index.tsx +++ b/resources/assets/src/views/skinlib/SkinLibrary/index.tsx @@ -28,9 +28,8 @@ const SkinLibrary: React.FC = () => { const currentUid = useBlessingExtra('currentUid', null) useEffect(() => { - const parseSearch = (query: string | URLSearchParams) => { - const search = - typeof query === 'string' ? new URLSearchParams(query) : query + const parseSearch = (query: string) => { + const search = new URLSearchParams(query) const filter = search.get('filter') ?? '' setFilter( @@ -51,9 +50,7 @@ const SkinLibrary: React.FC = () => { parseSearch(location.search) - const handler = (event: PopStateEvent) => { - parseSearch(event.state as URLSearchParams) - } + const handler = (event: PopStateEvent) => parseSearch(event.state) window.addEventListener('popstate', handler) return () => { @@ -75,7 +72,7 @@ const SkinLibrary: React.FC = () => { } search.append('sort', sort) search.append('page', page.toString()) - window.history.pushState(search, '', `?${search}`) + window.history.pushState(search.toString(), '', `?${search}`) const result = await fetch.get>( '/skinlib/list', diff --git a/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx b/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx index 4df86bdb..2d6dd6c7 100644 --- a/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx +++ b/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx @@ -139,9 +139,10 @@ test('browser goes back', async () => { fireEvent.click(getByText('Steve')) await wait() - const state: URLSearchParams = window.history.state - state.set('filter', 'skin') - const event = new PopStateEvent('popstate', { state }) + const state: string = window.history.state + const event = new PopStateEvent('popstate', { + state: state.replace('steve', 'skin'), + }) window.dispatchEvent(event) await wait()