diff --git a/lib/components/home/create_trip_content.dart b/lib/components/home/create_trip_content.dart index 66aa14e..d540247 100644 --- a/lib/components/home/create_trip_content.dart +++ b/lib/components/home/create_trip_content.dart @@ -115,8 +115,7 @@ class _CreateTripContentState extends State { if (tripState is TripCreated) { // Stocker l'ID du trip et créer le groupe _createdTripId = tripState.tripId; - _createGroupForTrip(_createdTripId!); - _createAccountForTrip(_createdTripId!); + _createGroupAndAccountForTrip(_createdTripId!); } else if (tripState is TripOperationSuccess) { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( @@ -125,6 +124,9 @@ class _CreateTripContentState extends State { backgroundColor: Colors.green, ), ); + setState(() { + _isLoading = false; + }); Navigator.pop(context); if (isEditing) { Navigator.pop(context); @@ -579,103 +581,72 @@ class _CreateTripContentState extends State { return groupMembers; } - Future _createGroupForTrip(String tripId) async { + Future _createGroupAndAccountForTrip(String tripId) async { final groupBloc = context.read(); + final accountBloc = context.read(); + try { + final userState = context.read().state; - if (userState is! user_state.UserLoaded) return; + if (userState is! user_state.UserLoaded) { + throw Exception('Utilisateur non connecté'); + } final currentUser = userState.user; - // Créer le groupe avec le tripId récupéré final group = Group( - id: '', // Sera généré par Firestore + id: '', name: _titleController.text.trim(), - tripId: tripId, + tripId: tripId, createdBy: currentUser.id, ); final groupMembers = await _createMembers(); - if (groupMembers.isEmpty) { throw Exception('Erreur lors de la création des membres du groupe'); } groupBloc.add(CreateGroupWithMembers( - group: group, - members: groupMembers, - )); - - if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('Voyage et groupe créés avec succès !'), - backgroundColor: Colors.green, - ), - ); - - setState(() { - _isLoading = false; - }); - - Navigator.pop(context); - } - } catch (e) { - _errorService.logError( - 'create_trip_content.dart', - 'Erreur lors de la création du groupe: $e', - ); - - if (mounted) { - setState(() { - _isLoading = false; - }); - } - } - } - - Future _createAccountForTrip(String tripId) async { - final accountBloc = context.read(); - try { - final userState = context.read().state; - if (userState is! user_state.UserLoaded) return; - + group: group, + members: groupMembers, + )); final account = Account( id: '', tripId: tripId, name: _titleController.text.trim(), ); - final accountsMembers = await _createMembers(); - accountBloc.add(CreateAccountWithMembers( - account: account, - members: accountsMembers, - )); - + account: account, + members: groupMembers, + )); + if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text('Compte créé avec succès !'), + content: Text('Voyage, groupe et compte créés avec succès !'), backgroundColor: Colors.green, ), ); - setState(() { _isLoading = false; }); - Navigator.pop(context); } - } catch (e) { _errorService.logError( 'create_trip_content.dart', - 'Erreur lors de la création du compte: $e', - ); + 'Erreur lors de la création du groupe et compte: $e', + ); if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text('Erreur: $e'), + backgroundColor: Colors.red, + ), + ); setState(() { _isLoading = false; }); @@ -683,6 +654,8 @@ class _CreateTripContentState extends State { } } + + Future _saveTrip(user_state.UserModel currentUser) async { if (!_formKey.currentState!.validate()) { return; diff --git a/lib/components/home/show_trip_details_content.dart b/lib/components/home/show_trip_details_content.dart index 90d82cb..5cb1811 100644 --- a/lib/components/home/show_trip_details_content.dart +++ b/lib/components/home/show_trip_details_content.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:travel_mate/blocs/group/group_bloc.dart'; -import 'package:travel_mate/blocs/group/group_event.dart'; import 'package:travel_mate/blocs/trip/trip_bloc.dart'; import 'package:travel_mate/blocs/trip/trip_event.dart'; import 'package:travel_mate/components/home/create_trip_content.dart'; @@ -142,7 +140,6 @@ class _ShowTripDetailsContentState extends State { TextButton( onPressed: () { context.read().add(TripDeleteRequested(tripId: widget.trip.id!)); - context.read().add(DeleteGroup(widget.trip.id!)); Navigator.pop(context); // Fermer le dialogue Navigator.pop(context, true); // Retourner à l'écran précédent },