import { AUTH_API } from '#lib/configs' import { useAPI } from '#lib/composables' import type { UserStore, UserLoginRequest, BaseResponse, GetOTPByEmailRequest, VerifyOTPByEmailRequest, ResetPasswordAPIResponse, CheckUsernameRequest } from '#lib/types' import type { ResetPasswordRequestPayload } from '@kira-dancer/nadal' export function useAuthService() { /** * Makes a POST request to log in a user. * * @param user - The login request payload. * @returns {Promise>>} - The API response. */ const requestLogin = async (user: UserLoginRequest) => { return useAPI>(AUTH_API.LOG_IN, { method: 'POST', body: user, }) } /** * Makes a GET request to log out a user. * * @returns {Promise>>} - The API response. */ const requestLogout = async () => { return useAPI>(AUTH_API.LOG_OUT, { method: 'GET', }) } /** * Makes a PUT request to Reset Password a user. * */ const requestResetPassword = async ( token: string, body: ResetPasswordRequestPayload, ) => { return useAPI>(AUTH_API.UPDATE_RESET_PASSWORD, { method: 'PUT', headers: { token, }, body }) } /** * Makes a POST request to OTP Code a email. * * @returns {Promise>>} - The API response. */ const requestOTPCode = async (email: string) => { return useAPI(AUTH_API.FETCH_OTP_VIA_EMAIL, { method: 'POST', body: { email }, }) } /** * Makes a POST request to Verify OTP Code a email. * * @returns {Promise>>} - The API response. */ const requestVerifyOTPCode = async (code: string) => { return useAPI(AUTH_API.VERIFY_OTP_VIA_EMAIL, { method: 'POST', body: { code }, }) } /** * Makes a POST request to check if username exists. * * @returns {Promise>>} - The API response. */ const requestCheckUsername = async (username: string) => { return useAPI(AUTH_API.CHECK_USERNAME_EXISTS, { method: 'POST', body: { username }, }) } return { requestLogin, requestLogout, requestOTPCode, requestVerifyOTPCode, requestResetPassword, requestCheckUsername } }