gitscope
← marzneshin / v0.7.4 / dashboard/src/modules/settings/subscription/services/subscription-settings.mutate.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/settings/subscription/services/subscription-settings.mutate.ts · TypeScript
Blame Raw
 1import { NodeType } from "@marzneshin/modules/nodes";
 2import { useMutation } from "@tanstack/react-query";
 3import { fetch, queryClient } from "@marzneshin/common/utils";
 4import { toast } from "sonner";
 5import i18n from "@marzneshin/features/i18n";
 6import {
 7    subscriptionSettingsQueryKey,
 8    SubscriptionSettingsType
 9} from "@marzneshin/modules/settings/subscription";
10
11export async function updateSubscriptionSettings(settings: SubscriptionSettingsType): Promise<NodeType> {
12    return fetch("/system/settings/subscription", { method: 'put', body: settings }).then((node) => {
13        return node;
14    });
15}
16
17const handleError = () => {
18    toast.error(
19        i18n.t('events.update.error'),
20    )
21}
22
23const handleSuccess = () => {
24    toast.success(
25        i18n.t('events.update.success.title', { name: "Subscription Settings" }),
26        {
27            description: i18n.t('events.update.success.desc')
28        })
29    queryClient.invalidateQueries({ queryKey: subscriptionSettingsQueryKey })
30}
31
32export const useSubscriptionSettingsMutation = () => {
33    return useMutation({
34        mutationKey: subscriptionSettingsQueryKey,
35        mutationFn: updateSubscriptionSettings,
36        onError: handleError,
37        onSuccess: handleSuccess,
38    })
39}