import { usePaymentStore } from '#lib/stores/payment' /** * Import types from Nadal. */ import type { PaymentWithdrawBankRequestPayload } from '@kira-dancer/nadal' import { useDepositData, useNadal, usePromotion, useUserBank, useWithdrawError, } from '#lib/composables' import type { BaseNadalResponse } from '#lib/types' import { valueToNumber } from '#lib/utils' import { computed } from 'vue' /** * A composable function for managing bank withdrawals. * @returns An object containing the functions and computed properties related to bank withdrawals. * @namespace */ export function useWithdrawBank() { const { payment } = useNadal() const store = usePaymentStore() const { isUsingPromotion } = usePromotion() const { userBanks } = useUserBank() const { fetchWithdrawBanks } = useDepositData() const { openWithdrawErrorModal } = useWithdrawError() /** * Fetches the withdraw banks data. */ const fetchData = async () => { await fetchWithdrawBanks() } /** * The computed property for withdraw banks. */ const withdrawBanks = computed(() => { return store.withdrawBanks }) /** * Creates a new bank withdrawal. * * PaymentWithdrawBankRequestPayload type is imported from the Nadal module. * @param payload - The payload for the withdrawal request. * @returns A promise that resolves to the response from the withdrawal request. */ const onCreateWithdrawBanking = async ( payload: PaymentWithdrawBankRequestPayload, ): Promise => { if (isUsingPromotion.value) { openWithdrawErrorModal() return Promise.resolve(undefined) } payload.amount = valueToNumber(payload.amount, 1000) return await payment.withdrawBank< PaymentWithdrawBankRequestPayload, BaseNadalResponse >(payload) } return { fetchData, onCreateWithdrawBanking, withdrawBanks, userBanks, } }