TF-1616: Fix drag and drop email to mailbox

(cherry picked from commit 324a28c958dd9b4b9f25d7ce18c6a2a4a5c18531)
This commit is contained in:
HuyNguyen
2023-03-17 15:46:04 +07:00
committed by Dat Vu
parent 9c672d4835
commit 55e9a8c8b3
3 changed files with 41 additions and 3 deletions
@@ -93,6 +93,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
final SubscribeMultipleMailboxInteractor _subscribeMultipleMailboxInteractor;
final currentSelectMode = SelectMode.INACTIVE.obs;
final _activeScrollTop = RxBool(false);
final _activeScrollBottom = RxBool(true);
final _openMailboxEventController = StreamController<OpenMailboxViewEvent>();
final mailboxListScrollController = ScrollController();
@@ -130,8 +132,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
});
_initCollapseMailboxCategories();
mailboxListScrollController.addListener(_mailboxListScrollControllerListener);
super.onReady();
}
@@ -1127,4 +1129,33 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
}
}
}
void _mailboxListScrollControllerListener() {
_handleScrollTop();
_handleScrollBottom();
}
void _handleScrollTop() {
if (mailboxListScrollController.position.pixels == 0) {
_activeScrollTop.value = false;
}
if (mailboxListScrollController.position.pixels > 40) {
_activeScrollTop.value = true;
}
}
void _handleScrollBottom() {
if (mailboxListScrollController.position.pixels - mailboxListScrollController.position.maxScrollExtent == 0) {
_activeScrollBottom.value = false;
}
if (mailboxListScrollController.position.maxScrollExtent - mailboxListScrollController.position.pixels > 40) {
_activeScrollBottom.value = true;
}
}
bool get activeScrollTop => _activeScrollTop.value;
bool get activeScrollBottom => _activeScrollBottom.value;
}
@@ -212,7 +212,7 @@ class MailboxView extends GetWidget<MailboxController>
})
])
),
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox && controller.activeScrollTop
? Align(
alignment: Alignment.topCenter,
child: InkWell(
@@ -221,7 +221,7 @@ class MailboxView extends GetWidget<MailboxController>
child: Container(
height: 40)))
: const SizedBox.shrink()),
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox && controller.activeScrollBottom
? Align(
alignment: Alignment.bottomCenter,
child: InkWell(
@@ -164,6 +164,7 @@ class MailboxDashBoardController extends ReloadableController {
final vacationResponse = Rxn<VacationResponse>();
final routerParameters = Rxn<Map<String, String?>>();
final _isDraggingMailbox = RxBool(false);
final _triggerDropMailbox = RxBool(true);
final searchMailboxActivated = RxBool(false);
Session? sessionCurrent;
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
@@ -1562,6 +1563,12 @@ class MailboxDashBoardController extends ReloadableController {
_isDraggingMailbox.value = isDragging;
}
void onTriggerDropMailbox(bool onScroll) {
_triggerDropMailbox.value = onScroll;
}
bool get triggerDropMailbox => _triggerDropMailbox.value;
bool get isDraggingMailbox => _isDraggingMailbox.value;
void _handleSendEmailFailure(SendEmailFailure failure) {