import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/email/presentation/email_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/get_user_profile_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_user_profile_interactor.dart'; class MailboxDashBoardController extends BaseController { final GetUserProfileInteractor _getUserProfileInteractor; final scaffoldKey = GlobalKey(); final selectedMailbox = Rxn(); final selectedEmail = Rxn(); final accountId = Rxn(); final userProfile = Rxn(); Session? sessionCurrent; MailboxDashBoardController(this._getUserProfileInteractor); @override void onReady() { super.onReady(); _setSessionCurrent(); _getUserProfile(); } @override void onDone() { viewState.value.map((success) { if (success is GetUserProfileSuccess) { userProfile.value = success.userProfile; } }); } @override void onError(error) { } void _getUserProfile() async { consumeState(_getUserProfileInteractor.execute()); } void _setSessionCurrent() { Future.delayed(const Duration(milliseconds: 100), () { final arguments = Get.arguments; if (arguments is Session) { sessionCurrent = Get.arguments as Session; accountId.value = sessionCurrent?.accounts.keys.first; } }); } void setSelectedMailbox(PresentationMailbox? newPresentationMailbox) { selectedMailbox.value = newPresentationMailbox; } void setSelectedEmail(PresentationEmail? newPresentationEmail) { selectedEmail.value = newPresentationEmail; } void openDrawer() { scaffoldKey.currentState?.openDrawer(); } void closeDrawer() { scaffoldKey.currentState?.openEndDrawer(); } @override void onClose() { super.onClose(); Get.delete(); } }