Feature/improve typing of metadata related logic (#268)
* Improve metadata typing * Rename types Still included the "I" prefix for interfaces * Improve typing in setting util files
This commit is contained in:
@@ -1,30 +1,22 @@
|
||||
import { useQuery } from 'util/client';
|
||||
import { getMetadataFrom } from 'util/metadata';
|
||||
import { IMetadata, ISearchSettings, MetadataKeyValuePair } from 'typings';
|
||||
import { Metadata, ISearchSettings } from 'typings';
|
||||
|
||||
export const getDefaultSettings = () =>
|
||||
({
|
||||
ignoreFilters: false,
|
||||
} as ISearchSettings);
|
||||
|
||||
const getSearchSettingsWithDefaultValueFallback = (
|
||||
meta?: IMetadata,
|
||||
defaultSettings?: ISearchSettings,
|
||||
applyMetadataMigration: boolean = true,
|
||||
): ISearchSettings => ({
|
||||
...(getMetadataFrom(
|
||||
{ meta },
|
||||
Object.entries(defaultSettings ?? getDefaultSettings()) as MetadataKeyValuePair[],
|
||||
applyMetadataMigration,
|
||||
) as unknown as ISearchSettings),
|
||||
export const getDefaultSettings = (): ISearchSettings => ({
|
||||
ignoreFilters: false,
|
||||
});
|
||||
|
||||
const getSearchSettingsWithDefaultValueFallback = (
|
||||
meta?: Metadata,
|
||||
defaultSettings: ISearchSettings = getDefaultSettings(),
|
||||
applyMetadataMigration: boolean = true,
|
||||
): ISearchSettings => getMetadataFrom({ meta }, defaultSettings, applyMetadataMigration);
|
||||
export const useSearchSettings = (): {
|
||||
metadata?: IMetadata;
|
||||
metadata?: Metadata;
|
||||
settings: ISearchSettings;
|
||||
loading: boolean;
|
||||
} => {
|
||||
const { data: meta, loading } = useQuery<IMetadata>('/api/v1/meta');
|
||||
const { data: meta, loading } = useQuery<Metadata>('/api/v1/meta');
|
||||
const settings = getSearchSettingsWithDefaultValueFallback(meta);
|
||||
|
||||
return { metadata: meta, settings, loading };
|
||||
|
||||
Reference in New Issue
Block a user