Add internet radio (#1384)

This commit is contained in:
Jeff
2025-12-13 21:26:33 -08:00
committed by GitHub
parent f61d34c340
commit 7ed847fecb
46 changed files with 2229 additions and 118 deletions
@@ -0,0 +1,36 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '/@/renderer/api';
import { queryKeys } from '/@/renderer/api/query-keys';
import { MutationHookArgs } from '/@/renderer/lib/react-query';
import {
CreateInternetRadioStationArgs,
CreateInternetRadioStationResponse,
} from '/@/shared/types/domain-types';
export const useCreateRadioStation = (args: MutationHookArgs) => {
const { options } = args || {};
const queryClient = useQueryClient();
return useMutation<
CreateInternetRadioStationResponse,
AxiosError,
CreateInternetRadioStationArgs,
null
>({
mutationFn: (args) => {
return api.controller.createInternetRadioStation({
...args,
apiClientProps: { serverId: args.apiClientProps.serverId },
});
},
onSuccess: (_args, variables) => {
queryClient.invalidateQueries({
exact: false,
queryKey: queryKeys.radio.list(variables.apiClientProps.serverId),
});
},
...options,
});
};
@@ -0,0 +1,36 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '/@/renderer/api';
import { queryKeys } from '/@/renderer/api/query-keys';
import { MutationHookArgs } from '/@/renderer/lib/react-query';
import {
DeleteInternetRadioStationArgs,
DeleteInternetRadioStationResponse,
} from '/@/shared/types/domain-types';
export const useDeleteRadioStation = (args: MutationHookArgs) => {
const { options } = args || {};
const queryClient = useQueryClient();
return useMutation<
DeleteInternetRadioStationResponse,
AxiosError,
DeleteInternetRadioStationArgs,
null
>({
mutationFn: (args) => {
return api.controller.deleteInternetRadioStation({
...args,
apiClientProps: { serverId: args.apiClientProps.serverId },
});
},
onSuccess: (_args, variables) => {
queryClient.invalidateQueries({
exact: false,
queryKey: queryKeys.radio.list(variables.apiClientProps.serverId),
});
},
...options,
});
};
@@ -0,0 +1,36 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '/@/renderer/api';
import { queryKeys } from '/@/renderer/api/query-keys';
import { MutationHookArgs } from '/@/renderer/lib/react-query';
import {
UpdateInternetRadioStationArgs,
UpdateInternetRadioStationResponse,
} from '/@/shared/types/domain-types';
export const useUpdateRadioStation = (args: MutationHookArgs) => {
const { options } = args || {};
const queryClient = useQueryClient();
return useMutation<
UpdateInternetRadioStationResponse,
AxiosError,
UpdateInternetRadioStationArgs,
null
>({
mutationFn: (args) => {
return api.controller.updateInternetRadioStation({
...args,
apiClientProps: { serverId: args.apiClientProps.serverId },
});
},
onSuccess: (_args, variables) => {
queryClient.invalidateQueries({
exact: false,
queryKey: queryKeys.radio.list(variables.apiClientProps.serverId),
});
},
...options,
});
};