From aa5f5dfcc64661e74c12bc3c3374aa96777cceb8 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 17 Nov 2022 13:18:52 +0200 Subject: [PATCH] Handle pages with multiple debouncers --- lib/redux/app/app_middleware.dart | 2 +- lib/ui/design/edit/design_edit.dart | 5 +++-- lib/ui/invoice/edit/invoice_edit_desktop.dart | 3 ++- lib/ui/settings/client_portal.dart | 2 +- lib/utils/completers.dart | 10 +++++++--- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/redux/app/app_middleware.dart b/lib/redux/app/app_middleware.dart index 95c3711c5..a17993180 100644 --- a/lib/redux/app/app_middleware.dart +++ b/lib/redux/app/app_middleware.dart @@ -378,7 +378,7 @@ Middleware _createPersistData( }; } -final _persistUIDebouncer = PersistUIDebouncer(); +final _persistUIDebouncer = SimpleDebouncer(); Middleware _createPersistUI(PersistenceRepository uiRepository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as PersistUI; diff --git a/lib/ui/design/edit/design_edit.dart b/lib/ui/design/edit/design_edit.dart index 0779e8a28..6dfadfbf2 100644 --- a/lib/ui/design/edit/design_edit.dart +++ b/lib/ui/design/edit/design_edit.dart @@ -51,9 +51,10 @@ class _DesignEditState extends State static final GlobalKey _formKey = GlobalKey(debugLabel: '_designEdit'); - final _pdfDebouncer = Debouncer(milliseconds: kMillisecondsToDebounceSave); final _debouncer = Debouncer(); - final _htmlDebouncer = Debouncer(); + final _pdfDebouncer = + SimpleDebouncer(milliseconds: kMillisecondsToDebounceSave); + final _htmlDebouncer = SimpleDebouncer(); final _nameController = TextEditingController(); final _htmlController = TextEditingController(); diff --git a/lib/ui/invoice/edit/invoice_edit_desktop.dart b/lib/ui/invoice/edit/invoice_edit_desktop.dart index c5eda27d2..8058cf04c 100644 --- a/lib/ui/invoice/edit/invoice_edit_desktop.dart +++ b/lib/ui/invoice/edit/invoice_edit_desktop.dart @@ -1124,7 +1124,8 @@ class _PdfPreview extends StatefulWidget { } class __PdfPreviewState extends State<_PdfPreview> { - final _pdfDebouncer = Debouncer(milliseconds: kMillisecondsToDebounceSave); + final _pdfDebouncer = + SimpleDebouncer(milliseconds: kMillisecondsToDebounceSave); int _pageCount = 1; int _currentPage = 1; diff --git a/lib/ui/settings/client_portal.dart b/lib/ui/settings/client_portal.dart index c27e52927..c59bc241d 100644 --- a/lib/ui/settings/client_portal.dart +++ b/lib/ui/settings/client_portal.dart @@ -57,7 +57,7 @@ class _ClientPortalState extends State bool _isCheckingSubdomain = false; final _subdomainDebouncer = - Debouncer(milliseconds: kMillisecondsToDebounceSave); + SimpleDebouncer(milliseconds: kMillisecondsToDebounceSave); final _debouncer = Debouncer(); final _subdomainController = TextEditingController(); diff --git a/lib/utils/completers.dart b/lib/utils/completers.dart index fc16dc4a4..50cbd9e0b 100644 --- a/lib/utils/completers.dart +++ b/lib/utils/completers.dart @@ -118,8 +118,12 @@ class Debouncer { } } -class PersistUIDebouncer { - PersistUIDebouncer(); +class SimpleDebouncer { + SimpleDebouncer({ + this.milliseconds = kMillisecondsToDebounceWrite, + }); + + final int milliseconds; static VoidCallback action; static Timer timer; @@ -132,7 +136,7 @@ class PersistUIDebouncer { Debouncer.action = action; } - timer = Timer(Duration(milliseconds: kMillisecondsToDebounceWrite), () { + timer = Timer(Duration(milliseconds: milliseconds), () { if (action != null) { action(); }