diff --git a/src/App.tsx b/src/App.tsx
index e6c52dfa..36ae87ee 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -158,7 +158,7 @@ export default function App() {
-
+
diff --git a/src/components/navbar/DefaultNavBar.tsx b/src/components/navbar/DefaultNavBar.tsx
index f30b0195..e7448750 100644
--- a/src/components/navbar/DefaultNavBar.tsx
+++ b/src/components/navbar/DefaultNavBar.tsx
@@ -105,7 +105,6 @@ export default function DefaultNavBar() {
{
!navbarItems.some(({ path }) => path === history.location.pathname)
- && !history.location.pathname.startsWith('/library')
&& (
();
const [tabs, setTabs] = useState();
+
const [tabNum, setTabNum] = useState(0);
- const history = useHistory();
+ const [tabSearchParam, setTabSearchParam] = useQueryParam('tab', NumberParam);
// a hack so MangaGrid doesn't stop working. I won't change it in case
// if I do manga pagination for library..
const [lastPageNum, setLastPageNum] = useState(1);
const handleTabChange = (newTab: number) => {
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
- history.location.search === ''
- ? history.replace(`/library/${newTab}`)
- : history.replace(`/library/${newTab}/${history.location.search}`);
setTabNum(newTab);
+ setTabSearchParam(newTab);
};
useEffect(() => {
@@ -63,15 +60,14 @@ export default function Library() {
}));
setTabs(categoryTabs);
if (categoryTabs.length > 0) {
- setTabNum(() => {
- if (tabParamNumber !== undefined
- && !Number.isNaN(tabParamNumber)
- && !!categories.find((cat) => cat.order === Number(tabParamNumber))) {
- return Number(tabParamNumber);
- }
- history.replace('/library');
- return categoryTabs[0].category.order;
- });
+ if (
+ tabSearchParam !== undefined
+ && tabSearchParam !== null
+ && !Number.isNaN(tabSearchParam)
+ && categories.some((category) => category.order === Number(tabSearchParam))
+ ) {
+ handleTabChange(Number(tabSearchParam!));
+ } else { handleTabChange(categoryTabs[0].category.order); }
}
});
}, []);
diff --git a/src/util/useLibraryOptions.ts b/src/util/useLibraryOptions.ts
index 5b3450e7..d64b00d5 100644
--- a/src/util/useLibraryOptions.ts
+++ b/src/util/useLibraryOptions.ts
@@ -6,7 +6,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
-import { BooleanParam, useQueryParams, StringParam } from 'use-query-params';
+import { BooleanParam, useQueryParam, StringParam } from 'use-query-params';
export type NullAndUndefined = T | null | undefined;
@@ -21,24 +21,13 @@ interface IUseLibraryOptions {
}
export default function useLibraryOptions(): IUseLibraryOptions {
- const [searchQuery, setSearchQuery] = useQueryParams({
- downloaded: BooleanParam,
- unread: BooleanParam,
- query: StringParam,
- });
- const { downloaded, unread, query } = searchQuery;
- const setDownloaded = (newDownloaded: NullAndUndefined) => {
- setSearchQuery(Object.assign(searchQuery, { downloaded: newDownloaded }), 'replace');
- };
- const setUnread = (newUnread: NullAndUndefined) => {
- setSearchQuery(Object.assign(searchQuery, { unread: newUnread }), 'replace');
- };
- const setQuery = (newQuery: NullAndUndefined) => {
- setSearchQuery(Object.assign(searchQuery, { query: newQuery }), 'replace');
- };
+ const [downloaded, setDownloaded] = useQueryParam('downloaded', BooleanParam);
+ const [unread, setUnread] = useQueryParam('unread', BooleanParam);
+ const [query, setQuery] = useQueryParam('query', StringParam);
+
// eslint-disable-next-line eqeqeq
const active = !(unread == undefined) || !(downloaded == undefined);
return {
- downloaded, setDownloaded, unread, setUnread, active, query, setQuery,
+ downloaded, setDownloaded, unread, setUnread, query, setQuery, active,
};
}