- Sistemato INVITI alla App
- Completamento Profilo - Registrazione tramite Invito, senza richiedere conferma email.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user