fluffychat merge

This commit is contained in:
ggurdin 2026-02-04 16:06:16 -05:00
commit 4d68ac839a
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
12 changed files with 11469 additions and 11305 deletions

View file

@ -1,2 +1,2 @@
FLUTTER_VERSION=3.35.5
FLUTTER_VERSION=3.35.7
JAVA_VERSION=17

View file

@ -1361,7 +1361,7 @@
"type": "String",
"placeholders": {}
},
"pin": "Klammerda",
"pin": "Tõsta esile",
"@pin": {
"type": "String",
"placeholders": {}
@ -1874,7 +1874,7 @@
"type": "String",
"placeholders": {}
},
"unpin": "Eemalda klammerdus",
"unpin": "Eemalda esiletõstmine",
"@unpin": {
"type": "String",
"placeholders": {}
@ -2185,9 +2185,9 @@
"@unsupportedAndroidVersion": {},
"voiceCall": "Häälkõne",
"@voiceCall": {},
"confirmEventUnpin": "Kas sa oled kindel, et tahad klammerdatud sündmuse eemaldada?",
"confirmEventUnpin": "Kas sa oled kindel, et tahad esiletõstetud sündmuse jäädavalt eemaldada?",
"@confirmEventUnpin": {},
"pinMessage": "Klammerda sõnum jututuppa",
"pinMessage": "Tõsta sõnum jututoas esile",
"@pinMessage": {},
"videoCallsBetaWarning": "Palun arvesta, et videokõned on veel beetajärgus. Nad ei pruugi veel toimida kõikidel platvormidel korrektselt.",
"@videoCallsBetaWarning": {},

File diff suppressed because it is too large Load diff

View file

@ -3438,6 +3438,61 @@
},
"donate": "Tabhair Síntiús",
"@donate": {},
"startedAPoll": "Chuir {username} tús le pobalbhreith.",
"@startedAPoll": {
"type": "String",
"placeholders": {
"username": {
"type": "String"
}
}
},
"poll": "Polaitíocht",
"@poll": {},
"startPoll": "Tosaigh pobalbhreith",
"@startPoll": {},
"endPoll": "Deireadh leis an pobalbhreith",
"@endPoll": {},
"answersVisible": "Freagraí le feiceáil",
"@answersVisible": {},
"answersHidden": "Freagraí i bhfolach",
"@answersHidden": {},
"pollQuestion": "Ceist pobalbhreithe",
"@pollQuestion": {},
"answerOption": "Rogha freagartha",
"@answerOption": {},
"addAnswerOption": "Cuir rogha freagra leis",
"@addAnswerOption": {},
"allowMultipleAnswers": "Ceadaigh freagraí iolracha",
"@allowMultipleAnswers": {},
"pollHasBeenEnded": "Tá deireadh leis an pobalbhreith",
"@pollHasBeenEnded": {},
"countVotes": "{count, plural, =1{Vóta amháin} other{{count} vótaí}}",
"@countVotes": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"answersWillBeVisibleWhenPollHasEnded": "Beidh freagraí le feiceáil nuair a bheidh an pobalbhreith thart",
"@answersWillBeVisibleWhenPollHasEnded": {},
"replyInThread": "Freagra sa snáithe",
"@replyInThread": {},
"countReplies": "{count, plural, =1{Freagra amháin} other{{count} freagraí}}",
"@countReplies": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"thread": "Snáithe",
"@thread": {},
"backToMainChat": "Ar ais chuig an bpríomhchomhrá",
"@backToMainChat": {},
"writeAMessageLangCodes": "Clóscríobh i {l1} nó {l2}...",
"requests": "Iarratais",
"holdForInfo": "Bain triail as agus coinnigh síos le haghaidh eolas faoin bhfocal.",

View file

@ -3415,6 +3415,79 @@
},
"donate": "Doar",
"@donate": {},
"spaceMemberOf": "Participa no espazo {spaces}",
"@spaceMemberOf": {
"type": "String",
"placeholders": {
"spaces": {
"type": "String"
}
}
},
"spaceMemberOfCanKnock": "Os membros de {spaces} poden petar á porta",
"@spaceMemberOfCanKnock": {
"type": "String",
"placeholders": {
"spaces": {
"type": "String"
}
}
},
"startedAPoll": "{username} publicou unha enquisa.",
"@startedAPoll": {
"type": "String",
"placeholders": {
"username": {
"type": "String"
}
}
},
"poll": "Enquisa",
"@poll": {},
"startPoll": "Publicar enquisa",
"@startPoll": {},
"endPoll": "Finalizar enquisa",
"@endPoll": {},
"answersVisible": "Resultados visibles",
"@answersVisible": {},
"answersHidden": "Non se ven os resultados",
"@answersHidden": {},
"pollQuestion": "Pregunta da enquisa",
"@pollQuestion": {},
"answerOption": "Opción de resposta",
"@answerOption": {},
"addAnswerOption": "Engadir opción",
"@addAnswerOption": {},
"allowMultipleAnswers": "Permitir varias respostas",
"@allowMultipleAnswers": {},
"pollHasBeenEnded": "Rematou a enquisa",
"@pollHasBeenEnded": {},
"countVotes": "{count, plural, =1{Un voto} other{{count} votos}}",
"@countVotes": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"answersWillBeVisibleWhenPollHasEnded": "As respostas son visibles ao finalizar a enquisa",
"@answersWillBeVisibleWhenPollHasEnded": {},
"replyInThread": "Responder ao fío",
"@replyInThread": {},
"countReplies": "{count, plural, =1{Unha resposta} other{{count} respostas}}",
"@countReplies": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"thread": "Fío",
"@thread": {},
"backToMainChat": "Volver á conversa principal",
"@backToMainChat": {},
"writeAMessageLangCodes": "Escribe en {l1} ou {l2}...",
"requests": "Solicitudes",
"holdForInfo": "Fai clic e mantén para obter información sobre a palabra.",

