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,93 @@
import 'package:equatable/equatable.dart';
import '../../../models/activity.dart';
/// Events pour les activités Google Places
abstract class GoogleActivityEvent extends Equatable {
const GoogleActivityEvent();
@override
List<Object?> get props => [];
}
/// Charger les activités Google Places
class LoadGoogleActivities extends GoogleActivityEvent {
final String tripId;
final String destination;
final ActivityCategory? category;
const LoadGoogleActivities({
required this.tripId,
required this.destination,
this.category,
});
@override
List<Object?> get props => [tripId, destination, category];
}
/// Charger plus d'activités Google (pagination)
class LoadMoreGoogleActivities extends GoogleActivityEvent {
final String tripId;
final String destination;
final ActivityCategory? category;
final String? nextPageToken;
const LoadMoreGoogleActivities({
required this.tripId,
required this.destination,
this.category,
this.nextPageToken,
});
@override
List<Object?> get props => [tripId, destination, category, nextPageToken];
}
/// Mettre à jour les activités Google
class UpdateGoogleActivities extends GoogleActivityEvent {
final List<Activity> activities;
final String? nextPageToken;
final bool hasMoreData;
final String query;
const UpdateGoogleActivities({
required this.activities,
this.nextPageToken,
required this.hasMoreData,
required this.query,
});
@override
List<Object?> get props => [activities, nextPageToken, hasMoreData, query];
}
/// Ajouter une activité Google à la DB
class AddGoogleActivityToDb extends GoogleActivityEvent {
final Activity activity;
const AddGoogleActivityToDb({required this.activity});
@override
List<Object?> get props => [activity];
}
/// Rechercher des activités Google par catégorie
class SearchGoogleActivitiesByCategory extends GoogleActivityEvent {
final String tripId;
final String destination;
final ActivityCategory category;
const SearchGoogleActivitiesByCategory({
required this.tripId,
required this.destination,
required this.category,
});
@override
List<Object?> get props => [tripId, destination, category];
}
/// Effacer les résultats Google
class ClearGoogleActivities extends GoogleActivityEvent {
const ClearGoogleActivities();
}