import React, { useEffect, useState } from 'react'; import { Alert, View, StyleSheet, Linking } from 'react-native'; import { Input, Button, Text } from '@rneui/themed'; import { supabase } from '../../lib/supabase'; // Assicurati che il percorso sia corretto export default function ResetPass() { const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [email, setEmail] = useState(''); // Gestione degli eventi di autenticazione useEffect(() => { const handleDeepLink = (event: { url: string }) => { console.log('Deep link ricevuto:', event.url); try { const url = new URL(event.url); const token = url.searchParams.get('token'); // Estrai il token dall'URL const email = url.searchParams.get('email'); // Estrai l'email dall'URL console.log('Token estratto:', token); console.log('Email estratta:', email); if (token && email) { // Usa il token e l'email per verificare l'OTP supabase.auth .verifyOtp({ email, token, type: 'recovery' }) .then(({ data, error }) => { if (error) { console.error('Errore durante la verifica del token:', error); Alert.alert('Errore', 'Token non valido o scaduto.'); } else { console.log('Token verificato con successo:', data); setEmail(data.user?.email || ''); } }); } else { console.error('Token o email non trovati nell\'URL.'); Alert.alert('Errore', 'Token o email non trovati nell\'URL.'); } } catch (error) { console.error('Errore durante il parsing dell\'URL:', error); Alert.alert('Errore', 'Formato URL non valido.'); } }; const fetchInitialURL = async () => { const initialUrl = await Linking.getInitialURL(); console.log('Initial URL ricevuta:', initialUrl); if (initialUrl) { handleDeepLink({ url: initialUrl }); } }; // Aggiungi il listener per i deep link const subscription = Linking.addEventListener('url', handleDeepLink); // Gestisci il deep link iniziale fetchInitialURL(); // Pulisci il listener return () => { subscription.remove(); }; }, []); // Aggiornamento della password const handlePasswordReset = async () => { if (!newPassword || !confirmPassword) { Alert.alert('Errore', 'Compila tutti i campi'); return; } if (newPassword !== confirmPassword) { Alert.alert('Errore', 'Le password non coincidono'); return; } if (newPassword.length < 6) { Alert.alert('Errore', 'La password deve essere di almeno 6 caratteri'); return; } setLoading(true); try { const { error } = await supabase.auth.updateUser({ password: newPassword, }); if (error) { Alert.alert('Errore', error.message); } else { Alert.alert('Successo', 'La password è stata reimpostata correttamente.'); } } catch (error) { console.error('Errore durante il reset della password:', error); Alert.alert('Errore', 'Si è verificato un errore imprevisto.'); } finally { setLoading(false); } }; return ( Reset Password Email: {email}