Skip to content

Commit d20d9f8

Browse files
authored
fix combine forward not ignore transcript message (#1785)
1 parent c95569c commit d20d9f8

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

lib/ui/home/chat/selection_bottom_bar.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ class SelectionBottomBar extends HookConsumerWidget {
2424
messageSelectionProvider.select((value) => value.canForward),
2525
);
2626

27+
final canCombineForward = ref.watch(
28+
messageSelectionProvider.select((value) => value.canCombineForward),
29+
);
30+
2731
return SizedBox(
2832
height: 80,
2933
child: Row(
@@ -32,7 +36,7 @@ class SelectionBottomBar extends HookConsumerWidget {
3236
_Button(
3337
label: context.l10n.combineAndForward,
3438
iconAssetName: Resources.assetsImagesMessageTranscriptForwardSvg,
35-
enable: canForward,
39+
enable: canCombineForward,
3640
onTap: () async {
3741
final result = await showConversationSelector(
3842
context: context,

lib/ui/provider/message_selection_provider.dart

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/foundation.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
33

44
import '../../db/extension/message.dart';
5+
import '../../db/extension/message_category.dart';
56
import '../../db/mixin_database.dart';
67
import 'conversation_provider.dart';
78

@@ -11,6 +12,7 @@ class MessageSelectionNotifier extends ChangeNotifier {
1112
final Set<String> _selectedMessageIds = {};
1213
final Set<String> _messageCannotForward = {};
1314
final Set<String> _messageCannotRecall = {};
15+
final Set<String> _messageCannotCombineForward = {};
1416

1517
bool get hasSelectedMessage => _selectedMessageIds.isNotEmpty;
1618

@@ -19,18 +21,26 @@ class MessageSelectionNotifier extends ChangeNotifier {
1921
bool get canForward =>
2022
_messageCannotForward.isEmpty && _selectedMessageIds.length < 100;
2123

24+
bool get canCombineForward =>
25+
_messageCannotCombineForward.isEmpty &&
26+
_selectedMessageIds.length >= 2 &&
27+
_selectedMessageIds.length < 100;
28+
2229
bool get canRecall =>
2330
_messageCannotRecall.isEmpty && _selectedMessageIds.length < 100;
2431

2532
void selectMessage(MessageItem message) {
2633
_selectedMessageIds.add(message.messageId);
2734
if (!message.canForward) {
2835
_messageCannotForward.add(message.messageId);
36+
_messageCannotCombineForward.add(message.messageId);
2937
}
3038
if (!message.canRecall) {
3139
_messageCannotRecall.add(message.messageId);
3240
}
33-
41+
if (message.type.isTranscript) {
42+
_messageCannotCombineForward.add(message.messageId);
43+
}
3444
notifyListeners();
3545
}
3646

@@ -40,10 +50,15 @@ class MessageSelectionNotifier extends ChangeNotifier {
4050
if (_selectedMessageIds.remove(messageId)) {
4151
_messageCannotForward.remove(messageId);
4252
_messageCannotRecall.remove(messageId);
53+
_messageCannotCombineForward.remove(messageId);
4354
} else {
4455
_selectedMessageIds.add(messageId);
4556
if (!message.canForward) {
4657
_messageCannotForward.add(message.messageId);
58+
_messageCannotCombineForward.add(messageId);
59+
}
60+
if (message.type.isTranscript) {
61+
_messageCannotCombineForward.add(messageId);
4762
}
4863
if (!message.canRecall) {
4964
_messageCannotRecall.add(message.messageId);
@@ -57,6 +72,7 @@ class MessageSelectionNotifier extends ChangeNotifier {
5772
_selectedMessageIds.clear();
5873
_messageCannotForward.clear();
5974
_messageCannotRecall.clear();
75+
_messageCannotCombineForward.clear();
6076

6177
notifyListeners();
6278
}

0 commit comments

Comments
 (0)