fix replying to wrong message

when new message arrives during the gesture
This commit is contained in:
Inex Code 2020-10-17 09:15:55 +00:00 committed by Christian Pauly
parent 999f21ffbd
commit f9904863a8
3 changed files with 70 additions and 37 deletions

View file

@ -28,6 +28,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:image_picker/image_picker.dart';
import 'package:pedantic/pedantic.dart';
import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:swipe_to_action/swipe_to_action.dart';
import '../components/dialogs/send_file_dialog.dart';
import '../components/input_bar.dart';
@ -343,9 +344,9 @@ class _ChatState extends State<_Chat> {
setState(() => selectedEvents.clear());
}
void replyAction() {
void replyAction({Event replyTo}) {
setState(() {
replyEvent = selectedEvents.first;
replyEvent = replyTo ?? selectedEvents.first;
selectedEvents.clear();
});
inputFocus.requestFocus();
@ -668,6 +669,29 @@ class _ChatState extends State<_Chat> {
key: ValueKey(i - 1),
index: i - 1,
controller: _scrollController,
child: Swipeable(
key: ValueKey(
filteredEvents[i - 1].eventId),
background: Container(
color: Theme.of(context)
.primaryColor
.withAlpha(100),
padding: EdgeInsets.symmetric(
horizontal: 12.0),
alignment: Alignment.centerLeft,
child: Row(
children: [
Icon(Icons.reply),
SizedBox(width: 2.0),
Text(L10n.of(context).reply)
],
),
),
direction: SwipeDirection.startToEnd,
onSwipe: (direction) {
replyAction(
replyTo: filteredEvents[i - 1]);
},
child: Message(filteredEvents[i - 1],
onAvatarTab: (Event event) {
sendController.text +=
@ -683,8 +707,8 @@ class _ChatState extends State<_Chat> {
);
} else {
setState(
() =>
selectedEvents.add(event),
() => selectedEvents
.add(event),
);
}
selectedEvents.sort(
@ -699,12 +723,13 @@ class _ChatState extends State<_Chat> {
context: context),
longPressSelect:
selectedEvents.isEmpty,
selected: selectedEvents
.contains(filteredEvents[i - 1]),
selected: selectedEvents.contains(
filteredEvents[i - 1]),
timeline: timeline,
nextEvent: i >= 2
? filteredEvents[i - 2]
: null),
),
);
});
},

View file

@ -877,6 +877,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0-nullsafety.1"
swipe_to_action:
dependency: "direct main"
description:
name: swipe_to_action
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
synchronized:
dependency: transitive
description:

View file

@ -69,6 +69,7 @@ dependencies:
flutter_blurhash: ^0.5.0
sentry: ">=3.0.0 <4.0.0"
scroll_to_index: ^1.0.6
swipe_to_action: ^0.1.0
dev_dependencies:
flutter_test: