Files
suwayomi-material-you-webui/src/util/useBackButton.ts
schroda 35c34b6d1b Feature/search bar improvements (#455)
* Require search to be committed with enter

* Extract back navigation logic into hook

* Navigate to previous page when canceling search

This makes the search the next page in the history stack instead of making it the previous one

* Close and open search depending on the location and available query

* Navigate to previous page in case new query is empty
2023-11-12 03:21:26 +01:00

32 lines
1.0 KiB
TypeScript

/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
import { useLocation, useNavigate } from 'react-router-dom';
import { useContext } from 'react';
import { useHistory } from '@/util/useHistory.ts';
import { NavBarContext } from '@/components/context/NavbarContext.tsx';
export const useBackButton = () => {
const navigate = useNavigate();
const history = useHistory();
const location = useLocation();
const { defaultBackTo: backToUrl } = useContext(NavBarContext);
return () => {
const isLastPageInHistory = location.key === 'default';
const wasPreviousPageReader = history[history.length - 2]?.match(/\/manga\/[0-9]+\/chapter\/[0-9]+.*/g);
if (isLastPageInHistory || wasPreviousPageReader) {
navigate(backToUrl ?? '');
return;
}
navigate(-1);
};
};