← marzneshin
/
v0.6.3
/
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}