[Thread Detail] [Part 1] TF-3639 data layer and controller (#3645)
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/presentation/thread_detail_controller.dart';
|
||||
|
||||
extension HandleGetEmailIdsByThreadIdSuccess on ThreadDetailController {
|
||||
void handleGetEmailIdsByThreadIdSuccess(
|
||||
GetThreadByIdSuccess success,
|
||||
) {
|
||||
emailIds.value = success.emailIds;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
|
||||
class ThreadDetailArguments with EquatableMixin {
|
||||
final ThreadId threadId;
|
||||
|
||||
const ThreadDetailArguments({required this.threadId});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [threadId];
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/domain/state/get_thread_by_id_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/domain/usecases/get_thread_by_id_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/presentation/extension/handle_get_email_ids_by_thread_id_success.dart';
|
||||
import 'package:tmail_ui_user/features/thread_detail/presentation/model/thread_detail_arguments.dart';
|
||||
|
||||
class ThreadDetailController extends BaseController {
|
||||
final ThreadDetailArguments arguments;
|
||||
final GetThreadByIdInteractor _getEmailIdsByThreadIdInteractor;
|
||||
|
||||
ThreadDetailController(
|
||||
this.arguments,
|
||||
this._getEmailIdsByThreadIdInteractor,
|
||||
);
|
||||
|
||||
final emailIds = <EmailId>[].obs;
|
||||
|
||||
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
|
||||
|
||||
AccountId? get accountId => mailboxDashBoardController.accountId.value;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
if (accountId != null) {
|
||||
consumeState(_getEmailIdsByThreadIdInteractor.execute(
|
||||
arguments.threadId,
|
||||
accountId!,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleSuccessViewState(success) {
|
||||
if (success is GetThreadByIdSuccess) {
|
||||
handleGetEmailIdsByThreadIdSuccess(success);
|
||||
} else {
|
||||
super.handleSuccessViewState(success);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleFailureViewState(failure) {
|
||||
if (failure is GetThreadByIdFailure) {
|
||||
// TODO: handle failure
|
||||
return;
|
||||
}
|
||||
super.handleFailureViewState(failure);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user