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:
@@ -0,0 +1,76 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import '../../../models/activity.dart';
|
||||
|
||||
/// States pour les activités approuvées par tous les participants
|
||||
abstract class ApprovedActivityState extends Equatable {
|
||||
const ApprovedActivityState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
/// État initial
|
||||
class ApprovedActivityInitial extends ApprovedActivityState {
|
||||
const ApprovedActivityInitial();
|
||||
}
|
||||
|
||||
/// État de chargement
|
||||
class ApprovedActivityLoading extends ApprovedActivityState {
|
||||
const ApprovedActivityLoading();
|
||||
}
|
||||
|
||||
/// État de recherche
|
||||
class ApprovedActivitySearching extends ApprovedActivityState {
|
||||
const ApprovedActivitySearching();
|
||||
}
|
||||
|
||||
/// État avec les activités approuvées chargées
|
||||
class ApprovedActivityLoaded extends ApprovedActivityState {
|
||||
final List<Activity> approvedActivities;
|
||||
final List<String> tripParticipants;
|
||||
|
||||
const ApprovedActivityLoaded({
|
||||
required this.approvedActivities,
|
||||
required this.tripParticipants,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [approvedActivities, tripParticipants];
|
||||
|
||||
/// Créer une copie avec des modifications
|
||||
ApprovedActivityLoaded copyWith({
|
||||
List<Activity>? approvedActivities,
|
||||
List<String>? tripParticipants,
|
||||
}) {
|
||||
return ApprovedActivityLoaded(
|
||||
approvedActivities: approvedActivities ?? this.approvedActivities,
|
||||
tripParticipants: tripParticipants ?? this.tripParticipants,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// État avec résultats de recherche approuvées
|
||||
class ApprovedActivitySearchResults extends ApprovedActivityState {
|
||||
final List<Activity> results;
|
||||
final String query;
|
||||
final List<String> tripParticipants;
|
||||
|
||||
const ApprovedActivitySearchResults({
|
||||
required this.results,
|
||||
required this.query,
|
||||
required this.tripParticipants,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [results, query, tripParticipants];
|
||||
}
|
||||
|
||||
/// État d'erreur
|
||||
class ApprovedActivityError extends ApprovedActivityState {
|
||||
final String message;
|
||||
|
||||
const ApprovedActivityError(this.message);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user