fluffychat merge

This commit is contained in:
ggurdin 2026-02-05 09:22:36 -05:00
commit 4bbcf77ffb
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
11 changed files with 277 additions and 422 deletions

View file

@ -1,3 +1,39 @@
## v2.3.0
FluffyChat v2.3.0 fixes a possible database corruption bug on Android, also fixes a
major performance leak and introduces polls and threads.
- feat: Implement polls (Christian Kußowski)
- feat: Implement threads (krille-chan)
- fix: Database corruption because notification tab isolate starts too late (Christian Kußowski)
- refactor: Improved UIA support for OIDC and SSO (Christian Kußowski)
- refactor: Invite users when upgrading private room (Christian Kußowski)
- build: (deps): bump cross_file from 0.3.4+2 to 0.3.5 (dependabot[bot])
- build: (deps): bump file_picker from 10.3.3 to 10.3.6 (dependabot[bot])
- build: (deps): bump go_router from 16.3.0 to 17.0.0 (dependabot[bot])
- build: (deps): bump http from 1.5.0 to 1.6.0 (dependabot[bot])
- build: (deps): bump image_picker from 1.2.0 to 1.2.1 (dependabot[bot])
- build: (deps): bump qr_code_scanner_plus from 2.0.13 to 2.0.14 (dependabot[bot])
- build: (deps): bump video_player from 2.10.0 to 2.10.1 (dependabot[bot])
- build: Switch back to stable web auth package (krille-chan)
- build: Use matrix sdk 4.0.0 (Christian Kußowski)
- build: Use secure storage from pub.dev again (krille-chan)
- chore(translations): Added translation using Weblate (Uzbek) (bahrom04)
- chore(translations): Translated using Weblate (Basque) (xabirequejo)
- chore(translations): Translated using Weblate (Belarusian) (Alex Katon)
- chore(translations): Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山)
- chore(translations): Translated using Weblate (Dutch) (Jelv)
- chore(translations): Translated using Weblate (Estonian) (Priit Jõerüüt)
- chore(translations): Translated using Weblate (Finnish) (Priit Jõerüüt)
- chore(translations): Translated using Weblate (Finnish) (Ricky Tigg)
- chore(translations): Translated using Weblate (French) (luneth)
- chore(translations): Translated using Weblate (Galician) (josé m.)
- chore(translations): Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin)
- chore(translations): Translated using Weblate (Latvian) (Edgars Andersons)
- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye)
- chore(translations): Translated using Weblate (Uzbek) (bahrom04)
- chore(translations): Translated using Weblate (Uzbek) (BeMeritus)
## v2.2.0
FluffyChat 2.2.0 introduces a new UX for spaces and adds support for restricted

View file

@ -1,8 +1,2 @@
FluffyChat 2.2.0 introduces a new UX for spaces and adds support for restricted
join rules.
The app also now has a new design for recording voice messages including a
pause button.
You also now see the progress when downloading files.
Also FluffyChat now supports notification actions (reply and mark as read) and
also now supports Android Auto integration. Please do not cause an accident when using
the app while driving!
FluffyChat 2.3.0 fixes a possible database corruption bug, also fixes a
major performance leak and introduces polls and threads.

View file

@ -2692,79 +2692,226 @@
"@moveDown": {},
"poll": "Kysely",
"@poll": {},
"setCustomPermissionLevel": "Aseta mukautettu käyttöoikeustaso",
"setPermissionsLevelDescription": "Valitse alla ennalta määritetty rooli tai syötä mukautettu käyttöoikeustaso väliltä 0100.",
"ignoreUser": "Ohita käyttäjä",
"normalUser": "Normaali käyttäjä",
"aboutHomeserver": "Tietoja {homeserver}",
"commandHint_roomupgrade": "Päivitä tämä huone annettuun huonetyyppiin",
"appLockDescription": "Lukitse sovellus, kun sitä ei käytetä, PIN-koodilla",
"countChatsAndCountParticipants": "{chats} keskustelua ja {participants} osallistujaa",
"noChatsFoundHere": "Täällä ei ole vielä keskusteluja. Aloita uusi keskustelu jonkun kanssa käyttämällä alla olevaa painiketta. ⤵️",
"joinedChats": "Liitetyt keskustelut",
"setCustomPermissionLevel": "Aseta mukautettu lupataso",
"@setCustomPermissionLevel": {},
"setPermissionsLevelDescription": "Valitse alla oleva ennalta määritetty rooli tai anna mukautettu lupataso väliltä 0100.",
"@setPermissionsLevelDescription": {},
"ignoreUser": "Jätä huomiotta",
"@ignoreUser": {},
"normalUser": "Peruskäyttäjä",
"@normalUser": {},
"aboutHomeserver": "Tietoja {homeserver}:sta",
"@aboutHomeserver": {
"type": "String",
"placeholders": {
"homeserver": {
"type": "String"
}
}
},
"commandHint_roomupgrade": "Päivitä tämä huone annettuun huoneversioon",
"@commandHint_roomupgrade": {},
"appLockDescription": "Lukitse sovellus kun sitä ei käytetä PIN-koodin kanssa",
"@appLockDescription": {},
"countChatsAndCountParticipants": "{chats} pikakeskustelut ja {participants} osallistujat",
"@countChatsAndCountParticipants": {
"type": "String",
"placeholders": {
"chats": {
"type": "int"
},
"participants": {
"type": "int"
}
}
},
"noChatsFoundHere": "Täältä ei löytynyt vielä pikakeskusteluja. Aloita uusi pikakeskustelu jonkun kanssa alla olevalla painikkeella. ⤵️",
"@noChatsFoundHere": {},
"joinedChats": "Liittyneet pikakeskustelut",
"@joinedChats": {},
"space": "Tila",
"@space": {},
"spaces": "Tilat",
"@spaces": {},
"checkList": "Tarkistuslista",
"@checkList": {},
"countInvited": "{count} kutsuttu",
"globalChatId": "Globaali keskustelutunnus",
"accessAndVisibilityDescription": "Kuka saa liittyä tähän keskusteluun ja kuinka keskustelu voidaan löytää.",
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"globalChatId": "Yleisesti pätevä keskustelutunnus",
"@globalChatId": {},
"accessAndVisibilityDescription": "Kuka voi liittyä tähän pikakeskusteluun ja miten pikakeskustelun voi löytää.",
"@accessAndVisibilityDescription": {},
"calls": "Puhelut",
"customEmojisAndStickers": "Mukautetut emotikonit ja tarrat",
"customEmojisAndStickersBody": "Lisää tai jaa mukautettuja emotikoneja tai tarroja, joita voi käyttää missä tahansa keskustelussa.",
"@calls": {},
"customEmojisAndStickers": "Mukautetut emojit ja tarrat",
"@customEmojisAndStickers": {},
"customEmojisAndStickersBody": "Lisää tai jaa mukautettuja emojeja tai tarroja, joita voidaan käyttää missä tahansa pikakeskustelussa.",
"@customEmojisAndStickersBody": {},
"hideInvalidOrUnknownMessageFormats": "Piilota virheelliset tai tuntemattomat viestimuodot",
"@hideInvalidOrUnknownMessageFormats": {},
"block": "Estä",
"@block": {},
"blockedUsers": "Estetyt käyttäjät",
"@blockedUsers": {},
"blockListDescription": "Voit estää sinua häiritsevät käyttäjät. Et voi vastaanottaa viestejä tai huonekutsuja henkilökohtaisella estolistallasi olevilta käyttäjiltä.",
"@blockListDescription": {},
"hideMemberChangesInPublicChats": "Piilota jäsenten muutokset julkisissa pikakeskusteluissa",
"@hideMemberChangesInPublicChats": {},
"hideMemberChangesInPublicChatsBody": "Älä näytä pikakeskustelun aikajanalla, jos joku liittyy julkiseen pikakeskusteluun tai poistuu siitä luettavuuden parantamiseksi.",
"@hideMemberChangesInPublicChatsBody": {},
"blockUsername": "Jätä käyttäjänimi huomiotta",
"@blockUsername": {},
"overview": "Yleiskatsaus",
"@overview": {},
"notifyMeFor": "Ilmoita minulle",
"@notifyMeFor": {},
"passwordRecoverySettings": "Salasanan palautusasetukset",
"@passwordRecoverySettings": {},
"sendImages": "Lähetä {count} kuva",
"@sendImages": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"presenceStyle": "Läsnäolo:",
"@presenceStyle": {
"type": "String",
"placeholders": {}
},
"presencesToggle": "Näytä muiden käyttäjien tilaviestit",
"@presencesToggle": {
"type": "String",
"placeholders": {}
},
"synchronizingPleaseWaitCounter": " Synkronoidaan… ({percentage} %)",
"@synchronizingPleaseWaitCounter": {
"type": "String",
"placeholders": {
"percentage": {
"type": "String"
}
}
},
"youInvitedToBy": "📩 Sinut on kutsuttu linkin kautta kohteeseen:\n{alias}",
"@youInvitedToBy": {
"placeholders": {
"alias": {
"type": "String"
}
}
},
"invitedBy": "📩 Kutsujana {user}",
"@invitedBy": {
"placeholders": {
"user": {
"type": "String"
}
}
},
"usersMustKnock": "Käyttäjien on koputettava",
"@usersMustKnock": {},
"noOneCanJoin": "Kukaan ei voi liittyä",
"@noOneCanJoin": {},
"userWouldLikeToChangeTheChat": "{user} haluaa liittyä pikakeskusteluun.",
"@userWouldLikeToChangeTheChat": {
"placeholders": {
"user": {
"type": "String"
}
}
},
"noPublicLinkHasBeenCreatedYet": "Julkista linkkiä ei ole vielä luotu",
"@noPublicLinkHasBeenCreatedYet": {},
"knock": "Koputa",
"@knock": {},
"hidePresences": "Piilotetaanko tilaluettelo?",
"@hidePresences": {},
"removeDevicesDescription": "Sinut kirjataan ulos tästä laitteesta, etkä voi enää vastaanottaa viestejä.",
"@removeDevicesDescription": {},
"banUserDescription": "Käyttäjä kielletään pikakeskustelusta, eikä hän voi liittyä pikakeskusteluun uudelleen ennen kuin kielto kumotetaan.",
"@banUserDescription": {},
"unbanUserDescription": "Käyttäjä voi liittyä pikakeskusteluun uudelleen, jos hän yrittää.",
"@unbanUserDescription": {},
"kickUserDescription": "Käyttäjä potkitaan ulos pikakeskustelusta, mutta häntä ei porttikieltoa saada. Julkisissa pikakeskusteluissa käyttäjä voi liittyä takaisin milloin tahansa.",
"@kickUserDescription": {},
"makeAdminDescription": "Kun olet tehnyt tästä käyttäjästä järjestelmänvalvojan, et ehkä voi perua tätä, koska hänellä on siitä hetkestä lähtien samat oikeudet kuin sinulla.",
"@makeAdminDescription": {},
"pushNotificationsNotAvailable": "Työntöilmoitukset ei saatavilla",
"@pushNotificationsNotAvailable": {},
"learnMore": "Opi lisää",
"@learnMore": {},
"yourGlobalUserIdIs": "Yleisesti pätevä käyttäjätunnuksesi on: ",
"@yourGlobalUserIdIs": {},
"noUsersFoundWithQuery": "Valitettavasti käyttäjää ei löytynyt haulla \"{query}\". Tarkistathan, onko kirjoitusvirhe.",
"@noUsersFoundWithQuery": {
"type": "String",
"placeholders": {
"query": {
"type": "String"
}
}
},
"knocking": "Koputetaan",
"@knocking": {},
"chatCanBeDiscoveredViaSearchOnServer": "Pikakeskustelu löytyy haulla {server}:lta",
"@chatCanBeDiscoveredViaSearchOnServer": {
"type": "String",
"placeholders": {
"server": {
"type": "String"
}
}
},
"searchChatsRooms": "Hae #pikakeskustelut, @käyttäjät...",
"@searchChatsRooms": {},
"nothingFound": "Mitään ei löytynyt...",
"@nothingFound": {},
"groupName": "Ryhmän nimi",
"@groupName": {},
"createGroupAndInviteUsers": "Luo ryhmä ja kutsu käyttäjiä",
"@createGroupAndInviteUsers": {},
"groupCanBeFoundViaSearch": "Ryhmä löytyy haun kautta",
"@groupCanBeFoundViaSearch": {},
"wrongRecoveryKey": "Pahoittelut... tämä ei vaikuta olevan oikea palautusavain.",
"@wrongRecoveryKey": {},
"startConversation": "Aloita keskustelu",
"@startConversation": {},
"commandHint_sendraw": "Lähetä raaka JSON",
"@commandHint_sendraw": {},
"databaseMigrationTitle": "Tietokanta on optimoitu",
"@databaseMigrationTitle": {},
"databaseMigrationBody": "Odotathan hetki. Tämä voi kestää hetken.",
"@databaseMigrationBody": {},
"leaveEmptyToClearStatus": "Jätä tyhjäksi tyhjentääksesi tilasi.",
"@leaveEmptyToClearStatus": {},
"publicLink": "Julkinen linkki",
"@publicLink": {},
"publicChatAddresses": "Julkiset keskusteluosoitteet",
"@publicChatAddresses": {},
"createNewAddress": "Luo uusi osoite",
"@createNewAddress": {},
"joinSpace": "Liity tilaan",
"@joinSpace": {},
"publicSpaces": "Julkiset tilat",
"@publicSpaces": {},
"addChatOrSubSpace": "Lisää pikakeskustelu tai alitila",
"@addChatOrSubSpace": {},
"subspace": "Alitila",
"@subspace": {},
"decline": "Hylkää",
"@decline": {},
"hideRedactedMessages": "Piilota muokatut viestit",
"hideRedactedMessagesBody": "Jos joku muokkaa viestin, tämä viesti ei ole enää näkyvissä keskustelussa.",
"hideInvalidOrUnknownMessageFormats": "Piilota virheelliset tai tuntemattomat viestimuodot",
"block": "Estä",
"blockedUsers": "Estetyt käyttäjät",
"blockListDescription": "Voit estää häiritseviä käyttäjiä. Et voi vastaanottaa viestejä tai huoneen kutsuja käyttäjiltä, jotka ovat estolistallasi.",
"blockUsername": "Ohita käyttäjänimi",
"hideMemberChangesInPublicChats": "Piilota jäsenvaihdokset julkisissa keskusteluissa",
"hideMemberChangesInPublicChatsBody": "Älä näytä keskustelun aikajanalla, jos joku liittyy tai poistuu julkisesta keskustelusta, parantaen luettavuutta.",
"overview": "Yleiskatsaus",
"notifyMeFor": "Ilmoita minulle",
"passwordRecoverySettings": "Salasanan palautusasetukset",
"sendImages": "Lähetä {count} kuva",
"presenceStyle": "Läsnäolo:",
"presencesToggle": "Näytä muiden käyttäjien tilaviestit",
"synchronizingPleaseWaitCounter": " Synkronoidaan… ({percentage}%)",
"youInvitedToBy": "📩 Sinut on kutsuttu linkin kautta:\n{alias}",
"invitedBy": "📩 Kutsunut {user}",
"usersMustKnock": "Käyttäjien täytyy koputtaa",
"noOneCanJoin": "Kukaan ei voi liittyä",
"userWouldLikeToChangeTheChat": "{user} haluaisi liittyä keskusteluun.",
"noPublicLinkHasBeenCreatedYet": "Yhtään julkista linkkiä ei ole vielä luotu",
"knock": " Koputa",
"hidePresences": "Piilota tila-lista?",
"removeDevicesDescription": "Sinut kirjataan ulos tästä laitteesta etkä enää voi vastaanottaa viestejä.",
"banUserDescription": "Käyttäjä estetään keskustelusta eikä hän voi enää liittyä keskusteluun ennen kuin hänet vapautetaan estosta.",
"unbanUserDescription": "Käyttäjä voi liittyä keskusteluun uudelleen, jos hän yrittää.",
"kickUserDescription": "Käyttäjä poistetaan keskustelusta, mutta häntä ei estetä. Julkisissa keskusteluissa käyttäjä voi liittyä uudelleen milloin tahansa.",
"makeAdminDescription": "Kun teet tämän käyttäjän ylläpitäjäksi, et ehkä voi peruuttaa tätä, koska hänellä on samat oikeudet kuin sinulla.",
"pushNotificationsNotAvailable": "Ponnahdusilmoitukset eivät ole saatavilla",
"learnMore": "Lisätietoja",
"yourGlobalUserIdIs": "Kansainvälinen käyttäjätunnuksesi on: ",
"noUsersFoundWithQuery": "Valitettavasti käyttäjää ei löytynyt haulla \"{query}\". Tarkista, onko kirjoitusvirhe.",
"knocking": " Koputtaa",
"chatCanBeDiscoveredViaSearchOnServer": "Keskustelu voidaan löytää haun avulla palvelimella {server}",
"searchChatsRooms": "Etsi #keskusteluja, @käyttäjiä...",
"nothingFound": "Ei mitään löytynyt...",
"groupName": "Ryhmän nimi",
"createGroupAndInviteUsers": "Luo ryhmä ja kutsu käyttäjiä",
"groupCanBeFoundViaSearch": "Ryhmän voi löytää haun avulla",
"wrongRecoveryKey": "Valitettavasti tämä ei näytä oikealta palautusavaimelta.",
"startConversation": "Aloita keskustelu",
"commandHint_sendraw": "Lähetä raakaa jsonia",
"databaseMigrationTitle": "Tietokanta on optimoitu",
"databaseMigrationBody": "Odota hetki. Tämä saattaa kestää hetken.",
"leaveEmptyToClearStatus": "Jätä tyhjäksi poistaaksesi tilasi.",
"publicLink": "Julkinen linkki",
"publicChatAddresses": "Julkiset keskustelunumerot",
"createNewAddress": "Luo uusi osoite",
"joinSpace": "Liity tilaan",
"publicSpaces": "Julkiset tilat",
"addChatOrSubSpace": "Lisää keskustelu tai alitila",
"subspace": "Alitila",
"decline": "Hylkää",
"initAppError": "Sovelluksen alustuksessa tapahtui virhe",
"userRole": "Käyttäjän rooli",
"minimumPowerLevel": "{level} on minimitehotaso.",
@ -4043,97 +4190,6 @@
"courseStartDesc": "Pangea Bot on valmis milloin tahansa!\n\n...mutta oppiminen on parempaa ystävien kanssa!",
"@@locale": "fi",
"@@last_modified": "2026-01-29 15:24:28.359131",
"@setCustomPermissionLevel": {
"type": "String",
"placeholders": {}
},
"@setPermissionsLevelDescription": {
"type": "String",
"placeholders": {}
},
"@ignoreUser": {
"type": "String",
"placeholders": {}
},
"@normalUser": {
"type": "String",
"placeholders": {}
},
"@aboutHomeserver": {
"type": "String",
"placeholders": {
"homeserver": {
"type": "String"
}
}
},
"@commandHint_roomupgrade": {
"type": "String",
"placeholders": {}
},
"@appLockDescription": {
"type": "String",
"placeholders": {}
},
"@countChatsAndCountParticipants": {
"type": "String",
"placeholders": {
"chats": {
"type": "int"
},
"participants": {
"type": "int"
}
}
},
"@noChatsFoundHere": {
"type": "String",
"placeholders": {}
},
"@joinedChats": {
"type": "String",
"placeholders": {}
},
"@space": {
"type": "String",
"placeholders": {}
},
"@spaces": {
"type": "String",
"placeholders": {}
},
"@checkList": {
"type": "String",
"placeholders": {}
},
"@countInvited": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@globalChatId": {
"type": "String",
"placeholders": {}
},
"@accessAndVisibilityDescription": {
"type": "String",
"placeholders": {}
},
"@calls": {
"type": "String",
"placeholders": {}
},
"@customEmojisAndStickers": {
"type": "String",
"placeholders": {}
},
"@customEmojisAndStickersBody": {
"type": "String",
"placeholders": {}
},
"@hideRedactedMessages": {
"type": "String",
"placeholders": {}
@ -4142,242 +4198,6 @@
"type": "String",
"placeholders": {}
},
"@hideInvalidOrUnknownMessageFormats": {
"type": "String",
"placeholders": {}
},
"@block": {
"type": "String",
"placeholders": {}
},
"@blockedUsers": {
"type": "String",
"placeholders": {}
},
"@blockListDescription": {
"type": "String",
"placeholders": {}
},
"@blockUsername": {
"type": "String",
"placeholders": {}
},
"@hideMemberChangesInPublicChats": {
"type": "String",
"placeholders": {}
},
"@hideMemberChangesInPublicChatsBody": {
"type": "String",
"placeholders": {}
},
"@overview": {
"type": "String",
"placeholders": {}
},
"@notifyMeFor": {
"type": "String",
"placeholders": {}
},
"@passwordRecoverySettings": {
"type": "String",
"placeholders": {}
},
"@sendImages": {
"type": "String",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@presenceStyle": {
"type": "String",
"placeholders": {}
},
"@presencesToggle": {
"type": "String",
"placeholders": {}
},
"@synchronizingPleaseWaitCounter": {
"type": "String",
"placeholders": {
"percentage": {
"type": "String"
}
}
},
"@youInvitedToBy": {
"type": "String",
"placeholders": {
"alias": {
"type": "String"
}
}
},
"@invitedBy": {
"type": "String",
"placeholders": {
"user": {
"type": "String"
}
}
},
"@usersMustKnock": {
"type": "String",
"placeholders": {}
},
"@noOneCanJoin": {
"type": "String",
"placeholders": {}
},
"@userWouldLikeToChangeTheChat": {
"type": "String",
"placeholders": {
"user": {
"type": "String"
}
}
},
"@noPublicLinkHasBeenCreatedYet": {
"type": "String",
"placeholders": {}
},
"@knock": {
"type": "String",
"placeholders": {}
},
"@hidePresences": {
"type": "String",
"placeholders": {}
},
"@removeDevicesDescription": {
"type": "String",
"placeholders": {}
},
"@banUserDescription": {
"type": "String",
"placeholders": {}
},
"@unbanUserDescription": {
"type": "String",
"placeholders": {}
},
"@kickUserDescription": {
"type": "String",
"placeholders": {}
},
"@makeAdminDescription": {
"type": "String",
"placeholders": {}
},
"@pushNotificationsNotAvailable": {
"type": "String",
"placeholders": {}
},
"@learnMore": {
"type": "String",
"placeholders": {}
},
"@yourGlobalUserIdIs": {
"type": "String",
"placeholders": {}
},
"@noUsersFoundWithQuery": {
"type": "String",
"placeholders": {
"query": {
"type": "String"
}
}
},
"@knocking": {
"type": "String",
"placeholders": {}
},
"@chatCanBeDiscoveredViaSearchOnServer": {
"type": "String",
"placeholders": {
"server": {
"type": "String"
}
}
},
"@searchChatsRooms": {
"type": "String",
"placeholders": {}
},
"@nothingFound": {
"type": "String",
"placeholders": {}
},
"@groupName": {
"type": "String",
"placeholders": {}
},
"@createGroupAndInviteUsers": {
"type": "String",
"placeholders": {}
},
"@groupCanBeFoundViaSearch": {
"type": "String",
"placeholders": {}
},
"@wrongRecoveryKey": {
"type": "String",
"placeholders": {}
},
"@startConversation": {
"type": "String",
"placeholders": {}
},
"@commandHint_sendraw": {
"type": "String",
"placeholders": {}
},
"@databaseMigrationTitle": {
"type": "String",
"placeholders": {}
},
"@databaseMigrationBody": {
"type": "String",
"placeholders": {}
},
"@leaveEmptyToClearStatus": {
"type": "String",
"placeholders": {}
},
"@publicLink": {
"type": "String",
"placeholders": {}
},
"@publicChatAddresses": {
"type": "String",
"placeholders": {}
},
"@createNewAddress": {
"type": "String",
"placeholders": {}
},
"@joinSpace": {
"type": "String",
"placeholders": {}
},
"@publicSpaces": {
"type": "String",
"placeholders": {}
},
"@addChatOrSubSpace": {
"type": "String",
"placeholders": {}
},
"@subspace": {
"type": "String",
"placeholders": {}
},
"@decline": {
"type": "String",
"placeholders": {}
},
"@initAppError": {
"type": "String",
"placeholders": {}

View file

@ -1,10 +1,18 @@
{
"repeatPassword": "Parolni takrorlang",
"@repeatPassword": {},
"normalUser": "Odatiy foydalanuvchi",
"normalUser": "Oddiy foydalanuvchi",
"@normalUser": {},
"alwaysUse24HourFormat": "true",
"@alwaysUse24HourFormat": {
"description": "Set to true to always display time of day in 24 hour format."
}
},
"notAnImage": "Rasm fayli emas.",
"@notAnImage": {},
"setCustomPermissionLevel": "Maxsus ruxsatlar darajasini sozlash",
"@setCustomPermissionLevel": {},
"setPermissionsLevelDescription": "Quyidagi oldindan belgilangan rolni tanlang yoki 0-100 orasidagi maxsus ruxsatlar darajasini kiriting.",
"@setPermissionsLevelDescription": {},
"ignoreUser": "Foydalanuvchini etiborsiz qoldirish",
"@ignoreUser": {}
}

