diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index f0cb1ea..f47c474 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -706,6 +706,7 @@ "copyToClipboardTooltip": "Copy to clipboard", "postForwardingTo": "Forwarding to", "postReplyingTo": "Replying to", + "postReplyPlaceholder": "Post your reply", "postEditing": "You are editing an existing post", "postArticle": "Article", "aboutDeviceName": "Device Name", diff --git a/lib/screens/posts/post_detail.dart b/lib/screens/posts/post_detail.dart index a904fd5..d2346e3 100644 --- a/lib/screens/posts/post_detail.dart +++ b/lib/screens/posts/post_detail.dart @@ -92,6 +92,7 @@ class PostDetailScreen extends HookConsumerWidget { right: 0, child: Material( elevation: 2, + color: Theme.of(context).colorScheme.surfaceContainer, child: postState .when( data: @@ -107,8 +108,8 @@ class PostDetailScreen extends HookConsumerWidget { error: (_, _) => const SizedBox.shrink(), ) .padding( - bottom: MediaQuery.of(context).padding.bottom + 16, - top: 16, + bottom: MediaQuery.of(context).padding.bottom + 8, + top: 8, horizontal: 16, ), ), diff --git a/lib/widgets/post/post_quick_reply.dart b/lib/widgets/post/post_quick_reply.dart index 8c4f92d..e304e25 100644 --- a/lib/widgets/post/post_quick_reply.dart +++ b/lib/widgets/post/post_quick_reply.dart @@ -1,10 +1,13 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:island/models/post.dart'; import 'package:island/models/publisher.dart'; import 'package:island/pods/network.dart'; import 'package:island/screens/creators/publishers.dart'; +import 'package:island/screens/posts/compose.dart'; import 'package:island/widgets/alert.dart'; import 'package:island/widgets/content/cloud_files.dart'; import 'package:island/widgets/post/publishers_modal.dart'; @@ -13,8 +16,14 @@ import 'package:styled_widget/styled_widget.dart'; class PostQuickReply extends HookConsumerWidget { final SnPost parent; - final Function? onPosted; - const PostQuickReply({super.key, required this.parent, this.onPosted}); + final VoidCallback? onPosted; + final VoidCallback? onLaunch; + const PostQuickReply({ + super.key, + required this.parent, + this.onPosted, + this.onLaunch, + }); @override Widget build(BuildContext context, WidgetRef ref) { @@ -82,9 +91,10 @@ class PostQuickReply extends HookConsumerWidget { child: TextField( controller: contentController, decoration: InputDecoration( - hintText: 'Post your reply', - border: const OutlineInputBorder(), + hintText: 'postReplyPlaceholder'.tr(), + border: InputBorder.none, isDense: true, + isCollapsed: true, contentPadding: EdgeInsets.symmetric( horizontal: 12, vertical: 8, @@ -96,6 +106,26 @@ class PostQuickReply extends HookConsumerWidget { (_) => FocusManager.instance.primaryFocus?.unfocus(), ), ), + IconButton( + onPressed: () { + onLaunch?.call(); + GoRouter.of(context) + .pushNamed( + 'postCompose', + extra: PostComposeInitialState( + content: contentController.text, + replyingTo: parent, + ), + ) + .then((value) { + if (value != null) onPosted?.call(); + }); + }, + icon: const Icon(Symbols.launch, size: 20), + padding: EdgeInsets.zero, + visualDensity: VisualDensity.compact, + constraints: const BoxConstraints(), + ), IconButton( padding: EdgeInsets.zero, visualDensity: VisualDensity.compact, @@ -109,6 +139,7 @@ class PostQuickReply extends HookConsumerWidget { : Icon(Symbols.send, size: 20), color: Theme.of(context).colorScheme.primary, onPressed: submitting.value ? null : performAction, + constraints: const BoxConstraints(), ), ], ), diff --git a/lib/widgets/post/post_replies_sheet.dart b/lib/widgets/post/post_replies_sheet.dart index 3b61b4e..3129a2c 100644 --- a/lib/widgets/post/post_replies_sheet.dart +++ b/lib/widgets/post/post_replies_sheet.dart @@ -38,14 +38,18 @@ class PostRepliesSheet extends HookConsumerWidget { if (user.value != null) Material( elevation: 2, + color: Theme.of(context).colorScheme.surfaceContainerHigh, child: PostQuickReply( parent: post, onPosted: () { ref.invalidate(postRepliesNotifierProvider(post.id)); }, + onLaunch: () { + Navigator.of(context).pop(); + }, ).padding( - bottom: MediaQuery.of(context).padding.bottom + 16, - top: 16, + bottom: MediaQuery.of(context).padding.bottom + 8, + top: 8, horizontal: 16, ), ),