import BaseService from '../index'; import type { IPayment, IUpgradePlan } from './user.interface'; import { ME, GET_USERS, DELETE_USER, SET_CURRENCY, REFRESH_TOKEN, GET_AGENCY_USERS, LOGIN_AS_AGENCY_USERS, READ_ALL_NOTIFICATIONS, DEACTIVATE_AGENCY_USERS, PAYMENT_CHECKOUT, CANCEL_SUBSCRIPTION, PAYMENT_STATUS, UPDATE_SUBSCRIPTION_PLAN_TYPE, UPDATE_PREVIEW_MODE, VERIFY_USER, } from './user.routes'; /** * return user data * @param { string } token * @return { Promise } */ export const getUser = async (): Promise => await BaseService.get(ME); /** * return user notifications * @return { Promise } */ export const setReadNotifications = async (): Promise => await BaseService.get(READ_ALL_NOTIFICATIONS); /** * set store on user onboading * @param {string} userType * @return { Promise } */ export const getUsers = async ( userType: 'AGENCY' | 'NORMAL' | 'CREATED_BY_AGENCY' ): Promise => { if (userType === 'AGENCY') { return await BaseService.get(GET_AGENCY_USERS); } else { return await BaseService.get(GET_USERS); } }; /** * set store on user onboading * @param {string} is * @param {string} userType * @return { Promise } */ export const loginAsAgency = async ( id: string, userType: string ): Promise => await BaseService.post(LOGIN_AS_AGENCY_USERS + id, { user_type: userType }); /** * Delete user * @param {string} id * @param {string} userType * @return { Promise } */ export const deleteUser = async ( id: string, userType: 'AGENCY' | 'NORMAL' | 'CREATED_BY_AGENCY' ): Promise => { if (userType === 'AGENCY') { return await BaseService.put(DEACTIVATE_AGENCY_USERS + id, {}); } return await BaseService.delete(DELETE_USER + id); }; /** * save currency * @param {string} currency * @return { Promise } */ export const saveCurrency = async (currency: string): Promise => await BaseService.post(SET_CURRENCY, { currency }); /** * refresh token * @return { Promise } */ export const refreshLocalToken = async (): Promise => await BaseService.post(REFRESH_TOKEN, {}); /** * initialize payment * @param {IPayment} data * @return { Promise } */ export const paymentCheckout = async ({ cancel_url, price_id, success_url, }: IPayment): Promise => await BaseService.post(PAYMENT_CHECKOUT, { price_id, success_url, cancel_url, }); /** * cancel subscription * @return { Promise } */ export const cancelSubscription = async ( subscription_id: string ): Promise => await BaseService.post(CANCEL_SUBSCRIPTION, { subscription_id }); /** * check payment status * @param {string} session_id * @return { Promise } */ export const checkPaymentStatus = async (session_id: string): Promise => await BaseService.get(PAYMENT_STATUS + session_id); /** * * @param {any} data * @return {Promise} */ export const updatePlanType = async ({ plan, plan_period, }: IUpgradePlan): Promise => { return await BaseService.patch(UPDATE_SUBSCRIPTION_PLAN_TYPE, { plan, plan_period, }); }; /** * verify user email and phone * @param {object} params * @param {string} params.email * @param {string} params.phone_number * @return { Promise } */ export const verifyUser = async ({ email, phone_number, }: { email: string; phone_number: string; }): Promise => { return await BaseService.post(VERIFY_USER, { email, phone_number }); }; /** * update preview mode * @param {object} params * @param {string} params.token * @param {boolean} params.preview_mode * @return { Promise } */ export const updatePreviewMode = async ({ // token, preview_mode, }: { token: string; preview_mode: boolean; }): Promise => { return await BaseService.patch(UPDATE_PREVIEW_MODE, { preview_mode }); };