Correct bugs and adjust Buyer form.

This commit is contained in:
Filipe Soccol
2024-12-03 16:18:10 -03:00
parent c90f468d3c
commit 0f17a67e00
9 changed files with 113 additions and 59 deletions

View File

@@ -1,13 +1,14 @@
<script setup lang="ts">
import { pix } from "@/utils/QrCodePix";
import { onMounted, onUnmounted, ref } from "vue";
import CustomButton from "@/components/CustomButton/CustomButton.vue";
import CustomModal from "@/components//CustomModal/CustomModal.vue";
import QRCode from "qrcode";
// props and store references
const props = defineProps({
sellerId: String,
amount: Number,
qrcode: String,
});
const windowSize = ref<number>(window.innerWidth);

View File

@@ -34,6 +34,7 @@ const tokenValue = ref<number>(0);
const enableConfirmButton = ref<boolean>(false);
const hasLiquidity = ref<boolean>(true);
const validDecimals = ref<boolean>(true);
const identification = ref<string>("");
const selectedDeposits = ref<ValidDeposit[]>();
import ChevronDown from "@/assets/chevronDown.svg";
@@ -104,9 +105,17 @@ const verifyLiquidity = (): void => {
};
const enableOrDisableConfirmButton = (): void => {
enableConfirmButton.value =
!!selectedDeposits.value &&
!!selectedDeposits.value.find((d) => d.network === networkName.value);
if (!selectedDeposits.value) {
enableConfirmButton.value = false;
return;
}
if (!selectedDeposits.value.find((d) => d.network === networkName.value)) {
enableConfirmButton.value = false;
return;
}
enableConfirmButton.value = true;
};
watch(networkName, (): void => {
@@ -117,6 +126,18 @@ watch(networkName, (): void => {
watch(walletAddress, (): void => {
verifyLiquidity();
});
// Add form submission handler
const handleSubmit = async (e: Event): Promise<void> => {
e.preventDefault();
if (!enableConfirmButton.value) return;
if (walletAddress.value) {
await emitConfirmButton();
} else {
await connectAccount();
}
};
</script>
<template>
@@ -132,7 +153,7 @@ watch(walletAddress, (): void => {
tokens após realizar o Pix</span
>
</div>
<div class="main-container">
<form class="main-container" @submit="handleSubmit">
<div class="backdrop-blur -z-10 w-full h-full"></div>
<div
class="flex flex-col w-full bg-white sm:px-10 px-6 py-5 rounded-lg border-y-10"
@@ -140,14 +161,16 @@ watch(walletAddress, (): void => {
<div class="flex justify-between sm:w-full items-center">
<input
type="number"
name="tokenAmount"
class="border-none outline-none text-lg text-gray-900"
v-bind:class="{
'font-semibold': tokenValue != undefined,
'text-xl': tokenValue != undefined,
}"
@input="debounce(handleInputEvent, 500)($event)"
placeholder="0 "
placeholder="0"
step=".01"
required
/>
<div class="relative overflow-visible">
<button
@@ -260,18 +283,33 @@ watch(walletAddress, (): void => {
>
</div>
</div>
<CustomButton
v-if="!walletAddress"
:text="'Conectar carteira'"
@buttonClicked="connectAccount()"
/>
<div
class="flex flex-col w-full bg-white sm:px-10 px-6 py-4 rounded-lg border-y-10"
>
<input
type="text"
v-model="identification"
maxlength="14"
:pattern="'^\\d{11}$|^\\d{14}$'"
class="border-none outline-none sm:text-lg text-sm text-gray-900 w-full"
placeholder="Digite seu CPF ou CNPJ (somente números)"
required
/>
</div>
<!-- Action buttons -->
<CustomButton
v-if="walletAddress"
:text="'Confirmar compra'"
:is-disabled="!enableConfirmButton"
@buttonClicked="emitConfirmButton()"
type="submit"
text="Confirmar Oferta"
/>
</div>
<CustomButton
v-else
text="Conectar carteira"
@buttonClicked="connectAccount()"
/>
</form>
</div>
</template>
@@ -306,4 +344,10 @@ input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
-webkit-appearance: none;
}
.custom-button {
@apply w-full py-3 px-6 rounded-lg font-semibold text-white bg-indigo-600
hover:bg-indigo-700 disabled:bg-gray-400 disabled:cursor-not-allowed
transition-colors duration-200;
}
</style>

View File

@@ -9,6 +9,10 @@ import { getTokenImage } from "@/utils/imagesPath";
import { useOnboard } from "@web3-onboard/vue";
import ChevronDown from "@/assets/chevron.svg";
// Import the bank list
import bankList from "@/utils/files/isbpList.json";
import type { Participant } from "@/utils/bbPay";
// Define Bank interface
interface Bank {
ISPB: string;
@@ -38,10 +42,6 @@ const bankSearchQuery = ref<string>("");
const showBankList = ref<boolean>(false);
const selectedBank = ref<Bank | null>(null);
// Import the bank list
import bankList from "@/utils/files/isbpList.json";
import { Participant } from "@/utils/bbPay";
const filteredBanks = computed(() => {
if (!bankSearchQuery.value) return [];
return bankList