TF-996: Debounce request
This commit is contained in:
@@ -11,6 +11,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:debounce_throttle/debounce_throttle.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
@@ -94,6 +95,7 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
Identity? _identitySelected;
|
Identity? _identitySelected;
|
||||||
List<EmailContent>? initialEmailContents;
|
List<EmailContent>? initialEmailContents;
|
||||||
late Worker emailWorker;
|
late Worker emailWorker;
|
||||||
|
late Debouncer<int?> _deBouncerTime;
|
||||||
final Queue<EmailLoaded> presentationEmailsLoaded = Queue();
|
final Queue<EmailLoaded> presentationEmailsLoaded = Queue();
|
||||||
PageController? pageController;
|
PageController? pageController;
|
||||||
int currentIndexPageView = 0;
|
int currentIndexPageView = 0;
|
||||||
@@ -127,6 +129,7 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
|
_initializeDebounceTimeIndexPageViewChange();
|
||||||
_initWorker();
|
_initWorker();
|
||||||
_listenDownloadAttachmentProgressState();
|
_listenDownloadAttachmentProgressState();
|
||||||
super.onInit();
|
super.onInit();
|
||||||
@@ -149,6 +152,7 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
void onClose() {
|
void onClose() {
|
||||||
_downloadProgressStateController.close();
|
_downloadProgressStateController.close();
|
||||||
pageController?.dispose();
|
pageController?.dispose();
|
||||||
|
_deBouncerTime.cancel();
|
||||||
_clearWorker();
|
_clearWorker();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
@@ -182,6 +186,17 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
pageController?.jumpToPage(currentIndexPageView);
|
pageController?.jumpToPage(currentIndexPageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _initializeDebounceTimeIndexPageViewChange() {
|
||||||
|
_deBouncerTime = Debouncer<int?>(
|
||||||
|
const Duration(milliseconds: 800),
|
||||||
|
initialValue: null);
|
||||||
|
_deBouncerTime.values.listen((value) async {
|
||||||
|
if(value !=null) {
|
||||||
|
_getEmailContentAction(listEmail[value].id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void _initWorker() {
|
void _initWorker() {
|
||||||
emailWorker = ever(mailboxDashBoardController.selectedEmail, (presentationEmail) {
|
emailWorker = ever(mailboxDashBoardController.selectedEmail, (presentationEmail) {
|
||||||
log('EmailController::_initWorker(): $presentationEmail');
|
log('EmailController::_initWorker(): $presentationEmail');
|
||||||
@@ -189,8 +204,8 @@ class EmailController extends BaseController with AppLoaderMixin {
|
|||||||
if (_currentEmailId != presentationEmail.id) {
|
if (_currentEmailId != presentationEmail.id) {
|
||||||
_currentEmailId = presentationEmail.id;
|
_currentEmailId = presentationEmail.id;
|
||||||
_setCurrentPositionEmailInListEmail(_currentEmailId);
|
_setCurrentPositionEmailInListEmail(_currentEmailId);
|
||||||
|
_deBouncerTime.value = currentIndexPageView;
|
||||||
_resetToOriginalValue();
|
_resetToOriginalValue();
|
||||||
_getEmailContentAction(presentationEmail.id);
|
|
||||||
if (!presentationEmail.hasRead) {
|
if (!presentationEmail.hasRead) {
|
||||||
markAsEmailRead(presentationEmail, ReadActions.markAsRead);
|
markAsEmailRead(presentationEmail, ReadActions.markAsRead);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user