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,143 @@
import 'package:equatable/equatable.dart';
import '../../../models/activity.dart';
/// Events pour les activités de la base de données
abstract class DbActivityEvent extends Equatable {
const DbActivityEvent();
@override
List<Object?> get props => [];
}
/// Charger les activités d'un voyage depuis la DB
class LoadDbActivities extends DbActivityEvent {
final String tripId;
final List<String> tripParticipants;
const LoadDbActivities({
required this.tripId,
required this.tripParticipants,
});
@override
List<Object?> get props => [tripId, tripParticipants];
}
/// Rechercher des activités dans la DB
class SearchDbActivities extends DbActivityEvent {
final String tripId;
final String query;
final List<String> tripParticipants;
const SearchDbActivities({
required this.tripId,
required this.query,
required this.tripParticipants,
});
@override
List<Object?> get props => [tripId, query, tripParticipants];
}
/// Ajouter une activité à la DB
class AddDbActivity extends DbActivityEvent {
final Activity activity;
const AddDbActivity({required this.activity});
@override
List<Object?> get props => [activity];
}
/// Ajouter plusieurs activités à la DB
class AddDbActivitiesBatch extends DbActivityEvent {
final List<Activity> activities;
const AddDbActivitiesBatch({required this.activities});
@override
List<Object?> get props => [activities];
}
/// Voter pour une activité
class VoteForDbActivity extends DbActivityEvent {
final String activityId;
final String userId;
final bool isUpvote;
const VoteForDbActivity({
required this.activityId,
required this.userId,
required this.isUpvote,
});
@override
List<Object?> get props => [activityId, userId, isUpvote];
}
/// Supprimer une activité
class DeleteDbActivity extends DbActivityEvent {
final String activityId;
const DeleteDbActivity({required this.activityId});
@override
List<Object?> get props => [activityId];
}
/// Filtrer les activités
class FilterDbActivities extends DbActivityEvent {
final String? category;
final bool? showFavorites;
const FilterDbActivities({
this.category,
this.showFavorites,
});
@override
List<Object?> get props => [category, showFavorites];
}
/// Rafraîchir les activités
class RefreshDbActivities extends DbActivityEvent {
final String tripId;
final List<String> tripParticipants;
const RefreshDbActivities({
required this.tripId,
required this.tripParticipants,
});
@override
List<Object?> get props => [tripId, tripParticipants];
}
/// Mettre à jour une activité
class UpdateDbActivity extends DbActivityEvent {
final Activity activity;
const UpdateDbActivity({required this.activity});
@override
List<Object?> get props => [activity];
}
/// Basculer le favori d'une activité
class ToggleDbActivityFavorite extends DbActivityEvent {
final String activityId;
final String userId;
const ToggleDbActivityFavorite({
required this.activityId,
required this.userId,
});
@override
List<Object?> get props => [activityId, userId];
}
/// Effacer les résultats de recherche
class ClearDbSearchResults extends DbActivityEvent {
const ClearDbSearchResults();
}