Fix: Friend Request Flow

Branch: fix/friend-request-flow Data: 2026-03-19

Cosa cambia

1. Auto-creazione chat all’accettazione (stile TikTok)

Quando un utente accetta una richiesta di amicizia, viene automaticamente creata una chat diretta con il mittente — senza che nessuno dei due debba cercarsi in chat.

File modificato: lib/features/social/notifiers/social_notifier.dart

  • SocialNotifier ora riceve MessagingApiService come dipendenza
  • acceptFriendRequest() chiama _messagingService.createDirectChat(userId) in modalità fire-and-forget (.catchError()) dopo che l’accept è andato a buon fine
  • Se la creazione della chat fallisce, non interrompe il flusso di accettazione

2. Modello amici-only — rimozione Follower/Seguiti

File modificato: lib/features/profile/screens/public_profile_screen.dart

  • La stats row nel profilo pubblico mostra solo Amici (rimossi Follower e Seguiti)
  • Coerente con la decisione di prodotto (social-connection-model)

3. Self-profile guard

File modificato: lib/features/profile/screens/public_profile_screen.dart

  • Aggiunto getter _isSelf che confronta widget.userId con l’ID dell’utente autenticato
  • I pulsanti “Aggiungi” e “Messaggio” sono nascosti quando si visualizza il proprio profilo

Architettura

notifications_screen.dart
  → socialNotifierProvider.notifier.acceptFriendRequest(userId)
      → SocialRepository.acceptFriendRequest(userId)   [DB update]
      → MessagingApiService.createDirectChat(userId)   [fire & forget]
      → state update: pendingRequests ↓, friends ↑

Note

  • Le colonne followers_count / following_count rimangono nel DB per ora
  • La chat auto-creata usa la stessa logica di createDirectChat già usata in new_chat_screen.dart
  • Se la chat esiste già (utenti che si sono già scritti), createDirectChat restituisce la chat esistente