28 lines
965 B
TypeScript
28 lines
965 B
TypeScript
import { useNavigate, useParams, useLocation } from 'react-router-dom';
|
|
import { useCallback } from 'react';
|
|
import { Links, Routes } from '../../pages/client-router';
|
|
|
|
export const useMarketClickHandler = (replace = false) => {
|
|
const navigate = useNavigate();
|
|
const { marketId } = useParams();
|
|
const { pathname } = useLocation();
|
|
const isMarketPage = pathname.match(/^\/markets\/(.+)/);
|
|
return useCallback(
|
|
(selectedId: string, metaKey?: boolean) => {
|
|
const link = Links[Routes.MARKET](selectedId);
|
|
if (metaKey) {
|
|
window.open(`/#${link}`, '_blank');
|
|
} else if (selectedId !== marketId || !isMarketPage) {
|
|
navigate(link, { replace });
|
|
}
|
|
},
|
|
[navigate, marketId, replace, isMarketPage]
|
|
);
|
|
};
|
|
|
|
export const useMarketLiquidityClickHandler = () => {
|
|
return useCallback((selectedId: string, metaKey?: boolean) => {
|
|
window.open(`/#/liquidity/${selectedId}`, metaKey ? '_blank' : '_self');
|
|
}, []);
|
|
};
|