diff --git a/lib/cubits/comments/comments_cubit.dart b/lib/cubits/comments/comments_cubit.dart index 6a7e4451..4ff64ad2 100644 --- a/lib/cubits/comments/comments_cubit.dart +++ b/lib/cubits/comments/comments_cubit.dart @@ -537,6 +537,7 @@ class CommentsCubit extends Cubit with Loggable, BuildableMixin { cmt.copyWith(level: level), ), idToCommentMap: updatedIdToCommentMap, + maxLevel: state.maxLevel < level ? level : null, ), ); offset++; diff --git a/lib/extensions/item_action_mixin.dart b/lib/extensions/item_action_mixin.dart index d6d574f9..f1f89eb0 100644 --- a/lib/extensions/item_action_mixin.dart +++ b/lib/extensions/item_action_mixin.dart @@ -21,11 +21,13 @@ mixin ItemActionMixin on State { required String content, VoidCallback? action, String? label, + bool? persist, }) { context.showSnackBar( content: content, action: action, label: label, + persist: persist, ); } diff --git a/lib/screens/item/item_screen.dart b/lib/screens/item/item_screen.dart index 03fa5cb5..55600596 100644 --- a/lib/screens/item/item_screen.dart +++ b/lib/screens/item/item_screen.dart @@ -14,7 +14,7 @@ import 'package:hacki/extensions/extensions.dart'; import 'package:hacki/models/models.dart'; import 'package:hacki/repositories/repositories.dart'; import 'package:hacki/screens/item/widgets/widgets.dart'; -import 'package:hacki/screens/widgets/widgets.dart'; +import 'package:hacki/screens/widgets/download_progress_reminder.dart'; import 'package:hacki/services/services.dart'; import 'package:hacki/styles/styles.dart'; import 'package:hacki/utils/utils.dart'; @@ -81,25 +81,10 @@ class ItemScreen extends StatefulWidget { ), ), ], - child: Stack( - children: [ - Positioned.fill( - child: ItemScreen( - item: args.item, - parentComments: args.targetComments ?? [], - shouldMarkNewComment: args.shouldMarkNewComment, - ), - ), - const Positioned( - left: Dimens.zero, - right: Dimens.zero, - bottom: Dimens.zero, - height: Dimens.pt40, - child: DownloadProgressReminder( - isDockedAtBottom: true, - ), - ), - ], + child: ItemScreen( + item: args.item, + parentComments: args.targetComments ?? [], + shouldMarkNewComment: args.shouldMarkNewComment, ), ); } @@ -442,6 +427,15 @@ class _ItemScreenState extends State bottom: Dimens.pt48, child: FloatingSkipButtons(), ), + const Positioned( + left: Dimens.zero, + right: Dimens.zero, + bottom: Dimens.zero, + height: Dimens.pt40, + child: DownloadProgressReminder( + isDockedAtBottom: true, + ), + ), ], ), bottomSheet: ReplyBox( diff --git a/lib/screens/item/widgets/item_screen_background.dart b/lib/screens/item/widgets/item_screen_background.dart index f4667ec8..3fa22feb 100644 --- a/lib/screens/item/widgets/item_screen_background.dart +++ b/lib/screens/item/widgets/item_screen_background.dart @@ -77,7 +77,9 @@ class _ItemScreenBackgroundState extends State { previous.maxLevel != current.maxLevel || previous.status != current.status, builder: (BuildContext context, CommentsState state) { - if (!_isVisible) return const SizedBox.shrink(); + if (!_isVisible || state.status == CommentsStatus.inProgress) { + return const SizedBox.shrink(); + } return FadeIn( child: Stack( children: [ diff --git a/lib/screens/item/widgets/main_view.dart b/lib/screens/item/widgets/main_view.dart index a3af50aa..c6d59987 100644 --- a/lib/screens/item/widgets/main_view.dart +++ b/lib/screens/item/widgets/main_view.dart @@ -283,6 +283,7 @@ class MainView extends StatelessWidget { HapticFeedbackUtils.error(); context.showSnackBar( content: SnackBarMessages.notLoggedInNoVoting, + persist: false, action: () { showDialog( context: context, diff --git a/lib/screens/item/widgets/more_popup_menu.dart b/lib/screens/item/widgets/more_popup_menu.dart index beeacedb..da8d009c 100644 --- a/lib/screens/item/widgets/more_popup_menu.dart +++ b/lib/screens/item/widgets/more_popup_menu.dart @@ -55,6 +55,7 @@ class MorePopupMenu extends StatelessWidget { } else if (voteState.status == VoteStatus.failureNotLoggedIn) { context.showSnackBar( content: SnackBarMessages.notLoggedInNoVoting, + persist: false, action: onLoginTapped, label: 'Log in', ); diff --git a/lib/screens/item/widgets/poll_view.dart b/lib/screens/item/widgets/poll_view.dart index dbf7d979..4f09ab73 100644 --- a/lib/screens/item/widgets/poll_view.dart +++ b/lib/screens/item/widgets/poll_view.dart @@ -76,6 +76,7 @@ class _PollViewState extends State with ItemActionMixin { VoteStatus.failureNotLoggedIn) { showSnackBar( content: SnackBarMessages.notLoggedInNoVoting, + persist: false, action: onLoginTapped, label: 'Log in', );