From bd07759d8ee2341551a6a596f624172fed276576 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:05:41 +0530 Subject: [PATCH] [mob][photos] Show loading indicator on device tap --- mobile/lib/ui/cast/auto.dart | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/mobile/lib/ui/cast/auto.dart b/mobile/lib/ui/cast/auto.dart index 4dc9d5bd01..ee5974f00c 100644 --- a/mobile/lib/ui/cast/auto.dart +++ b/mobile/lib/ui/cast/auto.dart @@ -23,11 +23,11 @@ class AutoCastDialog extends StatefulWidget { class _AutoCastDialogState extends State { final bool doesUserExist = true; + final Set _isDeviceTapInProgress = {}; @override Widget build(BuildContext context) { final textStyle = getEnteTextTheme(context); - final AlertDialog alert = AlertDialog( title: Text( S.of(context).connectToDevice, @@ -65,19 +65,39 @@ class _AutoCastDialogState extends State { } return Column( + crossAxisAlignment: CrossAxisAlignment.start, children: snapshot.data!.map((result) { final device = result.$2; final name = result.$1; return GestureDetector( onTap: () async { + if (_isDeviceTapInProgress.contains(device)) { + return; + } + setState(() { + _isDeviceTapInProgress.add(device); + }); try { await _connectToYourApp(context, device); } catch (e) { showGenericErrorDialog(context: context, error: e) .ignore(); + } finally { + setState(() { + _isDeviceTapInProgress.remove(device); + }); } }, - child: Text(name), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + children: [ + Expanded(child: Text(name)), + if (_isDeviceTapInProgress.contains(device)) + const EnteLoadingWidget(), + ], + ), + ), ); }).toList(), ); @@ -93,6 +113,8 @@ class _AutoCastDialogState extends State { BuildContext context, Object castDevice, ) async { + // sleep for 10 seconds + await Future.delayed(const Duration(seconds: 10)); await castService.connectDevice( context, castDevice,