feat: Enhance Stripe account configuration UI and update translations in ProfilePage.vue

This commit is contained in:
2025-04-24 03:48:37 -04:00
parent c16dddb8dd
commit bb39a06c60
2 changed files with 58 additions and 11 deletions

View File

@@ -256,12 +256,18 @@ function downloadQRCode() {
{{ t('payment-information') }} {{ t('payment-information') }}
</div> </div>
<!-- STRIPE --> <div class="content">
<button class="action" @click="openDialog('ChangeStripeIdDialog')"> <div class="stripe-status">
<span class="label">{{ t('stripeAccountId') }}</span> <span class="label">{{ t('stripeStatus') }}</span>
<span class="value">{{ creatorProfileStore.creator.stripeId }}</span> <span class="value" :class="{ 'configured': creatorProfileStore.creator.acceptDonation }">
<span class="chevron"><v-icon>mdi-chevron-right</v-icon></span> {{ creatorProfileStore.creator.acceptDonation ? t('configured') : t('notConfigured') }}
</span>
<button class="configure-stripe-button" @click="openDialog('ChangeStripeIdDialog')">
<v-icon>mdi-credit-card</v-icon>
{{ t('configureStripe') }}
</button> </button>
</div>
</div>
</div> </div>
@@ -516,6 +522,30 @@ function downloadQRCode() {
@apply hover:bg-hutopySecondary; @apply hover:bg-hutopySecondary;
@apply transition-colors duration-300; @apply transition-colors duration-300;
} }
.stripe-status {
@apply flex flex-row items-center w-full p-3 rounded-lg;
@apply bg-hSurface;
@apply cursor-default;
@apply transition-colors duration-300;
}
.stripe-status .value {
@apply text-hOnBackground flex-1 text-center;
@apply flex items-center justify-center;
}
.stripe-status .value.configured {
@apply text-green-500;
}
.configure-stripe-button {
@apply flex items-center justify-center gap-2 px-4 py-2 rounded-lg;
@apply bg-hutopyPrimary text-hOnPrimary;
@apply hover:bg-hutopySecondary;
@apply transition-colors duration-300;
@apply ml-4;
}
</style> </style>
<i18n> <i18n>
@@ -538,7 +568,12 @@ function downloadQRCode() {
"qrCode": "QR Code", "qrCode": "QR Code",
"qrCodeDescription": "Print this QR code to share your Hutopy with the world! Perfect for business cards, social media, and promotional materials.", "qrCodeDescription": "Print this QR code to share your Hutopy with the world! Perfect for business cards, social media, and promotional materials.",
"downloadQRCode": "Download QR Code", "downloadQRCode": "Download QR Code",
"payment-information": "Payment Information" "payment-information": "Payment Information",
"stripeStatus": "Stripe Status",
"configured": "Configured",
"notConfigured": "Not Configured",
"notSet": "Not Set",
"configureStripe": "Configure Stripe Account"
}, },
"fr": { "fr": {
"personalInfo": "Informations Personnelles", "personalInfo": "Informations Personnelles",
@@ -558,7 +593,12 @@ function downloadQRCode() {
"qrCode": "Code QR", "qrCode": "Code QR",
"qrCodeDescription": "Imprimez ce code QR pour partager votre Hutopy avec le monde ! Parfait pour les cartes de visite, les réseaux sociaux et les supports promotionnels.", "qrCodeDescription": "Imprimez ce code QR pour partager votre Hutopy avec le monde ! Parfait pour les cartes de visite, les réseaux sociaux et les supports promotionnels.",
"downloadQRCode": "Télécharger le Code QR", "downloadQRCode": "Télécharger le Code QR",
"payment-information": "Informations de Paiement" "payment-information": "Informations de Paiement",
"stripeStatus": "État de Stripe",
"configured": "Configuré",
"notConfigured": "Non Configuré",
"notSet": "Non Défini",
"configureStripe": "Configurer le Compte Stripe"
}, },
"es": { "es": {
"personalInfo": "Información Personal", "personalInfo": "Información Personal",
@@ -578,7 +618,12 @@ function downloadQRCode() {
"qrCode": "Código QR", "qrCode": "Código QR",
"qrCodeDescription": "¡Imprime este código QR para compartir tu Hutopy con el mundo! Perfecto para tarjetas de presentación, redes sociales y materiales promocionales.", "qrCodeDescription": "¡Imprime este código QR para compartir tu Hutopy con el mundo! Perfecto para tarjetas de presentación, redes sociales y materiales promocionales.",
"downloadQRCode": "Descargar Código QR", "downloadQRCode": "Descargar Código QR",
"payment-information": "Información de Pago" "payment-information": "Información de Pago",
"stripeStatus": "Estado de Stripe",
"configured": "Configurado",
"notConfigured": "No Configurado",
"notSet": "No Establecido",
"configureStripe": "Configurar Cuenta Stripe"
} }
} }
</i18n> </i18n>

View File

@@ -2,6 +2,7 @@
import {useClient} from '@/plugins/api.js'; import {useClient} from '@/plugins/api.js';
import {ref} from 'vue'; import {ref} from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import {useCreatorProfileStore} from '@/stores/creatorProfileStore.js';
const props = defineProps({ const props = defineProps({
creator: { creator: {
@@ -11,8 +12,9 @@ const props = defineProps({
const emits = defineEmits(['closeRequested']); const emits = defineEmits(['closeRequested']);
const stripeId = ref(props.creator.stripeId); const stripeId = ref('');
const { t } = useI18n(); const { t } = useI18n();
const creatorProfileStore = useCreatorProfileStore();
const client = useClient(); const client = useClient();
@@ -22,7 +24,7 @@ const save = async () => {
stripeAccountId: stripeId.value, stripeAccountId: stripeId.value,
}); });
props.creator.stripeId = stripeId.value; await creatorProfileStore.fetchCreatorProfile();
emits('closeRequested'); emits('closeRequested');
} catch (error) { } catch (error) {
console.error('Error saving stripe id:', error); console.error('Error saving stripe id:', error);