TF-1616: Fix drag and drop email to mailbox
(cherry picked from commit 324a28c958dd9b4b9f25d7ce18c6a2a4a5c18531)
This commit is contained in:
@@ -93,6 +93,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
final SubscribeMultipleMailboxInteractor _subscribeMultipleMailboxInteractor;
|
final SubscribeMultipleMailboxInteractor _subscribeMultipleMailboxInteractor;
|
||||||
|
|
||||||
final currentSelectMode = SelectMode.INACTIVE.obs;
|
final currentSelectMode = SelectMode.INACTIVE.obs;
|
||||||
|
final _activeScrollTop = RxBool(false);
|
||||||
|
final _activeScrollBottom = RxBool(true);
|
||||||
|
|
||||||
final _openMailboxEventController = StreamController<OpenMailboxViewEvent>();
|
final _openMailboxEventController = StreamController<OpenMailboxViewEvent>();
|
||||||
final mailboxListScrollController = ScrollController();
|
final mailboxListScrollController = ScrollController();
|
||||||
@@ -130,8 +132,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
|
_openMailboxEventController.stream.throttleTime(const Duration(milliseconds: 800)).listen((event) {
|
||||||
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
|
_handleOpenMailbox(event.buildContext, event.presentationMailbox);
|
||||||
});
|
});
|
||||||
|
|
||||||
_initCollapseMailboxCategories();
|
_initCollapseMailboxCategories();
|
||||||
|
mailboxListScrollController.addListener(_mailboxListScrollControllerListener);
|
||||||
super.onReady();
|
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(
|
? Align(
|
||||||
alignment: Alignment.topCenter,
|
alignment: Alignment.topCenter,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
@@ -221,7 +221,7 @@ class MailboxView extends GetWidget<MailboxController>
|
|||||||
child: Container(
|
child: Container(
|
||||||
height: 40)))
|
height: 40)))
|
||||||
: const SizedBox.shrink()),
|
: const SizedBox.shrink()),
|
||||||
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox
|
Obx(() => controller.mailboxDashBoardController.isDraggingMailbox && controller.activeScrollBottom
|
||||||
? Align(
|
? Align(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
|
|||||||
+7
@@ -164,6 +164,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
final vacationResponse = Rxn<VacationResponse>();
|
final vacationResponse = Rxn<VacationResponse>();
|
||||||
final routerParameters = Rxn<Map<String, String?>>();
|
final routerParameters = Rxn<Map<String, String?>>();
|
||||||
final _isDraggingMailbox = RxBool(false);
|
final _isDraggingMailbox = RxBool(false);
|
||||||
|
final _triggerDropMailbox = RxBool(true);
|
||||||
final searchMailboxActivated = RxBool(false);
|
final searchMailboxActivated = RxBool(false);
|
||||||
Session? sessionCurrent;
|
Session? sessionCurrent;
|
||||||
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
Map<Role, MailboxId> mapDefaultMailboxIdByRole = {};
|
||||||
@@ -1562,6 +1563,12 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
_isDraggingMailbox.value = isDragging;
|
_isDraggingMailbox.value = isDragging;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onTriggerDropMailbox(bool onScroll) {
|
||||||
|
_triggerDropMailbox.value = onScroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool get triggerDropMailbox => _triggerDropMailbox.value;
|
||||||
|
|
||||||
bool get isDraggingMailbox => _isDraggingMailbox.value;
|
bool get isDraggingMailbox => _isDraggingMailbox.value;
|
||||||
|
|
||||||
void _handleSendEmailFailure(SendEmailFailure failure) {
|
void _handleSendEmailFailure(SendEmailFailure failure) {
|
||||||
|
|||||||
Reference in New Issue
Block a user