'use server' import { getSessionData } from '@/app/actions/session'; import { API_BASE_URL, bankCardFormSchema } from '@/app/actions/definitions'; import { FormState } from '@/app/actions/auth'; export async function fetchReferralsLevels() { const token = await getSessionData('token'); try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 30003, message_body: { action: 'levels', token: token, } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_code === 0) { return { referrals: parsed.message_body, error: null } } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return { referrals: [], error: error } } } export async function fetchReferralUserStats() { const token = await getSessionData('token'); try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 30003, message_body: { action: 'userStats', token: token, } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_code === 0) { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return { error: error } } } export async function fetchReferralInvitees() { const token = await getSessionData('token'); try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 30003, message_body: { action: 'invitees', token: token, pageSize: 100, pageNumber: 0 } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_code === 0) { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return { error: error } } } export async function referralRefill() { const token = await getSessionData('token'); try { const response = await fetch(`${API_BASE_URL}/api/v1/data`, { method: 'POST', body: JSON.stringify({ version: 1, msg_id: 30003, message_body: { action: 'refill', token: token, amount: 2000, } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); if (response.ok) { console.log('referralRefill'); console.log({ action: 'refill', token: token, amount: 2000, }) let parsed = await response.json(); console.log(parsed); if (parsed.message_code === 0) { return parsed.message_body; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return { error: error } } } export async function getUserPayments() { const token = await getSessionData('token'); console.log('getUserPayments'); try { const response = await fetch(`${API_BASE_URL}/api/payouts/requests`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}`, } }); if (response.ok) { const parsed = await response.json(); console.log(parsed); return parsed; } else { return null } } catch (error) { return null } } export type PayoutMethodFormState = { previousState: { bankCard?: string | undefined; paymentsType?: 'bank-card' | 'bank-transfer' | 'on-account-balance'; } | undefined, error: Record | null }; export async function addPayoutMethod( state: PayoutMethodFormState | undefined, formData: FormData, ): Promise { const token = await getSessionData('token'); const bankCard = formData.get('bankCard') as string || ''; const paymentsType = formData.get('paymentsType') as 'bank-card' | 'bank-transfer' | 'on-account-balance'; const validatedFields = bankCardFormSchema.safeParse({ bankCard }); if (!validatedFields.success) { const errors: Record = {} JSON.parse(validatedFields.error.message).forEach((obj: { message: string, path: string }) => { if (errors[obj.path[0]]) { errors[obj.path[0]] = `${errors[obj.path[0]]} ${obj.message}`; } else { errors[obj.path[0]] = obj.message; } }); return { previousState: { bankCard }, error: errors }; } /* return { previousState: { bankCard, paymentsType }, error: null }; */ try { const { bankCard } = validatedFields.data; const response = await fetch(`${API_BASE_URL}/api/payouts/payout-method/card`, { method: 'POST', body: JSON.stringify({ "cardNumber": bankCard.replaceAll(' ', '') }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}`, } }); console.log(response); if (response.ok) { const parsed = await response.json(); console.log(parsed); return { previousState: { bankCard, paymentsType }, error: null }; } else { throw 'error-save'; } } catch (error: unknown) { const errors: Record = {}; errors['server'] = 'error-save' if (error) { const typedError = error as any; } return { previousState: { bankCard, paymentsType }, error: errors }; } }