- Sistemato INVITI alla App

- Completamento Profilo
- Registrazione tramite Invito, senza richiedere conferma email.
This commit is contained in:
Surya Paolo
2025-11-18 23:56:08 +01:00
parent fc569192e7
commit 4985e7565d
98 changed files with 2209 additions and 3595720 deletions

View File

@@ -3,6 +3,7 @@ import { useQuasar } from 'quasar';
import { useInvitaAmicoStore } from '../../stores/useInvitaAmicoStore';
import type { InvitoAmicoForm } from '../../types/invita-amico.types.ts';
import { tools } from 'app/src/store/Modules/tools';
import { useI18n } from 'vue-i18n';
// Chiave localStorage
const MESSAGGIO_STORAGE_KEY = 'invita-amico-messaggio-personalizzato';
@@ -15,10 +16,12 @@ export default defineComponent({
setup(props, { emit }) {
// Composables
const $q = useQuasar();
const { t } = useI18n();
const invitaStore = useInvitaAmicoStore();
// State
const mostraCronologia = ref(false);
const metodoSelezionato = ref<'email' | 'telegram' | null>(null);
const form = reactive<InvitoAmicoForm & { usernameInvitante?: string }>({
email: '',
messaggio: '',
@@ -29,6 +32,20 @@ export default defineComponent({
// METHODS
// ==========================================
/**
* Seleziona il metodo di invio (email o telegram)
*/
const selezionaMetodo = (metodo: 'email' | 'telegram') => {
metodoSelezionato.value = metodo;
};
/**
* Torna alla schermata di scelta iniziale
*/
const tornaAllaScelta = () => {
metodoSelezionato.value = null;
};
/**
* Invia invito via email usando lo store Pinia
*/
@@ -51,7 +68,7 @@ export default defineComponent({
message: 'Invito inviato con successo! 🎉',
caption: `L'email è stata inviata a ${form.email}`,
icon: 'check_circle',
timeout: 3000,
timeout: 7000,
actions: [
{
label: 'Vedi cronologia',
@@ -86,14 +103,14 @@ export default defineComponent({
const onInviaTelegram = async () => {
emit('telegram-click');
const success = await invitaStore.inviaInvitoTelegram(form.messaggio);
const success = await invitaStore.inviaInvitoTelegram($q, t);
if (success) {
$q.notify({
type: 'positive',
message: 'Messaggio inviato via Telegram! ✈️',
icon: 'telegram',
timeout: 2000,
timeout: 4000,
});
} else {
$q.notify({
@@ -122,7 +139,7 @@ export default defineComponent({
type: 'info',
message: 'Cronologia cancellata',
icon: 'delete',
timeout: 2000,
timeout: 3000,
});
});
};
@@ -168,6 +185,9 @@ export default defineComponent({
// RETURN
return {
mostraCronologia,
metodoSelezionato,
selezionaMetodo,
tornaAllaScelta,
form,
onInviaEmail,
onInviaTelegram,