diff --git a/src/components/ServiceItem.tsx b/src/components/ServiceItem.tsx index 49808c8..388846f 100644 --- a/src/components/ServiceItem.tsx +++ b/src/components/ServiceItem.tsx @@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next' import { ItemServiceType } from '../pages/service/types/ServiecTypes' import moment from 'moment-jalaali' import { NumberFormat } from '../config/func' -import { useDirectLogin, useDirectLoginDkala, useGetDmenuSubscription, useGetDkalaSubscription } from '../pages/service/hooks/useServiceData' +import { useDirectLogin, useDirectLoginDkala, useDirectLoginDpage, useGetDmenuSubscription, useGetDkalaSubscription } from '../pages/service/hooks/useServiceData' import { toast } from './Toast' import { ErrorType } from '../helpers/types' @@ -32,7 +32,9 @@ const ServiceItem: FC = (props: Props) => { const isDmenu = item?.slug === 'Dmenu' const isDkala = item?.slug === 'Dkala' + const isDpage = item?.slug === 'Dpage' const isDmenuOrDkala = isDmenu || isDkala + const needsDirectLogin = isDmenuOrDkala || isDpage const { data: dmenuSubscription, isPending: isDmenuPending, isError: isDmenuError } = useGetDmenuSubscription(isChecked && isDmenu && props.isLinkPanel ? props.subscriptionId! : '') const { data: dkalaSubscription, isPending: isDkalaPending, isError: isDkalaError } = useGetDkalaSubscription(isChecked && isDkala && props.isLinkPanel ? props.subscriptionId! : '') const subscription = isDmenu ? dmenuSubscription : dkalaSubscription @@ -40,6 +42,7 @@ const ServiceItem: FC = (props: Props) => { const isError = isDmenu ? isDmenuError : isDkalaError const { mutate: directLogin } = useDirectLogin() const { mutate: directLoginDkala } = useDirectLoginDkala() + const { mutate: directLoginDpage } = useDirectLoginDpage() const getRemainingDays = (endDate: string): number => { const now = moment() @@ -70,14 +73,14 @@ const ServiceItem: FC = (props: Props) => { } const handleDirectLogin = () => { - if (!isDmenuOrDkala) { + if (!needsDirectLogin) { window.open(item.link, '_blank') return } if (!props.subscriptionId) { return } - const doLogin = isDkala ? directLoginDkala : directLogin + const doLogin = isDkala ? directLoginDkala : isDpage ? directLoginDpage : directLogin doLogin(props.subscriptionId, { onSuccess: (data) => { window.open(item.link + `?token=${data?.data?.tokens?.accessToken?.token}&refreshToken=${data?.data?.tokens?.refreshToken?.token}`, '_blank') diff --git a/src/pages/service/hooks/useServiceData.ts b/src/pages/service/hooks/useServiceData.ts index a017221..d4f4825 100644 --- a/src/pages/service/hooks/useServiceData.ts +++ b/src/pages/service/hooks/useServiceData.ts @@ -131,3 +131,10 @@ export const useDirectLogin = () => { mutationKey: ["direct-login"], }); }; + +export const useDirectLoginDpage = () => { + return useMutation({ + mutationFn: api.directLoginDpage, + mutationKey: ["direct-login-dpage"], + }); +}; diff --git a/src/pages/service/service/ServiceService.ts b/src/pages/service/service/ServiceService.ts index f027115..fc2b0db 100644 --- a/src/pages/service/service/ServiceService.ts +++ b/src/pages/service/service/ServiceService.ts @@ -126,3 +126,12 @@ export const directLogin = async ( ); return data; }; + +export const directLoginDpage = async ( + subscriptionId: string, +): Promise => { + const { data } = await axios.post(`/dpage/login`, { + userSubscriptionId: subscriptionId, + }); + return data; +};