Files
nabeh/mobile/lib/features/dashboard/presentation/cubit/dashboard_state.dart
2026-05-25 00:29:42 +03:00

96 lines
3.2 KiB
Dart

import 'package:equatable/equatable.dart';
import '../../data/models/chatbot_rule_model.dart';
import '../../data/models/contact_model.dart';
import '../../data/models/plan_model.dart';
import '../../data/models/super_admin_stats_model.dart';
import '../../data/models/whatsapp_status_model.dart';
import '../../data/models/meta_session_model.dart';
// English: Enum representing the 9 tabs in the Nabeh web/mobile dashboard.
// Arabic: قائمة تعداد تمثل الأبواب التسعة في لوحة تحكم نبيه على الويب والهاتف.
enum DashboardTab {
superAdmin,
whatsapp,
billing,
contacts,
templates,
campaigns,
chatbot,
integrations,
staff
}
class DashboardState extends Equatable {
// English: The currently selected tab in navigation.
// Arabic: الباب المحدد حالياً في التنقل.
final DashboardTab activeTab;
// English: Indicator if data is being retrieved from backend.
// Arabic: مؤشر ما إذا كان يتم استرداد البيانات من الواجهة الخلفية.
final bool isLoading;
// English: Error message if API requests fail.
// Arabic: رسالة الخطأ إذا فشلت طلبات واجهة برمجة التطبيقات.
final String? errorMessage;
// English: Feature data models parsed from network API responses.
// Arabic: نماذج بيانات الميزات التي تم تحليلها من استجابات الشبكة.
final WhatsAppStatusModel? whatsappStatus;
final List<PlanModel> plans;
final List<ContactModel> contacts;
final List<ChatbotRuleModel> chatbotRules;
final SuperAdminStatsModel? superAdminStats;
final List<MetaSessionModel> metaSessions;
const DashboardState({
required this.activeTab,
required this.isLoading,
this.errorMessage,
this.whatsappStatus,
this.plans = const [],
this.contacts = const [],
this.chatbotRules = const [],
this.superAdminStats,
this.metaSessions = const [],
});
// English: Helper copyWith constructor to copy immutable state data safely.
// Arabic: منشئ مساعد لنسخ بيانات الحالة الثابتة بشكل آمن.
DashboardState copyWith({
DashboardTab? activeTab,
bool? isLoading,
String? errorMessage,
WhatsAppStatusModel? whatsappStatus,
List<PlanModel>? plans,
List<ContactModel>? contacts,
List<ChatbotRuleModel>? chatbotRules,
SuperAdminStatsModel? superAdminStats,
List<MetaSessionModel>? metaSessions,
}) {
return DashboardState(
activeTab: activeTab ?? this.activeTab,
isLoading: isLoading ?? this.isLoading,
errorMessage: errorMessage, // Reset if null
whatsappStatus: whatsappStatus ?? this.whatsappStatus,
plans: plans ?? this.plans,
contacts: contacts ?? this.contacts,
chatbotRules: chatbotRules ?? this.chatbotRules,
superAdminStats: superAdminStats ?? this.superAdminStats,
metaSessions: metaSessions ?? this.metaSessions,
);
}
@override
List<Object?> get props => [
activeTab,
isLoading,
errorMessage,
whatsappStatus,
plans,
contacts,
chatbotRules,
superAdminStats,
metaSessions,
];
}