From 9d8f1e3656e1cb9f559e8b1042afa798b053d4a2 Mon Sep 17 00:00:00 2001 From: OfficialDakari Date: Sat, 25 Oct 2025 19:15:36 +0500 Subject: [PATCH] add "discuss" button --- assets/l10n/intl_en.arb | 1 + assets/l10n/intl_ru.arb | 1 + lib/generated/l10n/l10n.dart | 6 ++++ lib/generated/l10n/l10n_ar.dart | 3 ++ lib/generated/l10n/l10n_be.dart | 3 ++ lib/generated/l10n/l10n_bn.dart | 3 ++ lib/generated/l10n/l10n_bo.dart | 3 ++ lib/generated/l10n/l10n_ca.dart | 3 ++ lib/generated/l10n/l10n_cs.dart | 3 ++ lib/generated/l10n/l10n_de.dart | 3 ++ lib/generated/l10n/l10n_el.dart | 3 ++ lib/generated/l10n/l10n_en.dart | 3 ++ lib/generated/l10n/l10n_eo.dart | 3 ++ lib/generated/l10n/l10n_es.dart | 3 ++ lib/generated/l10n/l10n_et.dart | 3 ++ lib/generated/l10n/l10n_eu.dart | 3 ++ lib/generated/l10n/l10n_fa.dart | 3 ++ lib/generated/l10n/l10n_fi.dart | 3 ++ lib/generated/l10n/l10n_fil.dart | 3 ++ lib/generated/l10n/l10n_fr.dart | 3 ++ lib/generated/l10n/l10n_ga.dart | 3 ++ lib/generated/l10n/l10n_gl.dart | 3 ++ lib/generated/l10n/l10n_he.dart | 3 ++ lib/generated/l10n/l10n_hi.dart | 3 ++ lib/generated/l10n/l10n_hr.dart | 3 ++ lib/generated/l10n/l10n_hu.dart | 3 ++ lib/generated/l10n/l10n_ia.dart | 3 ++ lib/generated/l10n/l10n_id.dart | 3 ++ lib/generated/l10n/l10n_ie.dart | 3 ++ lib/generated/l10n/l10n_it.dart | 3 ++ lib/generated/l10n/l10n_ja.dart | 3 ++ lib/generated/l10n/l10n_ka.dart | 3 ++ lib/generated/l10n/l10n_ko.dart | 3 ++ lib/generated/l10n/l10n_lt.dart | 3 ++ lib/generated/l10n/l10n_lv.dart | 3 ++ lib/generated/l10n/l10n_nb.dart | 3 ++ lib/generated/l10n/l10n_nl.dart | 3 ++ lib/generated/l10n/l10n_pl.dart | 3 ++ lib/generated/l10n/l10n_pt.dart | 3 ++ lib/generated/l10n/l10n_ro.dart | 3 ++ lib/generated/l10n/l10n_ru.dart | 3 ++ lib/generated/l10n/l10n_sk.dart | 3 ++ lib/generated/l10n/l10n_sl.dart | 3 ++ lib/generated/l10n/l10n_sr.dart | 3 ++ lib/generated/l10n/l10n_sv.dart | 3 ++ lib/generated/l10n/l10n_ta.dart | 3 ++ lib/generated/l10n/l10n_te.dart | 3 ++ lib/generated/l10n/l10n_th.dart | 3 ++ lib/generated/l10n/l10n_tr.dart | 3 ++ lib/generated/l10n/l10n_uk.dart | 3 ++ lib/generated/l10n/l10n_vi.dart | 3 ++ lib/generated/l10n/l10n_zh.dart | 3 ++ lib/pages/chat/chat.dart | 16 +++++++++ lib/pages/chat/chat_app_bar_title.dart | 47 +++++++++++++++++++------- lib/pages/chat/chat_view.dart | 26 +++++++++----- lib/pages/chat/events/message.dart | 4 +-- lib/pages/thread/thread.dart | 1 + 57 files changed, 226 insertions(+), 23 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index a0db7d0..e1e6aa1 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -16,6 +16,7 @@ "vote": "Vote", "changeVote": "Re-vote", "choicesSelected": "{selected} of {max} selected", + "discuss": "Discuss", "@choicesSelected": { "type": "String", "placeholders": { diff --git a/assets/l10n/intl_ru.arb b/assets/l10n/intl_ru.arb index 052efcb..8e50924 100644 --- a/assets/l10n/intl_ru.arb +++ b/assets/l10n/intl_ru.arb @@ -16,6 +16,7 @@ "vote": "Голосовать", "changeVote": "Изменить ответ", "choicesSelected": "Выбрано {selected} из {max}", + "discuss": "Обсудить", "@choicesSelected": { "type": "String", "placeholders": { diff --git a/lib/generated/l10n/l10n.dart b/lib/generated/l10n/l10n.dart index 0e28925..0142cb1 100644 --- a/lib/generated/l10n/l10n.dart +++ b/lib/generated/l10n/l10n.dart @@ -283,6 +283,12 @@ abstract class L10n { /// **'{selected} of {max} selected'** String choicesSelected(int selected, int max); + /// No description provided for @discuss. + /// + /// In en, this message translates to: + /// **'Discuss'** + String get discuss; + /// No description provided for @pollType. /// /// In en, this message translates to: diff --git a/lib/generated/l10n/l10n_ar.dart b/lib/generated/l10n/l10n_ar.dart index 6080152..1dca7be 100644 --- a/lib/generated/l10n/l10n_ar.dart +++ b/lib/generated/l10n/l10n_ar.dart @@ -56,6 +56,9 @@ class L10nAr extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_be.dart b/lib/generated/l10n/l10n_be.dart index a58e901..e56739a 100644 --- a/lib/generated/l10n/l10n_be.dart +++ b/lib/generated/l10n/l10n_be.dart @@ -56,6 +56,9 @@ class L10nBe extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_bn.dart b/lib/generated/l10n/l10n_bn.dart index 28883f5..9999e47 100644 --- a/lib/generated/l10n/l10n_bn.dart +++ b/lib/generated/l10n/l10n_bn.dart @@ -56,6 +56,9 @@ class L10nBn extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_bo.dart b/lib/generated/l10n/l10n_bo.dart index df8ca51..218b960 100644 --- a/lib/generated/l10n/l10n_bo.dart +++ b/lib/generated/l10n/l10n_bo.dart @@ -56,6 +56,9 @@ class L10nBo extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ca.dart b/lib/generated/l10n/l10n_ca.dart index 7a202db..ceadb89 100644 --- a/lib/generated/l10n/l10n_ca.dart +++ b/lib/generated/l10n/l10n_ca.dart @@ -56,6 +56,9 @@ class L10nCa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_cs.dart b/lib/generated/l10n/l10n_cs.dart index 3fc13e6..1c440b6 100644 --- a/lib/generated/l10n/l10n_cs.dart +++ b/lib/generated/l10n/l10n_cs.dart @@ -56,6 +56,9 @@ class L10nCs extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_de.dart b/lib/generated/l10n/l10n_de.dart index 0dfe099..08b344f 100644 --- a/lib/generated/l10n/l10n_de.dart +++ b/lib/generated/l10n/l10n_de.dart @@ -56,6 +56,9 @@ class L10nDe extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_el.dart b/lib/generated/l10n/l10n_el.dart index e62f767..c01c3a3 100644 --- a/lib/generated/l10n/l10n_el.dart +++ b/lib/generated/l10n/l10n_el.dart @@ -56,6 +56,9 @@ class L10nEl extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_en.dart b/lib/generated/l10n/l10n_en.dart index f6b2d1f..bfc5779 100644 --- a/lib/generated/l10n/l10n_en.dart +++ b/lib/generated/l10n/l10n_en.dart @@ -56,6 +56,9 @@ class L10nEn extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_eo.dart b/lib/generated/l10n/l10n_eo.dart index f9194f8..d1be07f 100644 --- a/lib/generated/l10n/l10n_eo.dart +++ b/lib/generated/l10n/l10n_eo.dart @@ -56,6 +56,9 @@ class L10nEo extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_es.dart b/lib/generated/l10n/l10n_es.dart index 330336c..45b37ea 100644 --- a/lib/generated/l10n/l10n_es.dart +++ b/lib/generated/l10n/l10n_es.dart @@ -56,6 +56,9 @@ class L10nEs extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_et.dart b/lib/generated/l10n/l10n_et.dart index 1f69070..108e526 100644 --- a/lib/generated/l10n/l10n_et.dart +++ b/lib/generated/l10n/l10n_et.dart @@ -56,6 +56,9 @@ class L10nEt extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_eu.dart b/lib/generated/l10n/l10n_eu.dart index 52e8d1d..5ed11ca 100644 --- a/lib/generated/l10n/l10n_eu.dart +++ b/lib/generated/l10n/l10n_eu.dart @@ -56,6 +56,9 @@ class L10nEu extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_fa.dart b/lib/generated/l10n/l10n_fa.dart index afb64a9..e41eaf6 100644 --- a/lib/generated/l10n/l10n_fa.dart +++ b/lib/generated/l10n/l10n_fa.dart @@ -56,6 +56,9 @@ class L10nFa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_fi.dart b/lib/generated/l10n/l10n_fi.dart index c71cbe5..c786c02 100644 --- a/lib/generated/l10n/l10n_fi.dart +++ b/lib/generated/l10n/l10n_fi.dart @@ -56,6 +56,9 @@ class L10nFi extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_fil.dart b/lib/generated/l10n/l10n_fil.dart index 1429a9c..72e0637 100644 --- a/lib/generated/l10n/l10n_fil.dart +++ b/lib/generated/l10n/l10n_fil.dart @@ -56,6 +56,9 @@ class L10nFil extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_fr.dart b/lib/generated/l10n/l10n_fr.dart index 5602fbf..eb38cff 100644 --- a/lib/generated/l10n/l10n_fr.dart +++ b/lib/generated/l10n/l10n_fr.dart @@ -56,6 +56,9 @@ class L10nFr extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ga.dart b/lib/generated/l10n/l10n_ga.dart index 131fcd2..6c55850 100644 --- a/lib/generated/l10n/l10n_ga.dart +++ b/lib/generated/l10n/l10n_ga.dart @@ -56,6 +56,9 @@ class L10nGa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_gl.dart b/lib/generated/l10n/l10n_gl.dart index 01ae489..5d1caec 100644 --- a/lib/generated/l10n/l10n_gl.dart +++ b/lib/generated/l10n/l10n_gl.dart @@ -56,6 +56,9 @@ class L10nGl extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_he.dart b/lib/generated/l10n/l10n_he.dart index 7db68b8..9bae162 100644 --- a/lib/generated/l10n/l10n_he.dart +++ b/lib/generated/l10n/l10n_he.dart @@ -56,6 +56,9 @@ class L10nHe extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_hi.dart b/lib/generated/l10n/l10n_hi.dart index bf68016..fc80631 100644 --- a/lib/generated/l10n/l10n_hi.dart +++ b/lib/generated/l10n/l10n_hi.dart @@ -56,6 +56,9 @@ class L10nHi extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_hr.dart b/lib/generated/l10n/l10n_hr.dart index 1e8145d..9187316 100644 --- a/lib/generated/l10n/l10n_hr.dart +++ b/lib/generated/l10n/l10n_hr.dart @@ -56,6 +56,9 @@ class L10nHr extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_hu.dart b/lib/generated/l10n/l10n_hu.dart index 410e9e0..0485832 100644 --- a/lib/generated/l10n/l10n_hu.dart +++ b/lib/generated/l10n/l10n_hu.dart @@ -56,6 +56,9 @@ class L10nHu extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ia.dart b/lib/generated/l10n/l10n_ia.dart index 5be8d93..8ea9d92 100644 --- a/lib/generated/l10n/l10n_ia.dart +++ b/lib/generated/l10n/l10n_ia.dart @@ -56,6 +56,9 @@ class L10nIa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_id.dart b/lib/generated/l10n/l10n_id.dart index 7075f65..e0c5964 100644 --- a/lib/generated/l10n/l10n_id.dart +++ b/lib/generated/l10n/l10n_id.dart @@ -56,6 +56,9 @@ class L10nId extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ie.dart b/lib/generated/l10n/l10n_ie.dart index e455c13..1074ddb 100644 --- a/lib/generated/l10n/l10n_ie.dart +++ b/lib/generated/l10n/l10n_ie.dart @@ -56,6 +56,9 @@ class L10nIe extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_it.dart b/lib/generated/l10n/l10n_it.dart index 3edf595..eb05dec 100644 --- a/lib/generated/l10n/l10n_it.dart +++ b/lib/generated/l10n/l10n_it.dart @@ -56,6 +56,9 @@ class L10nIt extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ja.dart b/lib/generated/l10n/l10n_ja.dart index 5c0b0b9..04a1d22 100644 --- a/lib/generated/l10n/l10n_ja.dart +++ b/lib/generated/l10n/l10n_ja.dart @@ -56,6 +56,9 @@ class L10nJa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ka.dart b/lib/generated/l10n/l10n_ka.dart index b14cf51..53c423f 100644 --- a/lib/generated/l10n/l10n_ka.dart +++ b/lib/generated/l10n/l10n_ka.dart @@ -56,6 +56,9 @@ class L10nKa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ko.dart b/lib/generated/l10n/l10n_ko.dart index 987d15b..92b8286 100644 --- a/lib/generated/l10n/l10n_ko.dart +++ b/lib/generated/l10n/l10n_ko.dart @@ -56,6 +56,9 @@ class L10nKo extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_lt.dart b/lib/generated/l10n/l10n_lt.dart index ac83bb7..28362b4 100644 --- a/lib/generated/l10n/l10n_lt.dart +++ b/lib/generated/l10n/l10n_lt.dart @@ -56,6 +56,9 @@ class L10nLt extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_lv.dart b/lib/generated/l10n/l10n_lv.dart index 1c846be..b3417a4 100644 --- a/lib/generated/l10n/l10n_lv.dart +++ b/lib/generated/l10n/l10n_lv.dart @@ -56,6 +56,9 @@ class L10nLv extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_nb.dart b/lib/generated/l10n/l10n_nb.dart index 46d562b..d6fc856 100644 --- a/lib/generated/l10n/l10n_nb.dart +++ b/lib/generated/l10n/l10n_nb.dart @@ -56,6 +56,9 @@ class L10nNb extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_nl.dart b/lib/generated/l10n/l10n_nl.dart index 515d851..af0eceb 100644 --- a/lib/generated/l10n/l10n_nl.dart +++ b/lib/generated/l10n/l10n_nl.dart @@ -56,6 +56,9 @@ class L10nNl extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_pl.dart b/lib/generated/l10n/l10n_pl.dart index bd7c434..a8791df 100644 --- a/lib/generated/l10n/l10n_pl.dart +++ b/lib/generated/l10n/l10n_pl.dart @@ -56,6 +56,9 @@ class L10nPl extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_pt.dart b/lib/generated/l10n/l10n_pt.dart index dec34b1..aae1a03 100644 --- a/lib/generated/l10n/l10n_pt.dart +++ b/lib/generated/l10n/l10n_pt.dart @@ -56,6 +56,9 @@ class L10nPt extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ro.dart b/lib/generated/l10n/l10n_ro.dart index bee47b5..589e285 100644 --- a/lib/generated/l10n/l10n_ro.dart +++ b/lib/generated/l10n/l10n_ro.dart @@ -56,6 +56,9 @@ class L10nRo extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ru.dart b/lib/generated/l10n/l10n_ru.dart index 6185935..6ee67f0 100644 --- a/lib/generated/l10n/l10n_ru.dart +++ b/lib/generated/l10n/l10n_ru.dart @@ -56,6 +56,9 @@ class L10nRu extends L10n { return 'Выбрано $selected из $max'; } + @override + String get discuss => 'Обсудить'; + @override String get pollType => 'Тип опроса'; diff --git a/lib/generated/l10n/l10n_sk.dart b/lib/generated/l10n/l10n_sk.dart index ccf70fd..33f6390 100644 --- a/lib/generated/l10n/l10n_sk.dart +++ b/lib/generated/l10n/l10n_sk.dart @@ -56,6 +56,9 @@ class L10nSk extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_sl.dart b/lib/generated/l10n/l10n_sl.dart index 77b0bb6..e12d910 100644 --- a/lib/generated/l10n/l10n_sl.dart +++ b/lib/generated/l10n/l10n_sl.dart @@ -56,6 +56,9 @@ class L10nSl extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_sr.dart b/lib/generated/l10n/l10n_sr.dart index 9dcd3ed..9928fe1 100644 --- a/lib/generated/l10n/l10n_sr.dart +++ b/lib/generated/l10n/l10n_sr.dart @@ -56,6 +56,9 @@ class L10nSr extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_sv.dart b/lib/generated/l10n/l10n_sv.dart index 114a14c..6b67f5c 100644 --- a/lib/generated/l10n/l10n_sv.dart +++ b/lib/generated/l10n/l10n_sv.dart @@ -56,6 +56,9 @@ class L10nSv extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_ta.dart b/lib/generated/l10n/l10n_ta.dart index 23b7602..34d65dd 100644 --- a/lib/generated/l10n/l10n_ta.dart +++ b/lib/generated/l10n/l10n_ta.dart @@ -56,6 +56,9 @@ class L10nTa extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_te.dart b/lib/generated/l10n/l10n_te.dart index 394e118..5822fb2 100644 --- a/lib/generated/l10n/l10n_te.dart +++ b/lib/generated/l10n/l10n_te.dart @@ -56,6 +56,9 @@ class L10nTe extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_th.dart b/lib/generated/l10n/l10n_th.dart index 60b3fb7..6361640 100644 --- a/lib/generated/l10n/l10n_th.dart +++ b/lib/generated/l10n/l10n_th.dart @@ -56,6 +56,9 @@ class L10nTh extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_tr.dart b/lib/generated/l10n/l10n_tr.dart index b3672ae..f5c32a3 100644 --- a/lib/generated/l10n/l10n_tr.dart +++ b/lib/generated/l10n/l10n_tr.dart @@ -56,6 +56,9 @@ class L10nTr extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_uk.dart b/lib/generated/l10n/l10n_uk.dart index 94f5d9d..60aa8ac 100644 --- a/lib/generated/l10n/l10n_uk.dart +++ b/lib/generated/l10n/l10n_uk.dart @@ -56,6 +56,9 @@ class L10nUk extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_vi.dart b/lib/generated/l10n/l10n_vi.dart index be90270..1ac0e9d 100644 --- a/lib/generated/l10n/l10n_vi.dart +++ b/lib/generated/l10n/l10n_vi.dart @@ -56,6 +56,9 @@ class L10nVi extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/generated/l10n/l10n_zh.dart b/lib/generated/l10n/l10n_zh.dart index 3bdf92f..ef91fd3 100644 --- a/lib/generated/l10n/l10n_zh.dart +++ b/lib/generated/l10n/l10n_zh.dart @@ -56,6 +56,9 @@ class L10nZh extends L10n { return '$selected of $max selected'; } + @override + String get discuss => 'Discuss'; + @override String get pollType => 'Poll type'; diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 048c4d5..9934dcd 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -948,6 +948,22 @@ class ChatController extends State } } + void discussAction() async { + final event = selectedEvents.first; + if (!room.threads.containsKey(event.eventId)) { + room.threads[event.eventId] = Thread( + room: room, + rootEvent: event, + client: room.client, + currentUserParticipated: false, + count: 0, + ); + } + + context.go('/rooms/$roomId/${event.eventId}'); + selectedEvents.clear(); + } + void endPollAction() async { final event = selectedEvents.first; final client = currentRoomBundle.firstWhere( diff --git a/lib/pages/chat/chat_app_bar_title.dart b/lib/pages/chat/chat_app_bar_title.dart index 1b11bd6..2a02699 100644 --- a/lib/pages/chat/chat_app_bar_title.dart +++ b/lib/pages/chat/chat_app_bar_title.dart @@ -31,22 +31,40 @@ class ChatAppBarTitle extends StatelessWidget { hoverColor: Colors.transparent, splashColor: Colors.transparent, highlightColor: Colors.transparent, - onTap: controller.isArchived - ? null - : () => FluffyThemes.isThreeColumnMode(context) - ? controller.toggleDisplayChatDetailsColumn() - : context.go('/rooms/${room.id}/details'), + onTap: () { + if (controller.thread != null) { + if (context.canPop()) { + context.pop(); + } else { + context.go('/rooms/${room.id}'); + } + return; + } + if (!controller.isArchived) { + if (FluffyThemes.isThreeColumnMode(context)) { + controller.toggleDisplayChatDetailsColumn(); + } else { + context.go('/rooms/${room.id}/details'); + } + } + }, child: Row( children: [ Hero( tag: 'content_banner', - child: Avatar( - mxContent: room.avatar, - name: room.getLocalizedDisplayname( - MatrixLocals(L10n.of(context)), - ), - size: 32, - ), + child: controller.thread == null + ? Avatar( + mxContent: room.avatar, + name: room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ), + size: 32, + ) + : Icon( + Icons.chat_bubble_outline, + color: Colors.grey[200], + size: 20, + ), ), const SizedBox(width: 12), Expanded( @@ -54,7 +72,10 @@ class ChatAppBarTitle extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), + controller.thread == null + ? room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context))) + : '${controller.thread!.rootEvent.senderFromMemoryOrFallback.displayName ?? controller.thread!.rootEvent.senderId}: ${controller.thread!.rootEvent.text}', maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index f518e02..7cda110 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -48,12 +48,20 @@ class ChatView extends StatelessWidget { tooltip: L10n.of(context).copy, onPressed: controller.copyEventsAction, ), - if (controller.selectedEvents.length == 1 && controller.selectedEvents.single.content['xyz.extera.translated'] == null) - IconButton( - icon: const Icon(Icons.translate_outlined), - tooltip: L10n.of(context).translateMessage, - onPressed: controller.translateEventAction, - ), + if (controller.selectedEvents.length == 1) + IconButton( + onPressed: controller.discussAction, + icon: const Icon(Icons.chat_bubble_outline), + tooltip: L10n.of(context).discuss, + ), + if (controller.selectedEvents.length == 1 && + controller.selectedEvents.single.content['xyz.extera.translated'] == + null) + IconButton( + icon: const Icon(Icons.translate_outlined), + tooltip: L10n.of(context).translateMessage, + onPressed: controller.translateEventAction, + ), if (controller.canSaveSelectedEvent) // Use builder context to correctly position the share dialog on iPad Builder( @@ -118,8 +126,10 @@ class ChatView extends StatelessWidget { Text(L10n.of(context).recoverMessage), ]), ), - if (controller.selectedEvents.single.type == 'org.matrix.msc3381.poll.start' && controller.selectedEvents.single.senderId == Matrix.of(context).client.userID) - + if (controller.selectedEvents.single.type == + 'org.matrix.msc3381.poll.start' && + controller.selectedEvents.single.senderId == + Matrix.of(context).client.userID) PopupMenuItem( value: _EventContextAction.endPoll, child: Row( diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 9ba3ef3..faefe7d 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -3,7 +3,6 @@ import 'dart:ui' as ui; import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; import 'package:extera_next/utils/adaptive_bottom_sheet.dart'; import 'package:extera_next/utils/poll_events.dart'; -import 'package:extera_next/widgets/mxc_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -733,7 +732,8 @@ class Message extends StatelessWidget { const SizedBox(width: 6), thread!.lastEvent != null ? Text( - thread!.lastEvent!.text) + thread!.lastEvent!.text, + ) : const Text('Thread'), ], ), diff --git a/lib/pages/thread/thread.dart b/lib/pages/thread/thread.dart index b1f0bf4..4c032bf 100644 --- a/lib/pages/thread/thread.dart +++ b/lib/pages/thread/thread.dart @@ -3,6 +3,7 @@ import 'package:extera_next/pages/chat/chat.dart'; import 'package:extera_next/widgets/matrix.dart'; import 'package:extera_next/widgets/share_scaffold_dialog.dart'; import 'package:flutter/material.dart'; +import 'package:matrix/matrix.dart'; class ThreadPage extends StatelessWidget { final String roomId;