27
common/resources/client/channels/use-channel-query-params.ts
Executable file
27
common/resources/client/channels/use-channel-query-params.ts
Executable file
@@ -0,0 +1,27 @@
|
||||
import {Channel} from '@common/channels/channel';
|
||||
import {useParams, useSearchParams} from 'react-router-dom';
|
||||
import {useBackendFilterUrlParams} from '@common/datatable/filters/backend-filter-url-params';
|
||||
import {BackendFiltersUrlKey} from '@common/datatable/filters/backend-filters-url-key';
|
||||
|
||||
export function useChannelQueryParams(
|
||||
channel?: Channel,
|
||||
userParams?: Record<string, string | null> | null,
|
||||
): Record<string, string | number | null> {
|
||||
const params = useParams();
|
||||
const [searchParams] = useSearchParams();
|
||||
const {encodedFilters} = useBackendFilterUrlParams();
|
||||
|
||||
const queryParams = {
|
||||
...userParams,
|
||||
restriction: params.restriction || '',
|
||||
order: searchParams.get('order'),
|
||||
[BackendFiltersUrlKey]: encodedFilters,
|
||||
};
|
||||
|
||||
// always set default channel order to keep query key stable
|
||||
if (!queryParams.order && channel) {
|
||||
queryParams.order = channel.config.contentOrder || 'popularity:desc';
|
||||
}
|
||||
|
||||
return queryParams;
|
||||
}
|
||||
Reference in New Issue
Block a user