do something
This commit is contained in:
parent
33d3536660
commit
d5fb1cfa13
|
|
@ -20,6 +20,7 @@
|
|||
"enableGradient": "Enable bubble background gradient",
|
||||
"translationDisabledInE2e": "Cloud translation is disabled in encrypted rooms to preserve privacy. Select specific words and use system context menu to translate with apps that support it.",
|
||||
"remove": "Remove",
|
||||
|
||||
"@remove": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
|
|
@ -3003,6 +3004,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"customReaction": "Add reaction",
|
||||
"canceledKeyVerification": "{sender} canceled key verification",
|
||||
"@canceledKeyVerification": {
|
||||
"type": "String",
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
"displayNavigationRail": "Всегда показывать боковую панель",
|
||||
"enableGradient": "Фоновый градиент для сообщений",
|
||||
"translationDisabledInE2e": "Облачные переводы недоступны в зашифрованных комнатах для защиты конфиденциальности. Выбирайте отдельные слова и переводите их через другие приложения.",
|
||||
"customReaction": "Добавить реакцию",
|
||||
"@importEmojis": {},
|
||||
"importFromZipFile": "Импортировать из ZIP-файла",
|
||||
"@importFromZipFile": {},
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ abstract class AppConfig {
|
|||
host: 'servers.joinmatrix.org',
|
||||
path: 'servers.json',
|
||||
);
|
||||
static const Set<String> defaultReactions = {'👍', '❤️', '😂', '😮', '😢'};
|
||||
|
||||
static void loadFromJson(Map<String, dynamic> json) {
|
||||
if (json['chat_color'] != null) {
|
||||
|
|
|
|||
|
|
@ -4095,6 +4095,12 @@ abstract class L10n {
|
|||
/// **'{sender} accepted key verification'**
|
||||
String acceptedKeyVerification(String sender);
|
||||
|
||||
/// No description provided for @customReaction.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add reaction'**
|
||||
String get customReaction;
|
||||
|
||||
/// No description provided for @canceledKeyVerification.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -2254,6 +2254,9 @@ class L10nAr extends L10n {
|
|||
return 'وافق $sender على التحقق من المفتاح';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return 'قام $sender بإلغاء التحقق من المفتاح';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nBe extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nBn extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nBo extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2292,6 +2292,9 @@ class L10nCa extends L10n {
|
|||
return '$sender ha acceptat la verificació de claus';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender ha canceŀlat la verificació de claus';
|
||||
|
|
|
|||
|
|
@ -2273,6 +2273,9 @@ class L10nCs extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2287,6 +2287,9 @@ class L10nDe extends L10n {
|
|||
return '$sender hat die Schlüsselverifikation akzeptiert';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender hat die Schlüsselverifikation abgebrochen';
|
||||
|
|
|
|||
|
|
@ -2270,6 +2270,9 @@ class L10nEl extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nEn extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2276,6 +2276,9 @@ class L10nEo extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2292,6 +2292,9 @@ class L10nEs extends L10n {
|
|||
return '$sender aceptó la verificación de clave';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceló la verificación de clave';
|
||||
|
|
|
|||
|
|
@ -2286,6 +2286,9 @@ class L10nEt extends L10n {
|
|||
return '$sender nõustus krüptovõtmete verifitseerimisega';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender katkestas krüptovõtmete verifitseerimise';
|
||||
|
|
|
|||
|
|
@ -2279,6 +2279,9 @@ class L10nEu extends L10n {
|
|||
return '$sender(e)k gakoaren egiaztapena onartu du';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender(e)k gakoen egiaztapena ezeztatu du';
|
||||
|
|
|
|||
|
|
@ -2272,6 +2272,9 @@ class L10nFa extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2278,6 +2278,9 @@ class L10nFi extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2275,6 +2275,9 @@ class L10nFil extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2312,6 +2312,9 @@ class L10nFr extends L10n {
|
|||
return '$sender a accepté la vérification de clé';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender a annulé la vérification de clé';
|
||||
|
|
|
|||
|
|
@ -2297,6 +2297,9 @@ class L10nGa extends L10n {
|
|||
return '$sender glacadh le fíorú eochair';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender cealaithe fíorú eochrach';
|
||||
|
|
|
|||
|
|
@ -2281,6 +2281,9 @@ class L10nGl extends L10n {
|
|||
return '$sender aceptou a verificación da chave';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender desbotou a verificación da chave';
|
||||
|
|
|
|||
|
|
@ -2264,6 +2264,9 @@ class L10nHe extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nHi extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2277,6 +2277,9 @@ class L10nHr extends L10n {
|
|||
return '$sender je prihvatio/la potvrđivanje ključa';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender je prekinuo/la potvrđivanje ključa';
|
||||
|
|
|
|||
|
|
@ -2279,6 +2279,9 @@ class L10nHu extends L10n {
|
|||
return '$sender elfogadta a kulcs megerősítést';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender nem fogadta el a kulcs megerősítést';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nIa extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2285,6 +2285,9 @@ class L10nId extends L10n {
|
|||
return '$sender menerima verifikasi kunci';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender membatalkan verifikasi kunci';
|
||||
|
|
|
|||
|
|
@ -2268,6 +2268,9 @@ class L10nIe extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2293,6 +2293,9 @@ class L10nIt extends L10n {
|
|||
return '$sender ha accettato la verifica della chiave';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender ha annullato la verifica della chiave';
|
||||
|
|
|
|||
|
|
@ -2238,6 +2238,9 @@ class L10nJa extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2271,6 +2271,9 @@ class L10nKa extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2221,6 +2221,9 @@ class L10nKo extends L10n {
|
|||
return '$sender가 키 검증을 수락함';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender가 키 검증을 취소함';
|
||||
|
|
|
|||
|
|
@ -2275,6 +2275,9 @@ class L10nLt extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2286,6 +2286,9 @@ class L10nLv extends L10n {
|
|||
return '$sender apstiprināja atslēgas apliecināšanu';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender atcēla atslēgas apliecināšanu';
|
||||
|
|
|
|||
|
|
@ -2272,6 +2272,9 @@ class L10nNb extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2275,6 +2275,9 @@ class L10nNl extends L10n {
|
|||
return '$sender accepteerde de sleutelverificatie';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender annuleerde de sleutelverificatie';
|
||||
|
|
|
|||
|
|
@ -2284,6 +2284,9 @@ class L10nPl extends L10n {
|
|||
return '$sender zaakceptował/-a weryfikację kluczy';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender anulował/-a weryfikację kluczy';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nPt extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2286,6 +2286,9 @@ class L10nRo extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2274,6 +2274,9 @@ class L10nRu extends L10n {
|
|||
return '$sender принял(а) подтверждение ключей';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Добавить реакцию';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender отклонил(а) подтверждение ключей';
|
||||
|
|
|
|||
|
|
@ -2270,6 +2270,9 @@ class L10nSk extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2273,6 +2273,9 @@ class L10nSl extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2265,6 +2265,9 @@ class L10nSr extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2279,6 +2279,9 @@ class L10nSv extends L10n {
|
|||
return '$sender accepterade nyckelverifieringen';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender avbröt nyckelverifieringen';
|
||||
|
|
|
|||
|
|
@ -2298,6 +2298,9 @@ class L10nTa extends L10n {
|
|||
return '$sender ஏற்றுக்கொள்ளப்பட்ட விசை சரிபார்ப்பு';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender ரத்து செய்யப்பட்ட விசை சரிபார்ப்பு';
|
||||
|
|
|
|||
|
|
@ -2269,6 +2269,9 @@ class L10nTe extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2271,6 +2271,9 @@ class L10nTh extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2278,6 +2278,9 @@ class L10nTr extends L10n {
|
|||
return '$sender anahtar doğrulamayı kabul etti';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender anahtar doğrulamayı iptal etti';
|
||||
|
|
|
|||
|
|
@ -2282,6 +2282,9 @@ class L10nUk extends L10n {
|
|||
return '$sender погоджується звірити ключі';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender скасовує звірення ключів';
|
||||
|
|
|
|||
|
|
@ -2268,6 +2268,9 @@ class L10nVi extends L10n {
|
|||
return '$sender accepted key verification';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender canceled key verification';
|
||||
|
|
|
|||
|
|
@ -2195,6 +2195,9 @@ class L10nZh extends L10n {
|
|||
return '$sender 接受了密钥验证';
|
||||
}
|
||||
|
||||
@override
|
||||
String get customReaction => 'Add reaction';
|
||||
|
||||
@override
|
||||
String canceledKeyVerification(String sender) {
|
||||
return '$sender 取消了密钥验证';
|
||||
|
|
|
|||
|
|
@ -131,6 +131,8 @@ class ChatEventList extends StatelessWidget {
|
|||
resetAnimateIn: () {
|
||||
controller.animateInEventIndex = null;
|
||||
},
|
||||
singleSelected: controller.selectedEvents.length == 1
|
||||
&& controller.selectedEvents.first.eventId == event.eventId,
|
||||
onSwipe: () => controller.replyAction(replyTo: event),
|
||||
onInfoTab: controller.showEventInfo,
|
||||
onMention: () => controller.sendController.text +=
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ class ChatView extends StatelessWidget {
|
|||
: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
ReactionsPicker(controller),
|
||||
// ReactionsPicker(controller),
|
||||
ReplyDisplay(controller),
|
||||
ChatInputRow(controller),
|
||||
ChatEmojiPicker(controller),
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import 'dart:ui' as ui;
|
||||
|
||||
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
|
||||
import 'package:fluffychat/utils/adaptive_bottom_sheet.dart';
|
||||
import 'package:fluffychat/utils/poll_events.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
|
@ -42,6 +44,7 @@ class Message extends StatelessWidget {
|
|||
final ScrollController? scrollController;
|
||||
final List<Color> colors;
|
||||
final bool gradient;
|
||||
final bool singleSelected;
|
||||
|
||||
const Message(
|
||||
this.event, {
|
||||
|
|
@ -50,6 +53,7 @@ class Message extends StatelessWidget {
|
|||
this.displayReadMarker = false,
|
||||
this.longPressSelect = false,
|
||||
this.gradient = false,
|
||||
this.singleSelected = false,
|
||||
required this.onSelect,
|
||||
required this.onInfoTab,
|
||||
required this.scrollToEventId,
|
||||
|
|
@ -162,6 +166,34 @@ class Message extends StatelessWidget {
|
|||
final resetAnimateIn = this.resetAnimateIn;
|
||||
var animateIn = this.animateIn;
|
||||
|
||||
final sentReactions = <String>{};
|
||||
if (singleSelected) {
|
||||
sentReactions.addAll(
|
||||
event
|
||||
.aggregatedEvents(
|
||||
timeline,
|
||||
RelationshipTypes.reaction,
|
||||
)
|
||||
.where(
|
||||
(event) =>
|
||||
event.senderId == event.room.client.userID &&
|
||||
event.type == 'm.reaction',
|
||||
)
|
||||
.map(
|
||||
(event) => event.content
|
||||
.tryGetMap<String, Object?>('m.relates_to')
|
||||
?.tryGet<String>('key'),
|
||||
)
|
||||
.whereType<String>(),
|
||||
);
|
||||
}
|
||||
|
||||
final showReceiptsRow =
|
||||
event.hasAggregatedEvents(timeline, RelationshipTypes.reaction);
|
||||
|
||||
final showReactionPicker =
|
||||
singleSelected && event.room.canSendDefaultMessages;
|
||||
|
||||
final row = StatefulBuilder(
|
||||
builder: (context, setState) {
|
||||
if (animateIn && resetAnimateIn != null) {
|
||||
|
|
@ -330,7 +362,9 @@ class Message extends StatelessWidget {
|
|||
clipBehavior: Clip.antiAlias,
|
||||
child: BubbleBackground(
|
||||
colors: colors,
|
||||
ignore: noBubble || !ownMessage || !gradient,
|
||||
ignore: noBubble ||
|
||||
!ownMessage ||
|
||||
!gradient,
|
||||
scrollController: scrollController,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
|
|
@ -465,6 +499,194 @@ class Message extends StatelessWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: ownMessage
|
||||
? Alignment.bottomRight
|
||||
: Alignment.bottomLeft,
|
||||
child: AnimatedSize(
|
||||
duration: FluffyThemes.animationDuration,
|
||||
curve: FluffyThemes.animationCurve,
|
||||
child: showReactionPicker
|
||||
? Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
top: 4.0,
|
||||
bottom: 4.0,
|
||||
left: 8.0,
|
||||
),
|
||||
child: Material(
|
||||
elevation: 4,
|
||||
borderRadius: BorderRadius.circular(
|
||||
AppConfig.borderRadius,
|
||||
),
|
||||
shadowColor: theme
|
||||
.colorScheme.surface
|
||||
.withAlpha(128),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
...AppConfig.defaultReactions
|
||||
.map(
|
||||
(emoji) => IconButton(
|
||||
padding: EdgeInsets.zero,
|
||||
icon: Center(
|
||||
child: Opacity(
|
||||
opacity: sentReactions
|
||||
.contains(
|
||||
emoji,
|
||||
)
|
||||
? 0.33
|
||||
: 1,
|
||||
child: Text(
|
||||
emoji,
|
||||
style:
|
||||
const TextStyle(
|
||||
fontSize: 20,
|
||||
),
|
||||
textAlign:
|
||||
TextAlign.center,
|
||||
),
|
||||
),
|
||||
),
|
||||
onPressed:
|
||||
sentReactions.contains(
|
||||
emoji,
|
||||
)
|
||||
? null
|
||||
: () {
|
||||
onSelect(
|
||||
event,
|
||||
);
|
||||
event.room
|
||||
.sendReaction(
|
||||
event.eventId,
|
||||
emoji,
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(
|
||||
Icons.add_reaction_outlined,
|
||||
),
|
||||
tooltip: L10n.of(
|
||||
context,
|
||||
).customReaction,
|
||||
onPressed: () async {
|
||||
final emoji =
|
||||
await showAdaptiveBottomSheet<
|
||||
String>(
|
||||
context: context,
|
||||
builder: (context) =>
|
||||
Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
L10n.of(context)
|
||||
.customReaction,
|
||||
),
|
||||
leading: CloseButton(
|
||||
onPressed: () =>
|
||||
Navigator.of(
|
||||
context,
|
||||
).pop(
|
||||
null,
|
||||
),
|
||||
),
|
||||
),
|
||||
body: SizedBox(
|
||||
height:
|
||||
double.infinity,
|
||||
child: EmojiPicker(
|
||||
onEmojiSelected: (
|
||||
_,
|
||||
emoji,
|
||||
) =>
|
||||
Navigator.of(
|
||||
context,
|
||||
).pop(
|
||||
emoji.emoji,
|
||||
),
|
||||
config: Config(
|
||||
emojiViewConfig:
|
||||
const EmojiViewConfig(
|
||||
backgroundColor:
|
||||
Colors
|
||||
.transparent,
|
||||
),
|
||||
bottomActionBarConfig:
|
||||
const BottomActionBarConfig(
|
||||
enabled: false,
|
||||
),
|
||||
categoryViewConfig:
|
||||
CategoryViewConfig(
|
||||
initCategory:
|
||||
Category
|
||||
.SMILEYS,
|
||||
backspaceColor: theme
|
||||
.colorScheme
|
||||
.primary,
|
||||
iconColor: theme
|
||||
.colorScheme
|
||||
.primary
|
||||
.withAlpha(
|
||||
128,
|
||||
),
|
||||
iconColorSelected:
|
||||
theme
|
||||
.colorScheme
|
||||
.primary,
|
||||
indicatorColor: theme
|
||||
.colorScheme
|
||||
.primary,
|
||||
backgroundColor:
|
||||
theme
|
||||
.colorScheme
|
||||
.surface,
|
||||
),
|
||||
skinToneConfig:
|
||||
SkinToneConfig(
|
||||
dialogBackgroundColor:
|
||||
Color.lerp(
|
||||
theme
|
||||
.colorScheme
|
||||
.surface,
|
||||
theme
|
||||
.colorScheme
|
||||
.primaryContainer,
|
||||
0.75,
|
||||
)!,
|
||||
indicatorColor: theme
|
||||
.colorScheme
|
||||
.onSurface,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
if (emoji == null) {
|
||||
return;
|
||||
}
|
||||
if (sentReactions.contains(
|
||||
emoji,
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
onSelect(event);
|
||||
|
||||
await event.room
|
||||
.sendReaction(
|
||||
event.eventId,
|
||||
emoji,
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
@ -476,8 +698,6 @@ class Message extends StatelessWidget {
|
|||
},
|
||||
);
|
||||
Widget container;
|
||||
final showReceiptsRow =
|
||||
event.hasAggregatedEvents(timeline, RelationshipTypes.reaction);
|
||||
if (showReceiptsRow || displayTime || selected || displayReadMarker) {
|
||||
container = Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
|
|
|
|||
|
|
@ -1170,10 +1170,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: matrix
|
||||
sha256: "127cc89a030e1555fc02c3434f443feca942320af6248122b36c56448e59fb19"
|
||||
sha256: "996e3b1560959afaa3118ec2b5a06734ad29acf64f9c3c09a605c3ddef22039f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ dependencies:
|
|||
latlong2: ^0.9.1
|
||||
linkify: ^5.0.0
|
||||
material: ^1.0.0+2
|
||||
matrix: ^1.0.0
|
||||
matrix: ^1.0.1
|
||||
mime: ^1.0.6
|
||||
native_imaging: ^0.2.0
|
||||
opus_caf_converter_dart: ^1.0.1
|
||||
|
|
|
|||
Loading…
Reference in New Issue