96 lines
3.2 KiB
Dart
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,
|
|
];
|
|
}
|