Merge pull request #767 from krille-chan/krille/better-sharing-text

refactor: Put forwarded text into inputfield instead of sending directly
This commit is contained in:
Krille-chan 2024-01-04 14:10:24 +01:00 committed by GitHub
commit 9b5e95d7ad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

View file

@ -283,7 +283,10 @@ abstract class AppRoutes {
path: ':roomid', path: ':roomid',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
ChatPage(roomId: state.pathParameters['roomid']!), ChatPage(
roomId: state.pathParameters['roomid']!,
shareText: state.uri.queryParameters['body'],
),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
routes: [ routes: [

View file

@ -41,10 +41,12 @@ import 'sticker_picker_dialog.dart';
class ChatPage extends StatelessWidget { class ChatPage extends StatelessWidget {
final String roomId; final String roomId;
final String? shareText;
const ChatPage({ const ChatPage({
super.key, super.key,
required this.roomId, required this.roomId,
this.shareText,
}); });
@override @override
@ -69,6 +71,7 @@ class ChatPage extends StatelessWidget {
child: ChatPageWithRoom( child: ChatPageWithRoom(
key: Key('chat_page_$roomId'), key: Key('chat_page_$roomId'),
room: room, room: room,
shareText: shareText,
), ),
), ),
if (FluffyThemes.isThreeColumnMode(context) && if (FluffyThemes.isThreeColumnMode(context) &&
@ -93,10 +96,12 @@ class ChatPage extends StatelessWidget {
class ChatPageWithRoom extends StatefulWidget { class ChatPageWithRoom extends StatefulWidget {
final Room room; final Room room;
final String? shareText;
const ChatPageWithRoom({ const ChatPageWithRoom({
super.key, super.key,
required this.room, required this.room,
this.shareText,
}); });
@override @override
@ -253,7 +258,7 @@ class ChatController extends State<ChatPageWithRoom>
void _loadDraft() async { void _loadDraft() async {
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
final draft = prefs.getString('draft_$roomId'); final draft = widget.shareText ?? prefs.getString('draft_$roomId');
if (draft != null && draft.isNotEmpty) { if (draft != null && draft.isNotEmpty) {
sendController.text = draft; sendController.text = draft;
} }

View file

@ -124,10 +124,15 @@ class ChatListItem extends StatelessWidget {
room: room, room: room,
), ),
); );
Matrix.of(context).shareContent = null;
} else { } else {
room.sendEvent(shareContent); final text = shareContent.tryGet<String>('body');
Matrix.of(context).shareContent = null;
context.go(
'/rooms/${room.id}?body=$text',
);
return;
} }
Matrix.of(context).shareContent = null;
} }
context.go('/rooms/${room.id}'); context.go('/rooms/${room.id}');