diff --git a/lib/pages/chat_details/chat_details_view.dart b/lib/pages/chat_details/chat_details_view.dart index 834b1a1f7..e73634692 100644 --- a/lib/pages/chat_details/chat_details_view.dart +++ b/lib/pages/chat_details/chat_details_view.dart @@ -9,10 +9,12 @@ import 'package:fluffychat/pages/chat_details/chat_details.dart'; import 'package:fluffychat/pages/chat_details/participant_list_item.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/chat_settings_popup_menu.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; import '../../utils/url_launcher.dart'; import '../../widgets/qr_code_viewer.dart'; @@ -57,7 +59,18 @@ class ChatDetailsView extends StatelessWidget { const Center(child: BackButton()), elevation: theme.appBarTheme.elevation, actions: [ - if (room.canonicalAlias.isNotEmpty) + if (room.canonicalAlias.isNotEmpty) ...[ + IconButton( + onPressed: () { + showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: [TextShareItem(room.canonicalAlias)], + ), + ); + }, + icon: const Icon(Icons.forward_outlined), + ), IconButton( tooltip: L10n.of(context).share, icon: const Icon(Icons.qr_code_rounded), @@ -66,6 +79,7 @@ class ChatDetailsView extends StatelessWidget { room.canonicalAlias, ), ), + ], if (controller.widget.embeddedCloseButton == null) ChatSettingsPopupMenu(room, false), ], diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 17d899799..369474000 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -7,10 +7,12 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; import 'package:fluffychat/utils/url_launcher.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/presence_builder.dart'; import 'package:fluffychat/widgets/qr_code_viewer.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; import '../../widgets/matrix.dart'; import 'user_bottom_sheet.dart'; @@ -41,6 +43,21 @@ class UserBottomSheetView extends StatelessWidget { centerTitle: false, title: Text(displayname), actions: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: IconButton( + onPressed: () { + Navigator.of(context).pop(); + showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: [TextShareItem(userId)], + ), + ); + }, + icon: const Icon(Icons.forward_outlined), + ), + ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: IconButton( diff --git a/lib/widgets/public_room_bottom_sheet.dart b/lib/widgets/public_room_bottom_sheet.dart index ddf62a6bf..788656d8c 100644 --- a/lib/widgets/public_room_bottom_sheet.dart +++ b/lib/widgets/public_room_bottom_sheet.dart @@ -6,11 +6,13 @@ import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; import 'package:fluffychat/utils/url_launcher.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/qr_code_viewer.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; class PublicRoomBottomSheet extends StatelessWidget { final String? roomAlias; @@ -98,19 +100,35 @@ class PublicRoomBottomSheet extends StatelessWidget { onPressed: Navigator.of(context, rootNavigator: false).pop, ), ), - actions: [ - if (roomAlias != null) - Padding( - padding: const EdgeInsets.symmetric(horizontal: 16.0), - child: IconButton( - icon: Icon(Icons.adaptive.share_outlined), - onPressed: () => showQrCodeViewer( - context, - roomAlias, + actions: roomAlias == null + ? null + : [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: IconButton( + onPressed: () { + Navigator.of(context).pop(); + showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: [TextShareItem(roomAlias)], + ), + ); + }, + icon: const Icon(Icons.forward_outlined), + ), ), - ), - ), - ], + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: IconButton( + icon: Icon(Icons.adaptive.share_outlined), + onPressed: () => showQrCodeViewer( + context, + roomAlias, + ), + ), + ), + ], ), body: FutureBuilder( future: _search(),