diff --git a/lib/components/audio_player.dart b/lib/components/audio_player.dart index feab917..b77da54 100644 --- a/lib/components/audio_player.dart +++ b/lib/components/audio_player.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_sound/flutter_sound.dart'; import 'package:intl/intl.dart'; -import 'matrix.dart'; +import 'dialogs/simple_dialogs.dart'; class AudioPlayer extends StatefulWidget { final Color color; @@ -48,7 +48,7 @@ class _AudioPlayerState extends State { _downloadAction() async { if (status != AudioPlayerStatus.NOT_DOWNLOADED) return; setState(() => status = AudioPlayerStatus.DOWNLOADING); - final matrixFile = await Matrix.of(context) + final matrixFile = await SimpleDialogs(context) .tryRequestWithErrorToast(widget.event.downloadAndDecryptAttachment()); setState(() { audioFile = matrixFile.bytes; diff --git a/lib/components/chat_settings_popup_menu.dart b/lib/components/chat_settings_popup_menu.dart index 81c9c21..2373136 100644 --- a/lib/components/chat_settings_popup_menu.dart +++ b/lib/components/chat_settings_popup_menu.dart @@ -33,7 +33,7 @@ class _ChatSettingsPopupMenuState extends State { void startCallAction(BuildContext context) async { final url = '${Matrix.of(context).jitsiInstance}${Uri.encodeComponent(widget.room.id.localpart)}'; - final success = await Matrix.of(context) + final success = await SimpleDialogs(context) .tryRequestWithLoadingDialog(widget.room.sendEvent({ 'msgtype': Matrix.callNamespace, 'body': url, @@ -86,7 +86,7 @@ class _ChatSettingsPopupMenuState extends State { case "leave": bool confirmed = await SimpleDialogs(context).askConfirmation(); if (confirmed) { - final success = await Matrix.of(context) + final success = await SimpleDialogs(context) .tryRequestWithLoadingDialog(widget.room.leave()); if (success != false) { await Navigator.of(context).pushAndRemoveUntil( @@ -96,11 +96,11 @@ class _ChatSettingsPopupMenuState extends State { } break; case "mute": - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setPushRuleState(PushRuleState.mentions_only)); break; case "unmute": - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setPushRuleState(PushRuleState.notify)); break; case "call": diff --git a/lib/components/dialogs/simple_dialogs.dart b/lib/components/dialogs/simple_dialogs.dart index 36514be..13decbf 100644 --- a/lib/components/dialogs/simple_dialogs.dart +++ b/lib/components/dialogs/simple_dialogs.dart @@ -1,5 +1,7 @@ import 'package:fluffychat/i18n/i18n.dart'; import 'package:flutter/material.dart'; +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter_styled_toast/flutter_styled_toast.dart'; class SimpleDialogs { final BuildContext context; @@ -22,7 +24,7 @@ class SimpleDialogs { await showDialog( context: context, builder: (c) => AlertDialog( - title: Text(titleText ?? I18n.of(context).enterAUsername), + title: Text(titleText ?? 'Please enter a text'), content: TextField( controller: controller, autofocus: true, @@ -104,4 +106,46 @@ class SimpleDialogs { ); return confirmed; } + + Future tryRequestWithLoadingDialog(Future request, + {Function(MatrixException) onAdditionalAuth}) async { + showLoadingDialog(context); + final dynamic = await tryRequestWithErrorToast(request, + onAdditionalAuth: onAdditionalAuth); + Navigator.of(context)?.pop(); + return dynamic; + } + + Future tryRequestWithErrorToast(Future request, + {Function(MatrixException) onAdditionalAuth}) async { + try { + return await request; + } on MatrixException catch (exception) { + if (exception.requireAdditionalAuthentication && + onAdditionalAuth != null) { + return await tryRequestWithErrorToast(onAdditionalAuth(exception)); + } else { + showToast(exception.errorMessage); + } + } catch (exception) { + showToast(exception.toString()); + return false; + } + } + + showLoadingDialog(BuildContext context) { + showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) => AlertDialog( + content: Row( + children: [ + CircularProgressIndicator(), + SizedBox(width: 16), + Text(I18n.of(context).loadingPleaseWait), + ], + ), + ), + ); + } } diff --git a/lib/components/encryption_button.dart b/lib/components/encryption_button.dart index 37b5cc2..f171a2c 100644 --- a/lib/components/encryption_button.dart +++ b/lib/components/encryption_button.dart @@ -43,7 +43,7 @@ class _EncryptionButtonState extends State { confirmText: I18n.of(context).yes, ) == true) { - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.enableEncryption(), ); } diff --git a/lib/components/list_items/chat_list_item.dart b/lib/components/list_items/chat_list_item.dart index d9f57f3..b7d3b67 100644 --- a/lib/components/list_items/chat_list_item.dart +++ b/lib/components/list_items/chat_list_item.dart @@ -26,7 +26,8 @@ class ChatListItem extends StatelessWidget { void clickAction(BuildContext context) async { if (!activeChat) { if (room.membership == Membership.invite && - await Matrix.of(context).tryRequestWithLoadingDialog(room.join()) == + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(room.join()) == false) { return; } @@ -60,7 +61,7 @@ class ChatListItem extends StatelessWidget { child: Text(I18n.of(context).rejoin.toUpperCase(), style: TextStyle(color: Colors.blue)), onPressed: () async { - await Matrix.of(context) + await SimpleDialogs(context) .tryRequestWithLoadingDialog(room.join()); await Navigator.of(context).pop(); }, @@ -74,7 +75,7 @@ class ChatListItem extends StatelessWidget { if (Matrix.of(context).shareContent != null) { if (Matrix.of(context).shareContent["msgtype"] == "chat.fluffy.shared_file") { - await Matrix.of(context).tryRequestWithErrorToast( + await SimpleDialogs(context).tryRequestWithErrorToast( room.sendFileEvent( Matrix.of(context).shareContent["file"], ), @@ -96,8 +97,8 @@ class ChatListItem extends StatelessWidget { Future archiveAction(BuildContext context) async { { if ([Membership.leave, Membership.ban].contains(room.membership)) { - final success = - await Matrix.of(context).tryRequestWithLoadingDialog(room.forget()); + final success = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(room.forget()); if (success != false) { if (this.onForget != null) this.onForget(); } @@ -107,8 +108,8 @@ class ChatListItem extends StatelessWidget { if (!confirmed) { return false; } - final success = - await Matrix.of(context).tryRequestWithLoadingDialog(room.leave()); + final success = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(room.leave()); if (success == false) { return false; } diff --git a/lib/components/list_items/message.dart b/lib/components/list_items/message.dart index 0d77aea..5696143 100644 --- a/lib/components/list_items/message.dart +++ b/lib/components/list_items/message.dart @@ -1,5 +1,6 @@ import 'package:bubble/bubble.dart'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/message_content.dart'; import 'package:fluffychat/components/reply_content.dart'; import 'package:fluffychat/i18n/i18n.dart'; @@ -116,7 +117,7 @@ class Message extends StatelessWidget { I18n.of(context).requestPermission, style: TextStyle(color: textColor), ), - onPressed: () => Matrix.of(context) + onPressed: () => SimpleDialogs(context) .tryRequestWithLoadingDialog(event.requestKey()), ), SizedBox(height: 4), diff --git a/lib/components/list_items/participant_list_item.dart b/lib/components/list_items/participant_list_item.dart index e27d1a0..708ca2c 100644 --- a/lib/components/list_items/participant_list_item.dart +++ b/lib/components/list_items/participant_list_item.dart @@ -14,36 +14,39 @@ class ParticipantListItem extends StatelessWidget { const ParticipantListItem(this.user); participantAction(BuildContext context, String action) async { - final MatrixState matrix = Matrix.of(context); switch (action) { case "ban": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.ban()); + await SimpleDialogs(context).tryRequestWithLoadingDialog(user.ban()); } break; case "unban": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.unban()); + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.unban()); } break; case "kick": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.kick()); + await SimpleDialogs(context).tryRequestWithLoadingDialog(user.kick()); } break; case "admin": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.setPower(100)); + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.setPower(100)); } break; case "moderator": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.setPower(50)); + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.setPower(50)); } break; case "user": if (await SimpleDialogs(context).askConfirmation()) { - await matrix.tryRequestWithLoadingDialog(user.setPower(0)); + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.setPower(0)); } break; case "message": diff --git a/lib/components/list_items/presence_list_item.dart b/lib/components/list_items/presence_list_item.dart index bf06964..efec546 100644 --- a/lib/components/list_items/presence_list_item.dart +++ b/lib/components/list_items/presence_list_item.dart @@ -74,7 +74,7 @@ class PresenceListItem extends StatelessWidget { width: 80, child: Column( children: [ - SizedBox(height: 6), + SizedBox(height: 9), Avatar(avatarUrl, displayname), Padding( padding: const EdgeInsets.all(6.0), diff --git a/lib/components/list_items/public_room_list_item.dart b/lib/components/list_items/public_room_list_item.dart index 21c7bce..263baf0 100644 --- a/lib/components/list_items/public_room_list_item.dart +++ b/lib/components/list_items/public_room_list_item.dart @@ -1,11 +1,11 @@ import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:flutter/material.dart'; import '../../i18n/i18n.dart'; import '../../utils/app_route.dart'; import '../../views/chat.dart'; import '../avatar.dart'; -import '../matrix.dart'; class PublicRoomListItem extends StatelessWidget { final PublicRoomEntry publicRoomEntry; @@ -13,7 +13,7 @@ class PublicRoomListItem extends StatelessWidget { const PublicRoomListItem(this.publicRoomEntry, {Key key}) : super(key: key); void joinAction(BuildContext context) async { - final success = await Matrix.of(context) + final success = await SimpleDialogs(context) .tryRequestWithLoadingDialog(publicRoomEntry.join()); if (success != false) { await Navigator.of(context).push( diff --git a/lib/components/matrix.dart b/lib/components/matrix.dart index 6ccdcef..44968c6 100644 --- a/lib/components/matrix.dart +++ b/lib/components/matrix.dart @@ -77,53 +77,6 @@ class MatrixState extends State { await storage.deleteItem(widget.clientName); } - BuildContext _loadingDialogContext; - - Future tryRequestWithLoadingDialog(Future request, - {Function(MatrixException) onAdditionalAuth}) async { - showLoadingDialog(context); - final dynamic = await tryRequestWithErrorToast(request, - onAdditionalAuth: onAdditionalAuth); - hideLoadingDialog(); - return dynamic; - } - - Future tryRequestWithErrorToast(Future request, - {Function(MatrixException) onAdditionalAuth}) async { - try { - return await request; - } on MatrixException catch (exception) { - if (exception.requireAdditionalAuthentication && - onAdditionalAuth != null) { - return await tryRequestWithErrorToast(onAdditionalAuth(exception)); - } else { - showToast(exception.errorMessage); - } - } catch (exception) { - showToast(exception.toString()); - return false; - } - } - - showLoadingDialog(BuildContext context) { - _loadingDialogContext = context; - showDialog( - context: _loadingDialogContext, - barrierDismissible: false, - builder: (BuildContext context) => AlertDialog( - content: Row( - children: [ - CircularProgressIndicator(), - SizedBox(width: 16), - Text(I18n.of(context).loadingPleaseWait), - ], - ), - ), - ); - } - - hideLoadingDialog() => Navigator.of(_loadingDialogContext)?.pop(); - Future downloadAndSaveContent(MxContent content, {int width, int height, ThumbnailMethod method}) async { final bool thumbnail = width == null && height == null ? false : true; diff --git a/lib/components/message_content.dart b/lib/components/message_content.dart index 7b41d8d..c9fd832 100644 --- a/lib/components/message_content.dart +++ b/lib/components/message_content.dart @@ -10,6 +10,7 @@ import 'package:link_text/link_text.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:fluffychat/utils/matrix_file_extension.dart'; +import 'dialogs/simple_dialogs.dart'; import 'matrix.dart'; class MessageContent extends StatelessWidget { @@ -60,8 +61,9 @@ class MessageContent extends StatelessWidget { ); return; } - final MatrixFile matrixFile = await Matrix.of(context) - .tryRequestWithLoadingDialog( + final MatrixFile matrixFile = + await SimpleDialogs(context) + .tryRequestWithLoadingDialog( event.downloadAndDecryptAttachment(), ); matrixFile.open(); diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart index 0e673b9..29e8927 100644 --- a/lib/utils/url_launcher.dart +++ b/lib/utils/url_launcher.dart @@ -1,4 +1,5 @@ import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat.dart'; @@ -21,7 +22,7 @@ class UrlLauncher { final matrix = Matrix.of(context); final String identifier = url.replaceAll("https://matrix.to/#/", ""); if (identifier.substring(0, 1) == "#") { - final response = await matrix.tryRequestWithLoadingDialog( + final response = await SimpleDialogs(context).tryRequestWithLoadingDialog( matrix.client.joinRoomById( Uri.encodeComponent(identifier), ), @@ -37,8 +38,8 @@ class UrlLauncher { identifier, room: Room(id: "", client: matrix.client), ); - final String roomID = - await matrix.tryRequestWithLoadingDialog(user.startDirectChat()); + final String roomID = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.startDirectChat()); Navigator.of(context).pop(); if (roomID != null) { diff --git a/lib/views/chat.dart b/lib/views/chat.dart index 04dbda4..9eeca59 100644 --- a/lib/views/chat.dart +++ b/lib/views/chat.dart @@ -182,7 +182,7 @@ class _ChatState extends State<_Chat> { } File file = await FilePicker.getFile(); if (file == null) return; - await matrix.tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( room.sendFileEvent( MatrixFile(bytes: await file.readAsBytes(), path: file.path), ), @@ -200,7 +200,7 @@ class _ChatState extends State<_Chat> { maxWidth: 1600, maxHeight: 1600); if (file == null) return; - await matrix.tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( room.sendImageEvent( MatrixFile(bytes: await file.readAsBytes(), path: file.path), ), @@ -218,7 +218,7 @@ class _ChatState extends State<_Chat> { maxWidth: 1600, maxHeight: 1600); if (file == null) return; - await matrix.tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( room.sendImageEvent( MatrixFile(bytes: await file.readAsBytes(), path: file.path), ), @@ -234,7 +234,7 @@ class _ChatState extends State<_Chat> { )); if (result == null) return; final File audioFile = File(result); - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( room.sendAudioEvent( MatrixFile(bytes: audioFile.readAsBytesSync(), path: audioFile.path), ), @@ -265,7 +265,7 @@ class _ChatState extends State<_Chat> { ); if (!confirmed) return; for (Event event in selectedEvents) { - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( event.status > 0 ? event.redact() : event.remove()); } setState(() => selectedEvents.clear()); @@ -322,7 +322,7 @@ class _ChatState extends State<_Chat> { matrix.activeRoomId = widget.id; if (room.membership == Membership.invite) { - matrix.tryRequestWithLoadingDialog(room.join()); + SimpleDialogs(context).tryRequestWithLoadingDialog(room.join()); } String typingText = ""; diff --git a/lib/views/chat_details.dart b/lib/views/chat_details.dart index 1705692..572a3b5 100644 --- a/lib/views/chat_details.dart +++ b/lib/views/chat_details.dart @@ -7,7 +7,6 @@ import 'package:fluffychat/components/chat_settings_popup_menu.dart'; import 'package:fluffychat/components/content_banner.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/list_items/participant_list_item.dart'; -import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/i18n/i18n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/utils/room_extension.dart'; @@ -39,8 +38,7 @@ class _ChatDetailsState extends State { hintText: widget.room.getLocalizedDisplayname(context), ); if (displayname == null) return; - final MatrixState matrix = Matrix.of(context); - final success = await matrix.tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setName(displayname), ); if (success != false) { @@ -65,14 +63,15 @@ class _ChatDetailsState extends State { if (aliases.indexWhere((s) => s == canonicalAlias) == -1) { List newAliases = List.from(aliases); newAliases.add(canonicalAlias); - final response = await Matrix.of(context).tryRequestWithLoadingDialog( + final response = await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.client.jsonRequest( type: HTTPType.GET, action: "/client/r0/directory/room/$canonicalAlias", ), ); if (response == false) { - final success = await Matrix.of(context).tryRequestWithLoadingDialog( + final success = + await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.client.jsonRequest( type: HTTPType.PUT, action: "/client/r0/directory/room/$canonicalAlias", @@ -81,7 +80,7 @@ class _ChatDetailsState extends State { if (success == false) return; } } - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.client.jsonRequest( type: HTTPType.PUT, action: @@ -100,8 +99,7 @@ class _ChatDetailsState extends State { multiLine: true, ); if (displayname == null) return; - final MatrixState matrix = Matrix.of(context); - final success = await matrix.tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setDescription(displayname), ); if (success != false) { @@ -116,8 +114,7 @@ class _ChatDetailsState extends State { maxWidth: 1600, maxHeight: 1600); if (tempFile == null) return; - final MatrixState matrix = Matrix.of(context); - final success = await matrix.tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setAvatar( MatrixFile( bytes: await tempFile.readAsBytes(), @@ -131,7 +128,7 @@ class _ChatDetailsState extends State { } void requestMoreMembersAction(BuildContext context) async { - final List participants = await Matrix.of(context) + final List participants = await SimpleDialogs(context) .tryRequestWithLoadingDialog(widget.room.requestParticipants()); if (participants != null) setState(() => members = participants); } @@ -288,7 +285,7 @@ class _ChatDetailsState extends State { ), ), onSelected: (JoinRules joinRule) => - Matrix.of(context).tryRequestWithLoadingDialog( + SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setJoinRules(joinRule), ), itemBuilder: (BuildContext context) => @@ -323,7 +320,7 @@ class _ChatDetailsState extends State { ), ), onSelected: (HistoryVisibility historyVisibility) => - Matrix.of(context).tryRequestWithLoadingDialog( + SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.setHistoryVisibility(historyVisibility), ), itemBuilder: (BuildContext context) => @@ -371,7 +368,8 @@ class _ChatDetailsState extends State { ), ), onSelected: (GuestAccess guestAccess) => - Matrix.of(context).tryRequestWithLoadingDialog( + SimpleDialogs(context) + .tryRequestWithLoadingDialog( widget.room.setGuestAccess(guestAccess), ), itemBuilder: (BuildContext context) => diff --git a/lib/views/chat_list.dart b/lib/views/chat_list.dart index 9012b79..9bf086d 100644 --- a/lib/views/chat_list.dart +++ b/lib/views/chat_list.dart @@ -84,7 +84,7 @@ class _ChatListState extends State { coolDown = Timer(Duration(seconds: 1), () async { setState(() => loadingPublicRooms = true); final newPublicRoomsResponse = - await Matrix.of(context).tryRequestWithErrorToast( + await SimpleDialogs(context).tryRequestWithErrorToast( Matrix.of(context).client.requestPublicRooms( limit: 30, includeAllNetworks: true, @@ -190,7 +190,7 @@ class _ChatListState extends State { hintText: I18n.of(context).statusExampleMessage, ); if (status?.isEmpty ?? true) return; - await Matrix.of(context).tryRequestWithLoadingDialog( + await SimpleDialogs(context).tryRequestWithLoadingDialog( Matrix.of(context).client.jsonRequest( type: HTTPType.PUT, action: diff --git a/lib/views/homeserver_picker.dart b/lib/views/homeserver_picker.dart index 7d6d14e..05fcc55 100644 --- a/lib/views/homeserver_picker.dart +++ b/lib/views/homeserver_picker.dart @@ -21,7 +21,7 @@ class HomeserverPicker extends StatelessWidget { if (!homeserver.startsWith('https://')) { homeserver = 'https://$homeserver'; } - final success = await Matrix.of(context).tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( Matrix.of(context).client.checkServer(homeserver)); if (success != false) { await Navigator.of(context).push(AppRoute(SignUp())); diff --git a/lib/views/invitation_selection.dart b/lib/views/invitation_selection.dart index 3925f66..7e85a1c 100644 --- a/lib/views/invitation_selection.dart +++ b/lib/views/invitation_selection.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/i18n/i18n.dart'; import 'package:flutter/material.dart'; @@ -53,7 +54,7 @@ class _InvitationSelectionState extends State { } void inviteAction(BuildContext context, String id) async { - final success = await Matrix.of(context).tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( widget.room.invite(id), ); if (success != false) { @@ -81,7 +82,7 @@ class _InvitationSelectionState extends State { if (loading) return; setState(() => loading = true); final MatrixState matrix = Matrix.of(context); - final response = await matrix.tryRequestWithErrorToast( + final response = await SimpleDialogs(context).tryRequestWithErrorToast( matrix.client.jsonRequest( type: HTTPType.POST, action: "/client/r0/user_directory/search", diff --git a/lib/views/new_group.dart b/lib/views/new_group.dart index 67285f6..276df30 100644 --- a/lib/views/new_group.dart +++ b/lib/views/new_group.dart @@ -1,4 +1,5 @@ import 'package:fluffychat/components/adaptive_page_layout.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/i18n/i18n.dart'; import 'package:fluffychat/utils/app_route.dart'; @@ -42,7 +43,8 @@ class _NewGroupState extends State<_NewGroup> { params["preset"] = "private_chat"; } if (controller.text.isNotEmpty) params["name"] = controller.text; - final String roomID = await matrix.tryRequestWithLoadingDialog( + final String roomID = + await SimpleDialogs(context).tryRequestWithLoadingDialog( matrix.client.createRoom(params: params), ); Navigator.of(context).pop(); diff --git a/lib/views/new_private_chat.dart b/lib/views/new_private_chat.dart index dffc9eb..819055e 100644 --- a/lib/views/new_private_chat.dart +++ b/lib/views/new_private_chat.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/i18n/i18n.dart'; import 'package:fluffychat/utils/app_route.dart'; @@ -54,8 +55,8 @@ class _NewPrivateChatState extends State<_NewPrivateChat> { "@" + controller.text.trim(), room: Room(id: "", client: matrix.client), ); - final String roomID = - await matrix.tryRequestWithLoadingDialog(user.startDirectChat()); + final String roomID = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.startDirectChat()); Navigator.of(context).pop(); if (roomID != null) { @@ -87,7 +88,7 @@ class _NewPrivateChatState extends State<_NewPrivateChat> { if (loading) return; setState(() => loading = true); final MatrixState matrix = Matrix.of(context); - final response = await matrix.tryRequestWithErrorToast( + final response = await SimpleDialogs(context).tryRequestWithErrorToast( matrix.client.jsonRequest( type: HTTPType.POST, action: "/client/r0/user_directory/search", diff --git a/lib/views/settings.dart b/lib/views/settings.dart index 7be7542..a7a1e5b 100644 --- a/lib/views/settings.dart +++ b/lib/views/settings.dart @@ -43,7 +43,8 @@ class _SettingsState extends State { return; } MatrixState matrix = Matrix.of(context); - await matrix.tryRequestWithLoadingDialog(matrix.client.logout()); + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(matrix.client.logout()); matrix.clean(); await Navigator.of(context).pushAndRemoveUntil( AppRoute.defaultRoute(context, HomeserverPicker()), (r) => false); @@ -73,7 +74,7 @@ class _SettingsState extends State { ); if (displayname == null) return; final MatrixState matrix = Matrix.of(context); - final success = await matrix.tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( matrix.client.setDisplayname(displayname), ); if (success != false) { @@ -92,7 +93,7 @@ class _SettingsState extends State { maxHeight: 1600); if (tempFile == null) return; final MatrixState matrix = Matrix.of(context); - final success = await matrix.tryRequestWithLoadingDialog( + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( matrix.client.setAvatar( MatrixFile( bytes: await tempFile.readAsBytes(), diff --git a/lib/views/settings_devices.dart b/lib/views/settings_devices.dart index d1cf66d..c23dd9f 100644 --- a/lib/views/settings_devices.dart +++ b/lib/views/settings_devices.dart @@ -42,7 +42,7 @@ class DevicesSettingsState extends State { for (UserDevice userDevice in devices) { deviceIds.add(userDevice.deviceId); } - final success = await matrix + final success = await SimpleDialogs(context) .tryRequestWithLoadingDialog(matrix.client.deleteDevices(deviceIds), onAdditionalAuth: (MatrixException exception) async { final String password = await SimpleDialogs(context).enterText(