1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Add key to named configuration hook

This commit is contained in:
viown 2025-03-01 21:32:15 +03:00
parent 1ab2197200
commit 7713e31b44
3 changed files with 11 additions and 9 deletions

View file

@ -15,7 +15,7 @@ import Page from 'components/Page';
import ServerConnections from 'components/ServerConnections'; import ServerConnections from 'components/ServerConnections';
import { getConfigurationApi } from '@jellyfin/sdk/lib/utils/api/configuration-api'; import { getConfigurationApi } from '@jellyfin/sdk/lib/utils/api/configuration-api';
import { QUERY_KEY as CONFIG_QUERY_KEY, useConfiguration } from 'hooks/useConfiguration'; import { QUERY_KEY as CONFIG_QUERY_KEY, useConfiguration } from 'hooks/useConfiguration';
import { fetchNamedConfiguration, QUERY_KEY as NAMED_CONFIG_QUERY_KEY, useNamedConfiguration } from 'hooks/useNamedConfiguration'; import { QUERY_KEY as NAMED_CONFIG_QUERY_KEY, NamedConfiguration, useNamedConfiguration } from 'hooks/useNamedConfiguration';
import globalize from 'lib/globalize'; import globalize from 'lib/globalize';
import { type ActionFunctionArgs, Form, useActionData, useNavigation } from 'react-router-dom'; import { type ActionFunctionArgs, Form, useActionData, useNavigation } from 'react-router-dom';
import { ActionData } from 'types/actionData'; import { ActionData } from 'types/actionData';
@ -29,9 +29,11 @@ export const action = async ({ request }: ActionFunctionArgs) => {
const data = Object.fromEntries(formData); const data = Object.fromEntries(formData);
const { data: config } = await getConfigurationApi(api).getConfiguration(); const { data: config } = await getConfigurationApi(api).getConfiguration();
const namedConfig = await fetchNamedConfiguration(api, 'metadata');
namedConfig.UseFileCreationTimeForDateAdded = data.DateAddedBehavior.toString() === '1'; const metadataConfig: NamedConfiguration = {
UseFileCreationTimeForDateAdded: data.DateAddedBehavior.toString() === '1'
};
config.EnableFolderView = data.DisplayFolderView?.toString() === 'on'; config.EnableFolderView = data.DisplayFolderView?.toString() === 'on';
config.DisplaySpecialsWithinSeasons = data.DisplaySpecialsWithinSeasons?.toString() === 'on'; config.DisplaySpecialsWithinSeasons = data.DisplaySpecialsWithinSeasons?.toString() === 'on';
config.EnableGroupingIntoCollections = data.GroupMoviesIntoCollections?.toString() === 'on'; config.EnableGroupingIntoCollections = data.GroupMoviesIntoCollections?.toString() === 'on';
@ -41,13 +43,13 @@ export const action = async ({ request }: ActionFunctionArgs) => {
.updateConfiguration({ serverConfiguration: config }); .updateConfiguration({ serverConfiguration: config });
await getConfigurationApi(api) await getConfigurationApi(api)
.updateNamedConfiguration({ key: 'metadata', body: namedConfig }); .updateNamedConfiguration({ key: 'metadata', body: metadataConfig });
void queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [ CONFIG_QUERY_KEY ] queryKey: [ CONFIG_QUERY_KEY ]
}); });
void queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [ NAMED_CONFIG_QUERY_KEY ] queryKey: [ NAMED_CONFIG_QUERY_KEY, 'metadata' ]
}); });
return { return {

View file

@ -16,7 +16,7 @@ export const useConfiguration = () => {
const { api } = useApi(); const { api } = useApi();
return useQuery({ return useQuery({
queryKey: [QUERY_KEY], queryKey: [ QUERY_KEY ],
queryFn: ({ signal }) => fetchConfiguration(api!, { signal }), queryFn: ({ signal }) => fetchConfiguration(api!, { signal }),
enabled: !!api enabled: !!api
}); });

View file

@ -6,11 +6,11 @@ import type { AxiosRequestConfig } from 'axios';
export const QUERY_KEY = 'NamedConfiguration'; export const QUERY_KEY = 'NamedConfiguration';
interface NamedConfiguration { export interface NamedConfiguration {
[key: string]: unknown; [key: string]: unknown;
} }
export const fetchNamedConfiguration = async (api: Api, key: string, options?: AxiosRequestConfig) => { const fetchNamedConfiguration = async (api: Api, key: string, options?: AxiosRequestConfig) => {
const response = await getConfigurationApi(api).getNamedConfiguration({ key }, options); const response = await getConfigurationApi(api).getNamedConfiguration({ key }, options);
return response.data as unknown as NamedConfiguration; return response.data as unknown as NamedConfiguration;
@ -20,7 +20,7 @@ export const useNamedConfiguration = (key: string) => {
const { api } = useApi(); const { api } = useApi();
return useQuery({ return useQuery({
queryKey: [ QUERY_KEY ], queryKey: [ QUERY_KEY, key ],
queryFn: ({ signal }) => fetchNamedConfiguration(api!, key, { signal }), queryFn: ({ signal }) => fetchNamedConfiguration(api!, key, { signal }),
enabled: !!api enabled: !!api
}); });