feat: Add logger service and improve expense dialog with enhanced receipt management and calculation logic.

This commit is contained in:
Van Leemput Dayron
2025-11-28 12:54:54 +01:00
parent cad9d42128
commit fd710b8cb8
35 changed files with 2148 additions and 1296 deletions

View File

@@ -8,6 +8,8 @@ import '../../models/activity.dart';
import '../../services/activity_cache_service.dart';
import '../loading/laoding_content.dart';
import '../../blocs/user/user_bloc.dart';
import '../../blocs/user/user_state.dart';
class ActivitiesPage extends StatefulWidget {
final Trip trip;
@@ -32,8 +34,7 @@ class _ActivitiesPageState extends State<ActivitiesPage>
List<Activity> _tripActivities = [];
List<Activity> _approvedActivities = [];
bool _isLoadingTripActivities = false;
int _totalGoogleActivitiesRequested =
0; // Compteur pour les recherches progressives
bool _autoReloadInProgress =
false; // Protection contre les rechargements en boucle
int _lastAutoReloadTriggerCount =
@@ -999,9 +1000,11 @@ class _ActivitiesPageState extends State<ActivitiesPage>
}
void _voteForActivity(String activityId, int vote) {
// TODO: Récupérer l'ID utilisateur actuel
// Pour l'instant, on utilise l'ID du créateur du voyage pour que le vote compte
final userId = widget.trip.createdBy;
// Récupérer l'ID utilisateur actuel depuis le UserBloc
final userState = context.read<UserBloc>().state;
final userId = userState is UserLoaded
? userState.user.id
: widget.trip.createdBy;
// Vérifier si l'activité existe dans la liste locale pour vérifier le vote
// (car l'objet activity passé peut venir d'une liste filtrée ou autre)
@@ -1122,7 +1125,7 @@ class _ActivitiesPageState extends State<ActivitiesPage>
6; // Activités actuelles + ce qui manque + buffer de 6
// Mettre à jour le compteur et recharger avec le nouveau total
_totalGoogleActivitiesRequested = newTotalToRequest;
_loadMoreGoogleActivitiesWithTotal(newTotalToRequest);
// Libérer le verrou après un délai
@@ -1135,7 +1138,6 @@ class _ActivitiesPageState extends State<ActivitiesPage>
}
void _searchGoogleActivities() {
_totalGoogleActivitiesRequested = 6; // Reset du compteur
_autoReloadInProgress = false; // Reset des protections
_lastAutoReloadTriggerCount = 0;
@@ -1166,7 +1168,6 @@ class _ActivitiesPageState extends State<ActivitiesPage>
}
void _resetAndSearchGoogleActivities() {
_totalGoogleActivitiesRequested = 6; // Reset du compteur
_autoReloadInProgress = false; // Reset des protections
_lastAutoReloadTriggerCount = 0;
@@ -1203,8 +1204,6 @@ class _ActivitiesPageState extends State<ActivitiesPage>
final currentCount = currentState.searchResults.length;
final newTotal = currentCount + 6;
_totalGoogleActivitiesRequested = newTotal;
// Utiliser les coordonnées pré-géolocalisées du voyage si disponibles
if (widget.trip.hasCoordinates) {
context.read<ActivityBloc>().add(

View File

@@ -57,7 +57,7 @@ class _AddActivityBottomSheetState extends State<AddActivityBottomSheet> {
height: 4,
margin: const EdgeInsets.symmetric(vertical: 12),
decoration: BoxDecoration(
color: theme.colorScheme.onSurface.withOpacity(0.3),
color: theme.colorScheme.onSurface.withValues(alpha: 0.3),
borderRadius: BorderRadius.circular(2),
),
),