Spaces:
Paused
Paused
import { | |
KnowledgeRouteKey, | |
KnowledgeSearchParams, | |
} from '@/constants/knowledge'; | |
import { useCallback } from 'react'; | |
import { useLocation, useNavigate, useSearchParams } from 'umi'; | |
export enum SegmentIndex { | |
Second = '2', | |
Third = '3', | |
} | |
export const useSegmentedPathName = (index: SegmentIndex) => { | |
const { pathname } = useLocation(); | |
const pathArray = pathname.split('/'); | |
return pathArray[index] || ''; | |
}; | |
export const useSecondPathName = () => { | |
return useSegmentedPathName(SegmentIndex.Second); | |
}; | |
export const useThirdPathName = () => { | |
return useSegmentedPathName(SegmentIndex.Third); | |
}; | |
export const useGetKnowledgeSearchParams = () => { | |
const [currentQueryParameters] = useSearchParams(); | |
return { | |
documentId: | |
currentQueryParameters.get(KnowledgeSearchParams.DocumentId) || '', | |
knowledgeId: | |
currentQueryParameters.get(KnowledgeSearchParams.KnowledgeId) || '', | |
}; | |
}; | |
export const useNavigateWithFromState = () => { | |
const navigate = useNavigate(); | |
return useCallback( | |
(path: string) => { | |
navigate(path, { state: { from: path } }); | |
}, | |
[navigate], | |
); | |
}; | |
export const useNavigateToDataset = () => { | |
const navigate = useNavigate(); | |
const { knowledgeId } = useGetKnowledgeSearchParams(); | |
return useCallback(() => { | |
navigate(`/knowledge/${KnowledgeRouteKey.Dataset}?id=${knowledgeId}`); | |
}, [knowledgeId, navigate]); | |
}; | |
export const useGetPaginationParams = () => { | |
const [currentQueryParameters] = useSearchParams(); | |
return { | |
page: currentQueryParameters.get('page') || 1, | |
size: currentQueryParameters.get('size') || 10, | |
}; | |
}; | |
export const useSetPaginationParams = () => { | |
const [queryParameters, setSearchParams] = useSearchParams(); | |
// const newQueryParameters: URLSearchParams = useMemo( | |
// () => new URLSearchParams(queryParameters.toString()), | |
// [queryParameters], | |
// ); | |
const setPaginationParams = useCallback( | |
(page: number = 1, pageSize?: number) => { | |
queryParameters.set('page', page.toString()); | |
if (pageSize) { | |
queryParameters.set('size', pageSize.toString()); | |
} | |
setSearchParams(queryParameters); | |
}, | |
[setSearchParams, queryParameters], | |
); | |
return { | |
setPaginationParams, | |
page: Number(queryParameters.get('page')) || 1, | |
size: Number(queryParameters.get('size')) || 10, | |
}; | |
}; | |