fix: render not allowed html tags as text

fix: do not render html in unformatted messages
This commit is contained in:
OfficialDakari 2025-12-02 11:21:22 +05:00
parent c5c43743ee
commit c901530d59
57 changed files with 473 additions and 36 deletions

View File

@ -650,7 +650,7 @@ code + .copy-button {
<script type="text/javascript">
function configurationCacheProblems() { return (
// begin-report-data
{"diagnostics":[{"problem":[{"text":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 9.0."}],"contextualLabel":"Executing Gradle on JVM versions 16 and lower has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#minimum_daemon_jvm_version","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"executing-gradle-on-jvm-versions-and-lower","displayName":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"solutions":[[{"text":"Use JVM 17 or greater to execute Gradle. Projects can continue to use older JVM versions via toolchains."}]]}],"problemsReport":{"totalProblemCount":1,"requestedTasks":"","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
{"diagnostics":[{"problem":[{"text":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This will fail with an error in Gradle 9.0."}],"contextualLabel":"Executing Gradle on JVM versions 16 and lower has been deprecated.","documentationLink":"https://docs.gradle.org/8.13/userguide/upgrading_version_8.html#minimum_daemon_jvm_version","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"executing-gradle-on-jvm-versions-and-lower","displayName":"Executing Gradle on JVM versions 16 and lower has been deprecated."}],"solutions":[[{"text":"Use JVM 17 or greater to execute Gradle. Projects can continue to use older JVM versions via toolchains."}]]},{"problem":[{"text":"No variants exist that would match the request"}],"severity":"ERROR","contextualLabel":"Dependency requires at least JVM runtime version 11. This build uses a Java 8 JVM.","documentationLink":"https://docs.gradle.org/8.13/userguide/variant_model.html#sec:variant-select-errors","problemId":[{"name":"dependency-variant-resolution","displayName":"Variant resolution"},{"name":"no-compatible-variants","displayName":"No variants exist that would match the request"}]}],"problemsReport":{"totalProblemCount":2,"requestedTasks":"","documentationLink":"https://docs.gradle.org/8.13/userguide/reporting_problems.html","documentationLinkCaption":"Problem report","summaries":[]}}
// end-report-data
);}
</script>

View File

@ -2146,6 +2146,16 @@
"type": "String",
"placeholders": {}
},
"pollHasBeenEnded": "Poll has been ended",
"startedAPoll": "{senderName} started a poll",
"@startedAPoll": {
"type": "String",
"placeholders": {
"senderName": {
"type": "String"
}
}
},
"startedACall": "{senderName} started a call",
"@startedACall": {
"type": "String",

View File

@ -42,6 +42,16 @@
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
},
"pollHasBeenEnded": "Опрос окончен",
"startedAPoll": "{senderName} создал(-а) опрос",
"@startedAPoll": {
"type": "String",
"placeholders": {
"senderName": {
"type": "String"
}
}
},
"cleanExif": "Очищать EXIF",
"@cleanExif": {
"type": "String",

View File

@ -2877,6 +2877,18 @@ abstract class L10n {
/// **'Space name'**
String get spaceName;
/// No description provided for @pollHasBeenEnded.
///
/// In en, this message translates to:
/// **'Poll has been ended'**
String get pollHasBeenEnded;
/// No description provided for @startedAPoll.
///
/// In en, this message translates to:
/// **'{senderName} started a poll'**
String startedAPoll(String senderName);
/// No description provided for @startedACall.
///
/// In en, this message translates to:

View File

@ -1530,6 +1530,14 @@ class L10nAr extends L10n {
@override
String get spaceName => 'اسم المساحة';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return 'بدأ $senderName مكالمة';

View File

@ -1539,6 +1539,14 @@ class L10nBe extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1539,6 +1539,14 @@ class L10nBn extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1539,6 +1539,14 @@ class L10nBo extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1552,6 +1552,14 @@ class L10nCa extends L10n {
@override
String get spaceName => 'Nom de lespai';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName ha iniciat una trucada';

View File

@ -1543,6 +1543,14 @@ class L10nCs extends L10n {
@override
String get spaceName => 'Název prostoru';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName zahájil hovor';

View File

@ -1548,6 +1548,14 @@ class L10nDe extends L10n {
@override
String get spaceName => 'Space-Name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName hat einen Anruf getätigt';

View File

@ -1540,6 +1540,14 @@ class L10nEl extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1539,6 +1539,14 @@ class L10nEn extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1545,6 +1545,14 @@ class L10nEo extends L10n {
@override
String get spaceName => 'Nomo de aro';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName komencis vokon';

View File

@ -1554,6 +1554,14 @@ class L10nEs extends L10n {
@override
String get spaceName => 'Nombre del espacio';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName comenzó una llamada';

View File

@ -1547,6 +1547,14 @@ class L10nEt extends L10n {
@override
String get spaceName => 'Kogukonna nimi';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName alustas kõnet';

View File

@ -1546,6 +1546,14 @@ class L10nEu extends L10n {
@override
String get spaceName => 'Gunearen izena';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName(e)k deia hasi du';

View File

@ -1540,6 +1540,14 @@ class L10nFa extends L10n {
@override
String get spaceName => 'نام فضا';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName تماسی را شروع کرد';

View File

@ -1544,6 +1544,14 @@ class L10nFi extends L10n {
@override
String get spaceName => 'Tilan nimi';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName aloitti puhelun';

View File

@ -1545,6 +1545,14 @@ class L10nFil extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1563,6 +1563,14 @@ class L10nFr extends L10n {
@override
String get spaceName => 'Nom de l\'espace';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName a démarré un appel';

View File

@ -1557,6 +1557,14 @@ class L10nGa extends L10n {
@override
String get spaceName => 'Ainm an spáis';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return 'Thosaigh $senderName glao';

View File

@ -1546,6 +1546,14 @@ class L10nGl extends L10n {
@override
String get spaceName => 'Nome do Espazo';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName iniciou unha chamada';

View File

@ -1534,6 +1534,14 @@ class L10nHe extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1539,6 +1539,14 @@ class L10nHi extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1543,6 +1543,14 @@ class L10nHr extends L10n {
@override
String get spaceName => 'Ime prostora';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName ja započeo/la poziv';

View File

@ -1545,6 +1545,14 @@ class L10nHu extends L10n {
@override
String get spaceName => 'Tér neve';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName hívást indított';

View File

@ -1539,6 +1539,14 @@ class L10nIa extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1547,6 +1547,14 @@ class L10nId extends L10n {
@override
String get spaceName => 'Nama space';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName memulai panggilan';

View File

@ -1538,6 +1538,14 @@ class L10nIe extends L10n {
@override
String get spaceName => 'Nómine de spacie';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1550,6 +1550,14 @@ class L10nIt extends L10n {
@override
String get spaceName => 'Nome dello spazio';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName ha iniziato una chiamata';

View File

@ -1518,6 +1518,14 @@ class L10nJa extends L10n {
@override
String get spaceName => 'スペース名';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderNameは通話を開始しました';

View File

@ -1541,6 +1541,14 @@ class L10nKa extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1509,6 +1509,14 @@ class L10nKo extends L10n {
@override
String get spaceName => '스페이스 이름';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName 가 통화 시작함';

View File

@ -1544,6 +1544,14 @@ class L10nLt extends L10n {
@override
String get spaceName => 'Erdvės pavadinimas';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName pradėjo skambutį';

View File

@ -1548,6 +1548,14 @@ class L10nLv extends L10n {
@override
String get spaceName => 'Vietas nosaukums';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName uzsāka zvanu';

View File

@ -1541,6 +1541,14 @@ class L10nNb extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName startet en samtale';

View File

@ -1542,6 +1542,14 @@ class L10nNl extends L10n {
@override
String get spaceName => 'Spacenaam';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName heeft een gesprek gestart';

View File

@ -1544,6 +1544,14 @@ class L10nPl extends L10n {
@override
String get spaceName => 'Nazwa przestrzeni';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName rozpoczął/-ęła rozmowę';

View File

@ -1539,6 +1539,14 @@ class L10nPt extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1550,6 +1550,14 @@ class L10nRo extends L10n {
@override
String get spaceName => 'Numele spațiului';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName a început un apel';

View File

@ -1543,6 +1543,14 @@ class L10nRu extends L10n {
@override
String get spaceName => 'Название пространства';
@override
String get pollHasBeenEnded => 'Опрос окончен';
@override
String startedAPoll(String senderName) {
return '$senderName создал(-а) опрос';
}
@override
String startedACall(String senderName) {
return '$senderName начал(а) звонок';

View File

@ -1541,6 +1541,14 @@ class L10nSk extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1543,6 +1543,14 @@ class L10nSl extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1539,6 +1539,14 @@ class L10nSr extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName започе позив';

View File

@ -1540,6 +1540,14 @@ class L10nSv extends L10n {
@override
String get spaceName => 'Utrymmes namn';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName startade ett samtal';

View File

@ -1556,6 +1556,14 @@ class L10nTa extends L10n {
@override
String get spaceName => 'விண்வெளி பெயர்';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName அழைப்பைத் தொடங்கினார்';

View File

@ -1539,6 +1539,14 @@ class L10nTe extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1541,6 +1541,14 @@ class L10nTh extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1545,6 +1545,14 @@ class L10nTr extends L10n {
@override
String get spaceName => 'Alan adı';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName bir arama başlattı';

View File

@ -1549,6 +1549,14 @@ class L10nUk extends L10n {
@override
String get spaceName => 'Назва простору';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName розпочинає виклик';

View File

@ -1539,6 +1539,14 @@ class L10nVi extends L10n {
@override
String get spaceName => 'Space name';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName started a call';

View File

@ -1497,6 +1497,14 @@ class L10nZh extends L10n {
@override
String get spaceName => '空间名称';
@override
String get pollHasBeenEnded => 'Poll has been ended';
@override
String startedAPoll(String senderName) {
return '$senderName started a poll';
}
@override
String startedACall(String senderName) {
return '$senderName 开始了通话';

View File

@ -140,7 +140,7 @@ class HtmlMessage extends StatelessWidget {
if (depth >= 100) return const TextSpan();
// This is a text node, so we render it as text:
if (node is! dom.Element) {
if (node is! dom.Element || !allowedHtmlTags.contains(node.localName)) {
var text = node.text ?? '';
// Single linebreak nodes between Elements are ignored:
if (text == '\n') text = '';
@ -153,9 +153,6 @@ class HtmlMessage extends StatelessWidget {
);
}
// We must not render tags which are not in the allow list:
if (!allowedHtmlTags.contains(node.localName)) return const TextSpan();
switch (node.localName) {
case 'br':
return const TextSpan(text: '\n');

View File

@ -108,16 +108,26 @@ class MessageContent extends StatelessWidget {
final fontSize = AppConfig.messageFontSize * AppConfig.fontSizeFactor;
final buttonTextColor = textColor;
switch (event.type) {
case PollEvents.PollStart:
return PollWidget(event, color: textColor, linkColor: linkColor, fontSize: fontSize, timeline: timeline);
case EventTypes.Message:
case EventTypes.Encrypted:
case EventTypes.Sticker:
case PollEvents.PollStart:
// temporary solution
if (event.type == PollEvents.PollStart) {
return PollWidget(
event,
color: textColor,
linkColor: linkColor,
fontSize: fontSize,
timeline: timeline,
);
}
switch (event.messageType) {
case MessageTypes.Image:
case MessageTypes.Sticker:
if (event.redacted) continue textmessage;
final maxSize = event.messageType == MessageTypes.Image ? 512.0 : 256.0;
final maxSize =
event.messageType == MessageTypes.Image ? 512.0 : 256.0;
final w = event.content
.tryGetMap<String, Object?>('info')
?.tryGet<int>('w');
@ -155,8 +165,7 @@ class MessageContent extends StatelessWidget {
PlatformInfos.isMacOS ||
PlatformInfos.isWeb ||
// Extera Next is not being built for snap, so enable this.
PlatformInfos.isLinux
) {
PlatformInfos.isLinux) {
return AudioPlayerWidget(
event,
color: textColor,
@ -170,7 +179,12 @@ class MessageContent extends StatelessWidget {
linkColor: linkColor,
);
case MessageTypes.Video:
return EventVideoPlayer(event, textColor, linkColor, timeline: timeline,);
return EventVideoPlayer(
event,
textColor,
linkColor,
timeline: timeline,
);
case MessageTypes.File:
return MessageDownloadContent(
event,
@ -184,7 +198,9 @@ class MessageContent extends StatelessWidget {
if (AppConfig.renderHtml &&
!event.redacted &&
event.isRichMessage) {
var html = event.formattedText;
var html = AppConfig.renderHtml && event.isRichMessage
? event.formattedText
: event.text.replaceAll('<', '&lt;').replaceAll('>', '&gt;');
if (event.messageType == MessageTypes.Emote) {
html = '* $html';
}

View File

@ -38,7 +38,9 @@ class Download {
ct = CancelToken();
// Download the file
response = dio.download(httpUrl, "$downloadPath/$name",
response = dio.download(
httpUrl,
"$downloadPath/$name",
onReceiveProgress: (received, total) {
receivedBytes = received;
totalBytes = total;
@ -53,7 +55,8 @@ class Download {
options: Options(
responseType: ResponseType.bytes,
headers: {'authorization': "Bearer ${mx.accessToken}"}),
cancelToken: ct);
cancelToken: ct,
);
print("Download completed and saved to $downloadPath/$name");
}
} catch (e) {

View File

@ -363,13 +363,10 @@ class MatrixLocals extends MatrixLocalizations {
@override
// TODO: implement pollHasBeenEnded
String get pollHasBeenEnded => throw UnimplementedError();
String get pollHasBeenEnded => l10n.pollHasBeenEnded;
@override
String startedAPoll(String senderName) {
// TODO: implement startedAPoll
throw UnimplementedError();
}
String startedAPoll(String senderName) => l10n.startedAPoll(senderName);
// This is currently not used, just to keep up with matrix-dart-sdk upstream.
// I will reimplement polls to match fluffychat's, I don't know when...