From 41ceb84b470358b54b5629d59020df4795653702 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Fri, 2 Oct 2020 14:44:05 +0200 Subject: [PATCH] fix: Improve loading dialogs --- ios/Podfile.lock | 40 ++++++++++++++++++++-- lib/components/dialogs/simple_dialogs.dart | 39 ++++++++++++--------- 2 files changed, 60 insertions(+), 19 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 00ce3361..27a5e41a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -43,7 +43,7 @@ PODS: - Flutter - firebase_core_web (0.1.0): - Flutter - - firebase_messaging (7.0.0): + - firebase_messaging (7.0.2): - Firebase/CoreOnly (~> 6.26.0) - Firebase/Messaging (~> 6.26.0) - firebase_core @@ -138,6 +138,8 @@ PODS: - Flutter - path_provider_macos (0.0.1): - Flutter + - path_provider_windows (0.0.1): + - Flutter - PromisesObjC (1.2.10) - Protobuf (3.13.0) - receive_sharing_intent (0.0.1): @@ -158,6 +160,24 @@ PODS: - SQLCipher/common (4.4.0) - SQLCipher/standard (4.4.0): - SQLCipher/common + - sqlite3 (3.32.3): + - sqlite3/common (= 3.32.3) + - sqlite3/common (3.32.3) + - sqlite3/fts5 (3.32.3): + - sqlite3/common + - sqlite3/json1 (3.32.3): + - sqlite3/common + - sqlite3/perf-threadsafe (3.32.3): + - sqlite3/common + - sqlite3/rtree (3.32.3): + - sqlite3/common + - sqlite3_flutter_libs (0.0.1): + - Flutter + - sqlite3 (~> 3.32.3) + - sqlite3/fts5 + - sqlite3/json1 + - sqlite3/perf-threadsafe + - sqlite3/rtree - url_launcher (0.0.1): - Flutter - url_launcher_linux (0.0.1): @@ -166,6 +186,8 @@ PODS: - Flutter - url_launcher_web (0.0.1): - Flutter + - url_launcher_windows (0.0.1): + - Flutter - webview_flutter (0.0.1): - Flutter @@ -187,14 +209,17 @@ DEPENDENCIES: - path_provider (from `.symlinks/plugins/path_provider/ios`) - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`) - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) + - path_provider_windows (from `.symlinks/plugins/path_provider_windows/ios`) - receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`) - share (from `.symlinks/plugins/share/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - SQLCipher + - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`) - url_launcher (from `.symlinks/plugins/url_launcher/ios`) - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`) - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) + - url_launcher_windows (from `.symlinks/plugins/url_launcher_windows/ios`) - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) SPEC REPOS: @@ -220,6 +245,7 @@ SPEC REPOS: - SDWebImage - SDWebImageFLPlugin - SQLCipher + - sqlite3 EXTERNAL SOURCES: file_picker: @@ -256,12 +282,16 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/path_provider_linux/ios" path_provider_macos: :path: ".symlinks/plugins/path_provider_macos/ios" + path_provider_windows: + :path: ".symlinks/plugins/path_provider_windows/ios" receive_sharing_intent: :path: ".symlinks/plugins/receive_sharing_intent/ios" share: :path: ".symlinks/plugins/share/ios" sqflite: :path: ".symlinks/plugins/sqflite/ios" + sqlite3_flutter_libs: + :path: ".symlinks/plugins/sqlite3_flutter_libs/ios" url_launcher: :path: ".symlinks/plugins/url_launcher/ios" url_launcher_linux: @@ -270,6 +300,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/url_launcher_macos/ios" url_launcher_web: :path: ".symlinks/plugins/url_launcher_web/ios" + url_launcher_windows: + :path: ".symlinks/plugins/url_launcher_windows/ios" webview_flutter: :path: ".symlinks/plugins/webview_flutter/ios" @@ -280,7 +312,7 @@ SPEC CHECKSUMS: Firebase: 7cf5f9c67f03cb3b606d1d6535286e1080e57eb6 firebase_core: 3134fe79d257d430f163b558caf52a10a87efe8a firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1 - firebase_messaging: 6061cbdfe4463502a0d4d7049820c25d1757a095 + firebase_messaging: 2844c37f9ce87c0904b38fe435223161b1a71528 FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae FirebaseCore: f42e5e5f382cdcf6b617ed737bf6c871a6947b17 FirebaseCoreDiagnostics: 7415bfb3883b3500c5a95c42b6ba66baae78f600 @@ -307,6 +339,7 @@ SPEC CHECKSUMS: path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4 path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 + path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151 Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748 receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1 @@ -315,10 +348,13 @@ SPEC CHECKSUMS: share: 0b2c3e82132f5888bccca3351c504d0003b3b410 sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 SQLCipher: e434ed542b24f38ea7b36468a13f9765e1b5c072 + sqlite3: 8f7d2078ae27778699a622a94b853285793422a2 + sqlite3_flutter_libs: 5651f8ff48e3b44d910863c4ea5916085b1b245f url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0 url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313 url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c + url_launcher_windows: 683d7c283894db8d1914d3ab2223b20cc1ad95d5 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 PODFILE CHECKSUM: 4b647f92a1fa32e6a4287abfd67897564ceda4e9 diff --git a/lib/components/dialogs/simple_dialogs.dart b/lib/components/dialogs/simple_dialogs.dart index 4a9e7ebe..b2ebf58c 100644 --- a/lib/components/dialogs/simple_dialogs.dart +++ b/lib/components/dialogs/simple_dialogs.dart @@ -138,11 +138,26 @@ class SimpleDialogs { Future tryRequestWithLoadingDialog(Future request, {Function(MatrixException) onAdditionalAuth}) async { - showLoadingDialog(context); - final dynamic = await tryRequestWithErrorToast(request, - onAdditionalAuth: onAdditionalAuth); - Navigator.of(context)?.pop(); - return dynamic; + var completed = false; + final futureResult = tryRequestWithErrorToast( + request, + onAdditionalAuth: onAdditionalAuth, + ).whenComplete(() => completed = true); + await Future.delayed(Duration(seconds: 1)); + if (completed) return futureResult; + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + futureResult.then( + (result) => Navigator.of(context).pop(result), + ); + return AlertDialog( + title: Text(L10n.of(context).loadingPleaseWait), + content: LinearProgressIndicator(), + ); + }, + ); } Future tryRequestWithErrorToast(Future request, @@ -167,18 +182,8 @@ class SimpleDialogs { context: context, barrierDismissible: false, builder: (BuildContext context) => AlertDialog( - content: Row( - children: [ - CircularProgressIndicator(), - SizedBox(width: 16), - Expanded( - child: Text( - L10n.of(context).loadingPleaseWait, - overflow: TextOverflow.ellipsis, - maxLines: 1, - )), - ], - ), + title: Text(L10n.of(context).loadingPleaseWait), + content: LinearProgressIndicator(), ), ); }