View file

@ -725,7 +725,7 @@ class Message extends StatelessWidget {
? snapshot
.data!
: Event(
eventId: event.relationshipEventId!,
eventId: event.inReplyToEventId() ?? '\$fake_event_id',
content: {
'msgtype': 'm.text',
'body': '...',

View file

@ -17,6 +17,7 @@ class PangeaEventTypes {
static const choreoRecord = "pangea.record";
static const representation = "pangea.representation";
static const sttTranslation = "pangea.stt_translation";
static const textToSpeech = "pangea.text_to_speech";
// static const vocab = "p.vocab";
static const roomInfo = "pangea.roomtopic";

View file

@ -97,7 +97,7 @@ class PangeaMessageEvent {
Set<Event> get allAudio => _latestEdit
.aggregatedEvents(
timeline,
RelationshipTypes.reply,
PangeaEventTypes.textToSpeech,
)
.where((element) {
return element.content.tryGet<Map<String, dynamic>>(
@ -416,7 +416,6 @@ class PangeaMessageEvent {
room.sendFileEvent(
file,
inReplyTo: _event,
extraContent: {
'info': {
...file.info,
@ -430,15 +429,12 @@ class PangeaMessageEvent {
ModelKey.transcription: response
.toPangeaAudioEventData(rep?.text ?? body, langCode, voice)
.toJson(),
"m.relates_to": {
"rel_type": PangeaEventTypes.textToSpeech,
"event_id": _event.eventId,
},
},
).then((eventId) async {
final Event? audioEvent =
eventId != null ? await room.getEventById(eventId) : null;
if (audioEvent != null) {
allAudio.add(audioEvent);
}
});
);
return file;
}

View file

@ -155,7 +155,10 @@ class OverlayMessage extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
if (event.relationshipType == RelationshipTypes.reply)
if (event.inReplyToEventId(
includingFallback: false,
) !=
null)
FutureBuilder<Event?>(
future: event.getReplyEvent(
timeline,

View file

@ -1507,7 +1507,7 @@ packages:
path: "/Users/ggurdin/pangea/matrix-dart-sdk"
relative: false
source: path
version: "3.0.2"
version: "4.0.0"
meta:
dependency: transitive
description:

View file

@ -61,10 +61,7 @@ dependencies:
latlong2: ^0.9.1
linkify: ^5.0.0
# #Pangea
# matrix: #^3.0.1
# git:
# url: https://github.com/famedly/matrix-dart-sdk.git
# ref: main
# matrix: ^4.0.0
matrix:
path: /Users/ggurdin/pangea/matrix-dart-sdk
# Pangea#

View file

@ -1,7 +1,7 @@
name: fluffychat
title: FluffyChat
base: core24
version: 2.2.0
version: 2.3.0
license: AGPL-3.0
summary: The cutest messenger in the Matrix network
description: |
@ -53,7 +53,7 @@ platforms:
parts:
flutter-git:
source: https://github.com/flutter/flutter.git
source-tag: 3.35.5
source-tag: 3.35.7
source-depth: 1
plugin: nil
override-build: |