Refactor ActivityCard UI and improve voting functionality

- Updated ActivityCard layout for better visual consistency and responsiveness.
- Simplified the category badge and adjusted styles for better readability.
- Enhanced the voting section with a progress bar and improved button designs.
- Added a new method in Activity model to check if all trip participants approved an activity.
- Improved error handling and validation in ActivityRepository for voting and fetching activities.
- Implemented pagination in ActivityPlacesService for activity searches.
- Removed outdated scripts for cleaning up duplicate images.
This commit is contained in:
Dayron
2025-11-04 20:21:54 +01:00
parent 8ff9e12fd4
commit f6c8432335
19 changed files with 2902 additions and 961 deletions

View File

@@ -0,0 +1,86 @@
import 'package:equatable/equatable.dart';
import '../../../models/activity.dart';
/// States pour les activités de la base de données
abstract class DbActivityState extends Equatable {
const DbActivityState();
@override
List<Object?> get props => [];
}
/// État initial
class DbActivityInitial extends DbActivityState {
const DbActivityInitial();
}
/// État de chargement
class DbActivityLoading extends DbActivityState {
const DbActivityLoading();
}
/// État de recherche
class DbActivitySearching extends DbActivityState {
const DbActivitySearching();
}
/// État avec les activités chargées
class DbActivityLoaded extends DbActivityState {
final List<Activity> activities;
final List<String> tripParticipants;
const DbActivityLoaded({
required this.activities,
required this.tripParticipants,
});
@override
List<Object?> get props => [activities, tripParticipants];
/// Créer une copie avec des modifications
DbActivityLoaded copyWith({
List<Activity>? activities,
List<String>? tripParticipants,
}) {
return DbActivityLoaded(
activities: activities ?? this.activities,
tripParticipants: tripParticipants ?? this.tripParticipants,
);
}
}
/// État avec résultats de recherche
class DbActivitySearchResults extends DbActivityState {
final List<Activity> results;
final String query;
final List<String> tripParticipants;
const DbActivitySearchResults({
required this.results,
required this.query,
required this.tripParticipants,
});
@override
List<Object?> get props => [results, query, tripParticipants];
}
/// État de succès d'opération
class DbActivityOperationSuccess extends DbActivityState {
final String message;
const DbActivityOperationSuccess(this.message);
@override
List<Object?> get props => [message];
}
/// État d'erreur
class DbActivityError extends DbActivityState {
final String message;
const DbActivityError(this.message);
@override
List<Object?> get props => [message];
}