Deploy: 2026-05-24 23:27:32
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
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';
|
||||
|
||||
// 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;
|
||||
|
||||
const DashboardState({
|
||||
required this.activeTab,
|
||||
required this.isLoading,
|
||||
this.errorMessage,
|
||||
this.whatsappStatus,
|
||||
this.plans = const [],
|
||||
this.contacts = const [],
|
||||
this.chatbotRules = const [],
|
||||
this.superAdminStats,
|
||||
});
|
||||
|
||||
// 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,
|
||||
}) {
|
||||
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,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
activeTab,
|
||||
isLoading,
|
||||
errorMessage,
|
||||
whatsappStatus,
|
||||
plans,
|
||||
contacts,
|
||||
chatbotRules,
|
||||
superAdminStats,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user