View file

@ -3416,6 +3416,61 @@
},
"donate": "Ziedot",
"@donate": {},
"startedAPoll": "{username} uzsāka aptauju.",
"@startedAPoll": {
"type": "String",
"placeholders": {
"username": {
"type": "String"
}
}
},
"poll": "Aptauja",
"@poll": {},
"startPoll": "Sākt aptauju",
"@startPoll": {},
"endPoll": "Noslēgt aptauju",
"@endPoll": {},
"answersVisible": "Atbildes ir redzamas",
"@answersVisible": {},
"answersHidden": "Atbildes ir paslēptas",
"@answersHidden": {},
"pollQuestion": "Aptaujas jautājums",
"@pollQuestion": {},
"answerOption": "Atbildes iespēja",
"@answerOption": {},
"addAnswerOption": "Pievienot atbildes iespēju",
"@addAnswerOption": {},
"allowMultipleAnswers": "Atļaut vairākas atbildes",
"@allowMultipleAnswers": {},
"pollHasBeenEnded": "Aptauja ir noslēgusies",
"@pollHasBeenEnded": {},
"countVotes": "{count, plural, =0{{count} balsu} =1{{count} balss} other{{count} balsis}}",
"@countVotes": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"answersWillBeVisibleWhenPollHasEnded": "Atbildes būs redzams, kad aptauja noslēgsies",
"@answersWillBeVisibleWhenPollHasEnded": {},
"replyInThread": "Atbildēt pavedienā",
"@replyInThread": {},
"countReplies": "{count, plural, =0{{count} atbilžu} =1{{count} atbilde} other{{count} atbildes}}",
"@countReplies": {
"type": "int",
"placeholders": {
"count": {
"type": "int"
}
}
},
"thread": "Pavediens",
"@thread": {},
"backToMainChat": "Atgriezties galvenajā tērzēšanā",
"@backToMainChat": {},
"ignore": "Bloķēt",
"ignoredUsers": "Bloķētie lietotāji",
"writeAMessageLangCodes": "Rakstiet {l1} vai {l2}...",

View file

@ -1513,7 +1513,8 @@ class ChatController extends State<ChatPageWithRoom>
if (isArchived ||
!room.canChangeStateEvent(EventTypes.RoomPinnedEvents) ||
selectedEvents.length != 1 ||
!selectedEvents.single.status.isSent) {
!selectedEvents.single.status.isSent ||
activeThreadId != null) {
return false;
}
return true;

View file

@ -260,10 +260,11 @@ class ChatView extends StatelessWidget {
if (activeThreadId != null) {
appbarBottomHeight += ChatAppBarListTile.fixedHeight;
}
if (controller.room.pinnedEventIds.isNotEmpty) {
if (controller.room.pinnedEventIds.isNotEmpty &&
activeThreadId == null) {
appbarBottomHeight += ChatAppBarListTile.fixedHeight;
}
if (scrollUpBannerEventId != null) {
if (scrollUpBannerEventId != null && activeThreadId == null) {
appbarBottomHeight += ChatAppBarListTile.fixedHeight;
}
return Scaffold(
@ -339,6 +340,7 @@ class ChatView extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
PinnedEvents(controller),
if (activeThreadId != null)
SizedBox(
height: ChatAppBarListTile.fixedHeight,
@ -348,11 +350,18 @@ class ChatView extends StatelessWidget {
controller.scrollToEventId(activeThreadId),
icon: const Icon(Icons.message),
label: Text(L10n.of(context).replyInThread),
style: TextButton.styleFrom(
foregroundColor:
theme.colorScheme.onSecondaryContainer,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
),
),
),
),
),
PinnedEvents(controller),
if (scrollUpBannerEventId != null)
if (scrollUpBannerEventId != null &&
activeThreadId == null)
ChatAppBarListTile(
leading: IconButton(
color: theme.colorScheme.onSurfaceVariant,

View file

@ -1091,15 +1091,24 @@ class Message extends StatelessWidget {
child: threadChildren.isEmpty
? const SizedBox.shrink()
: Padding(
padding: const EdgeInsets.only(top: 1.0, bottom: 4.0),
padding: const EdgeInsets.only(
top: 2.0,
bottom: 8.0,
left: Avatar.defaultSize + 8,
),
child: ConstrainedBox(
constraints: const BoxConstraints(
maxWidth: 400,
maxWidth: FluffyThemes.columnWidth * 1.5,
),
child: TextButton.icon(
style: TextButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4),
),
foregroundColor:
theme.colorScheme.onSecondaryContainer,
backgroundColor:
theme.colorScheme.surfaceContainerHighest,
theme.colorScheme.secondaryContainer,
),
onPressed: () => enterThread(event.eventId),
icon: const Icon(Icons.message),

View file

@ -59,7 +59,7 @@ class PinnedEvents extends StatelessWidget {
final pinnedEventIds = controller.room.pinnedEventIds;
if (pinnedEventIds.isEmpty) {
if (pinnedEventIds.isEmpty || controller.activeThreadId != null) {
return const SizedBox.shrink();
}

View file

@ -40,6 +40,7 @@ Future<T?> showAdaptiveBottomSheet<T>({
return showModalBottomSheet<T>(
context: context,
useSafeArea: true,
builder: (context) => Padding(
padding: EdgeInsets.zero,
child: ClipRRect(

View file

@ -1,7 +1,7 @@
name: fluffychat
title: FluffyChat
base: core24
version: 2.1.1
version: 2.2.0
license: AGPL-3.0
summary: The cutest messenger in the Matrix network
description: |