feat: adiciona menu Desenvolvedor as configuracoes, nova modal Sobre e icones da marca TatuChat
- Submenu Desenvolvedor em Configuracoes (Sobre o servidor, Registros, Variaveis e ambiente) - Modal Sobre maior com logo, descricao com link e rodape (codigo-fonte, licenca, fechar) - Descricao legivel no tema dark - Drawer com a logo do projeto e links de support/formulario atualizados - flutter_launcher_icons: regenera icones Android (mipmap + adaptive), Web, iOS, macOS, Windows
2
.github/pull_request_template.md
vendored
@@ -1,4 +1,4 @@
|
||||
- [ ] I have read and understood the [contributing guidelines](https://github.com/krille-chan/fluffychat/blob/main/CONTRIBUTING.md).
|
||||
- [ ] I have read and understood the [contributing guidelines](https://gitea.weltonmoura.com.br/welton/tatuchat/blob/main/CONTRIBUTING.md).
|
||||
|
||||
### Pull Request has been tested on:
|
||||
|
||||
|
||||
@@ -5,4 +5,4 @@ SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
Has been moved to https://fluffychat.im/privacy
|
||||
Has been moved to https://tatuchat.weltonmoura.com.br/home/politica-de-privacidade/
|
||||
11
README.md
@@ -5,7 +5,7 @@ SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat
|
||||
SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
-->
|
||||
|
||||
[TatuChat](https://fluffy.chat) is an open source, nonprofit and cute [[matrix](https://matrix.org)] client written in [Flutter](https://flutter.dev). The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone.
|
||||
[TatuChat](https://tatuchat.weltonmoura.com.br/home/) is an open source, nonprofit and cute [[matrix](https://matrix.org)] client written in [Flutter](https://flutter.dev). The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone.
|
||||
|
||||
### Links:
|
||||
|
||||
@@ -18,8 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
### Screenshots:
|
||||
|
||||
<img src="https://github.com/krille-chan/fluffychat-website/blob/main/public/img/screenshot_mobile.png?raw=true" height="300">
|
||||
<img src="https://github.com/krille-chan/fluffychat-website/blob/main/public/img/screenshot_desktop.png?raw=true" height="300">
|
||||
<img src="https://tatuchat.weltonmoura.com.br/home/assets/logo.png" height="300">
|
||||
|
||||
# Features
|
||||
|
||||
@@ -45,7 +44,7 @@ SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
Please visit the website for installation instructions:
|
||||
|
||||
- https://fluffy.chat
|
||||
- https://tatuchat.weltonmoura.com.br/home/
|
||||
|
||||
# Configuration and Mobile Device Management (MDM)
|
||||
|
||||
@@ -58,8 +57,8 @@ An example configuration can be found in the `config.sample.json` file.
|
||||
|
||||
2. Clone the repo:
|
||||
```
|
||||
git clone https://github.com/krille-chan/fluffychat.git
|
||||
cd fluffychat
|
||||
git clone https://gitea.weltonmoura.com.br/welton/tatuchat.git
|
||||
cd tatuchat
|
||||
```
|
||||
3. Choose your target platform below and enable support for it.
|
||||
3.1 If you want, enable Googles Firebase Cloud Messaging:
|
||||
|
||||
@@ -11,7 +11,7 @@ If you believe you have discovered a security vulnerability in this project, **d
|
||||
|
||||
To report a security issue responsibly, please go to the Security tab or visit:
|
||||
|
||||
https://github.com/krille-chan/fluffychat/security/advisories/new
|
||||
https://gitea.weltonmoura.com.br/welton/tatuchat
|
||||
|
||||
The following information can help us address the issue:
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 19 KiB |
@@ -2,8 +2,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
|
||||
<defs>
|
||||
<linearGradient id="background" x1="0%" y1="0%" x2="0%" y2="100%">
|
||||
<stop offset="0" style="stop-color:#7c67e4; stop-opacity:1" />
|
||||
<stop offset="1" style="stop-color:#261386; stop-opacity:1" />
|
||||
<stop offset="0" style="stop-color:#7c67e4; stop-opacity:0" />
|
||||
<stop offset="1" style="stop-color:#261386; stop-opacity:0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="200" height="200" fill="url(#background)" />
|
||||
|
||||
|
Before Width: | Height: | Size: 418 B After Width: | Height: | Size: 419 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 19 KiB |
@@ -3,7 +3,7 @@
|
||||
"defaultHomeserver": "https://matrix.weltonmoura.com.br",
|
||||
"presetHomeserver": "https://matrix.weltonmoura.com.br",
|
||||
"welcomeText": "",
|
||||
"privacyUrl": "https://github.com/krille-chan/fluffychat/blob/main/PRIVACY.md",
|
||||
"privacyUrl": "https://tatuchat.weltonmoura.com.br/home/politica-de-privacidade/",
|
||||
"audioRecordingNumChannels": 1,
|
||||
"audioRecordingAutoGain": true,
|
||||
"audioRecordingEchoCancel": false,
|
||||
|
||||
@@ -36,10 +36,13 @@ abstract class AppConfig {
|
||||
static const String muralTag = 'tatuchat_mural';
|
||||
|
||||
static const String sourceCodeUrl =
|
||||
'https://github.com/krille-chan/fluffychat';
|
||||
'https://gitea.weltonmoura.com.br/welton/tatuchat';
|
||||
static const String licenseUrl =
|
||||
'https://gitea.weltonmoura.com.br/welton/tatuchat/src/branch/main/LICENSE';
|
||||
static const String supportUrl =
|
||||
'https://github.com/krille-chan/fluffychat/issues';
|
||||
static const String changelogUrl = 'https://fluffychat.im/changelog/';
|
||||
'https://gitea.weltonmoura.com.br/welton/tatuchat/issues';
|
||||
static const String changelogUrl =
|
||||
'https://tatuchat.weltonmoura.com.br/home/';
|
||||
static const String helpUrl =
|
||||
'https://ko-fi.com/post/How-can-I-support-FluffyChat-J2G325WE6I';
|
||||
|
||||
@@ -47,8 +50,8 @@ abstract class AppConfig {
|
||||
|
||||
static final Uri newIssueUrl = Uri(
|
||||
scheme: 'https',
|
||||
host: 'github.com',
|
||||
path: '/krille-chan/fluffychat/issues/new',
|
||||
host: 'gitea.weltonmoura.com.br',
|
||||
path: '/welton/tatuchat/issues/new',
|
||||
);
|
||||
|
||||
static final Uri homeserverList = Uri(
|
||||
|
||||
@@ -67,14 +67,14 @@ enum AppSettings<T> {
|
||||
'https://matrix.weltonmoura.com.br',
|
||||
),
|
||||
welcomeText<String>('chat.fluffy.welcome_text', ''),
|
||||
website<String>('chat.fluffy.website_url', 'https://tatuchat.weltonmoura.com.br'),
|
||||
website<String>('chat.fluffy.website_url', 'https://tatuchat.weltonmoura.com.br/home'),
|
||||
logoUrl<String>(
|
||||
'chat.fluffy.logo_url',
|
||||
'https://tatuchat.weltonmoura.com.br/assets/assets/logo/mini/logo_mini.png',
|
||||
),
|
||||
privacyPolicy<String>(
|
||||
'chat.fluffy.privacy_policy_url',
|
||||
'http://tatuchat.weltonmoura.com.br/politica-de-privacidade/',
|
||||
'https://tatuchat.weltonmoura.com.br/home/politica-de-privacidade/',
|
||||
),
|
||||
tos<String>('chat.fluffy.tos_url', 'https://tatuchat.weltonmoura.com.br/tos'),
|
||||
sendTimelineEventTimeout<int>('chat.fluffy.send_timeline_event_timeout', 15),
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
{
|
||||
"developer": "Developer",
|
||||
"editImage": "Edit image",
|
||||
"@editImage": {
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"environmentVariables": "Environment variables",
|
||||
"licence": "Licence",
|
||||
"rotateLeft": "Rotate left",
|
||||
"@rotateLeft": {
|
||||
"type": "String",
|
||||
|
||||
@@ -999,7 +999,7 @@
|
||||
"placeholders": {}
|
||||
},
|
||||
"scanQrCode": "Scan cód QR",
|
||||
"inviteText": "Thug {username} cuireadh duit chuig FluffyChat.\n1. Tabhair cuairt ar fluffychat.im agus a shuiteáil an app\n2. Cláraigh nó sínigh isteach\n3. Oscail an nasc cuirí:\n {link}",
|
||||
"inviteText": "Thug {username} cuireadh duit chuig FluffyChat.\n1. Tabhair cuairt ar tatuchat.weltonmoura.com.br/home/ agus a shuiteáil an app\n2. Cláraigh nó sínigh isteach\n3. Oscail an nasc cuirí:\n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -814,7 +814,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} convidoute a FluffyChat.\n1. Visita fluffychat.im e instala a app\n2. Crea unha conta ou Accede\n3. Abre a ligazón do convite: \n {link}",
|
||||
"inviteText": "{username} convidoute a FluffyChat.\n1. Visita tatuchat.weltonmoura.com.br/home/ e instala a app\n2. Crea unha conta ou Accede\n3. Abre a ligazón do convite: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -619,7 +619,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} הזמין אותך ל-FluffyChat.\n1. התקן את FluffyChat: https://fluffychat.im\n2. הירשם או היכנס\n3. פתח את קישור ההזמנה: {link}",
|
||||
"inviteText": "{username} הזמין אותך ל-FluffyChat.\n1. התקן את FluffyChat: https://tatuchat.weltonmoura.com.br/home/\n2. הירשם או היכנס\n3. פתח את קישור ההזמנה: {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -800,7 +800,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} te je pozvao/la u FluffyChat. \n1. Posjeti strnicu fluffychat.im i instaliraj aplikaciju \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: \n {link}",
|
||||
"inviteText": "{username} te je pozvao/la u FluffyChat. \n1. Posjeti strnicu tatuchat.weltonmoura.com.br/home/ i instaliraj aplikaciju \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -569,7 +569,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} meghívta a FluffyChat-be.\n1. Keresse fel a fluffychat.im oldalt, és telepítse az alkalmazást \n2. Regisztráljon vagy jelentkezzen be \n3. Nyissa meg a meghívó linket: \n {link}",
|
||||
"inviteText": "{username} meghívta a FluffyChat-be.\n1. Keresse fel a tatuchat.weltonmoura.com.br/home/ oldalt, és telepítse az alkalmazást \n2. Regisztráljon vagy jelentkezzen be \n3. Nyissa meg a meghívó linket: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} mengundang kamu ke FluffyChat. \n1. Kunjungi fluffychat.im dan instal aplikasi\n2. Daftar atau masuk \n3. Buka tautan undangan: \n {link}",
|
||||
"inviteText": "{username} mengundang kamu ke FluffyChat. \n1. Kunjungi tatuchat.weltonmoura.com.br/home/ dan instal aplikasi\n2. Daftar atau masuk \n3. Buka tautan undangan: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -690,7 +690,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} ti ha invitato/a a FluffyChat.\n1. Visita fluffychat.im e installa l'applicazione\n2. Iscriviti o accedi\n3. Apri il collegamento di invito: \n {link}",
|
||||
"inviteText": "{username} ti ha invitato/a a FluffyChat.\n1. Visita tatuchat.weltonmoura.com.br/home/ e installa l'applicazione\n2. Iscriviti o accedi\n3. Apri il collegamento di invito: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -697,7 +697,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username}があなたをFluffyChatに招待しました。\n1. FluffyChatをインストール: fluffychat.im \n2. アカウントの作成、またはサインインを行う\n3. 招待リンクを開く\n {link}",
|
||||
"inviteText": "{username}があなたをFluffyChatに招待しました。\n1. FluffyChatをインストール: tatuchat.weltonmoura.com.br/home/ \n2. アカウントの作成、またはサインインを行う\n3. 招待リンクを開く\n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -1139,7 +1139,7 @@
|
||||
}
|
||||
},
|
||||
"noChatDescriptionYet": "Ulac aglam n udiwenni i d-yenulfan yakan.",
|
||||
"inviteText": "{username} yeɛreḍ-ik·m ɣer FluffyChat.\n1. Rzu ɣer fluffychat.im syin sbedd asnas \n2. Jerred neɣ kcem \n3. Ldi aseɣwen n tinubga: \n {link}",
|
||||
"inviteText": "{username} yeɛreḍ-ik·m ɣer FluffyChat.\n1. Rzu ɣer tatuchat.weltonmoura.com.br/home/ syin sbedd asnas \n2. Jerred neɣ kcem \n3. Ldi aseɣwen n tinubga: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -1493,7 +1493,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username}님이 당신을 FluffyChat에 초대했습니다.\n1. FluffyChat 설치: https://fluffychat.im \n2. 가입하거나 로그인 \n3. 초대 링크 열기: \n {link}",
|
||||
"inviteText": "{username}님이 당신을 FluffyChat에 초대했습니다.\n1. FluffyChat 설치: https://tatuchat.weltonmoura.com.br/home/ \n2. 가입하거나 로그인 \n3. 초대 링크 열기: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -1461,7 +1461,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"inviteText": "{username} pakvietė jus prisijungti prie FluffyChat. \n1. Įdiekite FluffyChat: https://fluffychat.im \n2. Prisiregistruokite arba prisijunkite \n3. Atidarykite pakvietimo nuorodą: {link}",
|
||||
"inviteText": "{username} pakvietė jus prisijungti prie FluffyChat. \n1. Įdiekite FluffyChat: https://tatuchat.weltonmoura.com.br/home/ \n2. Prisiregistruokite arba prisijunkite \n3. Atidarykite pakvietimo nuorodą: {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -515,7 +515,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} uzaicināja pievienoties FluffyChat.\n1. Jāapmeklē fluffychat.im un jāuzstāda lietotne \n2. Jāizveido konts vai jāpiesakās \n3. Jāatver uzaicinājuma saite: \n {link}",
|
||||
"inviteText": "{username} uzaicināja pievienoties FluffyChat.\n1. Jāapmeklē tatuchat.weltonmoura.com.br/home/ un jāuzstāda lietotne \n2. Jāizveido konts vai jāpiesakās \n3. Jāatver uzaicinājuma saite: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -663,7 +663,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} har invitert deg til FluffyChat. \n1. Installer FluffyChat: https://fluffychat.im \n2. Registrer deg eller logg inn \n3. Åpne invitasjonslenken: \n {link}",
|
||||
"inviteText": "{username} har invitert deg til FluffyChat. \n1. Installer FluffyChat: https://tatuchat.weltonmoura.com.br/home/ \n2. Registrer deg eller logg inn \n3. Åpne invitasjonslenken: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -814,7 +814,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} heeft je uitgenodigd voor FluffyChat.\n1. Bezoek https://fluffychat.im en installeer de app\n2. Registreer of log in\n3. Open deze uitnodigingslink:\n{link}",
|
||||
"inviteText": "{username} heeft je uitgenodigd voor FluffyChat.\n1. Bezoek https://tatuchat.weltonmoura.com.br/home/ en installeer de app\n2. Registreer of log in\n3. Open deze uitnodigingslink:\n{link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -726,7 +726,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} zaprosił/-a Cię do FluffyChat.\n1. Odwiedź fluffychat.im i zainstaluj aplikację\n2. Zarejestuj się lub zaloguj\n3. Otwórz link zaproszenia:\n{link}",
|
||||
"inviteText": "{username} zaprosił/-a Cię do FluffyChat.\n1. Odwiedź tatuchat.weltonmoura.com.br/home/ i zainstaluj aplikację\n2. Zarejestuj się lub zaloguj\n3. Otwórz link zaproszenia:\n{link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -563,6 +563,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"developer": "Desenvolvedor",
|
||||
"devices": "Dispositivos",
|
||||
"@devices": {
|
||||
"type": "String",
|
||||
@@ -672,6 +673,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"environmentVariables": "Variáveis e ambiente",
|
||||
"errorObtainingLocation": "Erro ao obter localização: {error}",
|
||||
"@errorObtainingLocation": {
|
||||
"type": "String",
|
||||
@@ -892,6 +894,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"licence": "Licença",
|
||||
"lightTheme": "Claro",
|
||||
"@lightTheme": {
|
||||
"type": "String",
|
||||
|
||||
@@ -714,7 +714,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"inviteText": "{username} v-a invitat la FluffyChat.\n1. Instalați FluffyChat: https://fluffychat.im\n2. Înregistrați-vă sau conectați-vă\n3. Deschideți invitația: {link}",
|
||||
"inviteText": "{username} v-a invitat la FluffyChat.\n1. Instalați FluffyChat: https://tatuchat.weltonmoura.com.br/home/\n2. Înregistrați-vă sau conectați-vă\n3. Deschideți invitația: {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -814,7 +814,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} пригласил(а) вас в FluffyChat. \n1. Посетите https://fluffychat.im и установите приложение \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: \n {link}",
|
||||
"inviteText": "{username} пригласил(а) вас в FluffyChat. \n1. Посетите https://tatuchat.weltonmoura.com.br/home/ и установите приложение \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: https://fluffychat.im\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: {link}",
|
||||
"inviteText": "{username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: https://tatuchat.weltonmoura.com.br/home/\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -766,7 +766,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} вас позива у FluffyChat. \n1. Инсталирајте FluffyChat: https://fluffychat.im \n2. Региструјте се или пријавите \n3. Отворите везу позивнице: {link}",
|
||||
"inviteText": "{username} вас позива у FluffyChat. \n1. Инсталирајте FluffyChat: https://tatuchat.weltonmoura.com.br/home/ \n2. Региструјте се или пријавите \n3. Отворите везу позивнице: {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -648,7 +648,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} bjöd in dig till FluffyChat.\n1. Besök fluffychat.im och installera appen\n2. Registrera dig eller logga in\n3. Öppna inbjudningslänk:\n {link}",
|
||||
"inviteText": "{username} bjöd in dig till FluffyChat.\n1. Besök tatuchat.weltonmoura.com.br/home/ och installera appen\n2. Registrera dig eller logga in\n3. Öppna inbjudningslänk:\n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -815,7 +815,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} sizi FluffyChat'e davet etti.\n1. fluffychat.im adresini ziyaret edin ve uygulamayı kurun \n2. Kaydolun veya oturum açın \n3. Davet bağlantısını açın: \n {link}",
|
||||
"inviteText": "{username} sizi FluffyChat'e davet etti.\n1. tatuchat.weltonmoura.com.br/home/ adresini ziyaret edin ve uygulamayı kurun \n2. Kaydolun veya oturum açın \n3. Davet bağlantısını açın: \n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -534,7 +534,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} запрошує вас у FluffyChat. \n1. Перейдіть на fluffychat.im й установіть застосунок \n2. Зареєструйтесь або ввійдіть \n3. Відкрийте запрошувальне посилання:\n {link}",
|
||||
"inviteText": "{username} запрошує вас у FluffyChat. \n1. Перейдіть на tatuchat.weltonmoura.com.br/home/ й установіть застосунок \n2. Зареєструйтесь або ввійдіть \n3. Відкрийте запрошувальне посилання:\n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -844,7 +844,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} sizni FluffyChat’ga taklif qildi.\n1. fluffychat.im saytiga tashrif buyuring va ilovani oʻrnating.\n2. Roʻyxatdan oʻting yoki tizimga kiring.\n3. Taklif havolasini oching:\n{link}",
|
||||
"inviteText": "{username} sizni FluffyChat’ga taklif qildi.\n1. tatuchat.weltonmoura.com.br/home/ saytiga tashrif buyuring va ilovani oʻrnating.\n2. Roʻyxatdan oʻting yoki tizimga kiring.\n3. Taklif havolasini oching:\n{link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -786,7 +786,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} 邀请你使用 FluffyChat。 \n1. 安装 FluffyChat:https://fluffychat.im \n2. 注册或登录 \n3. 打开邀请链接:\n {link}",
|
||||
"inviteText": "{username} 邀请你使用 FluffyChat。 \n1. 安装 FluffyChat:https://tatuchat.weltonmoura.com.br/home/ \n2. 注册或登录 \n3. 打开邀请链接:\n {link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -685,7 +685,7 @@
|
||||
"type": "String",
|
||||
"placeholders": {}
|
||||
},
|
||||
"inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:\n{link}",
|
||||
"inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://tatuchat.weltonmoura.com.br/home/\n2. 登入或註冊\n3. 打開該邀請網址:\n{link}",
|
||||
"@inviteText": {
|
||||
"type": "String",
|
||||
"placeholders": {
|
||||
|
||||
@@ -12,7 +12,6 @@ import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:tatchat/utils/tatu_share.dart';
|
||||
import 'package:tatchat/widgets/avatar.dart';
|
||||
import 'package:tatchat/widgets/matrix.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
import 'chat_list.dart';
|
||||
|
||||
@@ -109,16 +108,6 @@ class ClientChooserButton extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
),
|
||||
PopupMenuItem(
|
||||
value: SettingsAction.support,
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(Icons.favorite, color: Colors.red),
|
||||
const SizedBox(width: 18),
|
||||
Text(L10n.of(context).supportFluffyChat),
|
||||
],
|
||||
),
|
||||
),
|
||||
const PopupMenuDivider(),
|
||||
..._bundleEntries(context, matrix, bundles),
|
||||
PopupMenuItem(
|
||||
@@ -249,11 +238,6 @@ class ClientChooserButton extends StatelessWidget {
|
||||
case SettingsAction.invite:
|
||||
TatuShare.shareInviteLink(context);
|
||||
break;
|
||||
case SettingsAction.support:
|
||||
launchUrlString(
|
||||
'https://ko-fi.com/post/How-can-I-support-FluffyChat-J2G325WE6I',
|
||||
);
|
||||
break;
|
||||
case SettingsAction.settings:
|
||||
context.go('/rooms/settings');
|
||||
break;
|
||||
@@ -271,13 +255,4 @@ class ClientChooserButton extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
enum SettingsAction {
|
||||
addAccount,
|
||||
newGroup,
|
||||
setStatus,
|
||||
invite,
|
||||
support,
|
||||
settings,
|
||||
archive,
|
||||
apps,
|
||||
}
|
||||
enum SettingsAction { addAccount, newGroup, setStatus, invite, settings, archive, apps }
|
||||
|
||||
@@ -11,7 +11,6 @@ import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:tatchat/utils/tatu_share.dart';
|
||||
import 'package:tatchat/widgets/avatar.dart';
|
||||
import 'package:tatchat/widgets/matrix.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
import 'chat_list.dart';
|
||||
|
||||
@@ -41,10 +40,10 @@ class Sidebar extends StatelessWidget {
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(
|
||||
Icons.chat_bubble_outline,
|
||||
size: 22,
|
||||
color: theme.colorScheme.primary,
|
||||
Image.asset(
|
||||
'./assets/logo/mini/logo_mini.png',
|
||||
width: 28,
|
||||
height: 28,
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
Text(
|
||||
@@ -115,14 +114,6 @@ class _AccountSection extends StatelessWidget {
|
||||
label: L10n.of(context).settings,
|
||||
onTap: () => context.go('/rooms/settings'),
|
||||
),
|
||||
_ActionTile(
|
||||
icon: Icons.favorite,
|
||||
iconColor: Colors.red,
|
||||
label: L10n.of(context).supportFluffyChat,
|
||||
onTap: () => launchUrlString(
|
||||
'https://ko-fi.com/post/How-can-I-support-FluffyChat-J2G325WE6I',
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
for (final bundle in bundles.keys) ...[
|
||||
if (bundles[bundle]!.length != 1 ||
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
import 'package:async/async.dart';
|
||||
import 'package:tatchat/config/setting_keys.dart';
|
||||
import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:tatchat/utils/tatu_share.dart';
|
||||
import 'package:tatchat/utils/platform_infos.dart';
|
||||
import 'package:tatchat/widgets/avatar.dart';
|
||||
import 'package:tatchat/widgets/matrix.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
import 'package:matrix/matrix.dart' hide Result;
|
||||
import 'package:tatchat/config/setting_keys.dart';
|
||||
import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:tatchat/utils/platform_infos.dart';
|
||||
import 'package:tatchat/utils/tatu_share.dart';
|
||||
import 'package:tatchat/widgets/avatar.dart';
|
||||
import 'package:tatchat/widgets/matrix.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
@@ -183,18 +183,6 @@ class SettingsView extends StatelessWidget {
|
||||
: null,
|
||||
),
|
||||
Divider(color: theme.dividerColor),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.dns_outlined),
|
||||
title: Text(
|
||||
L10n.of(context).aboutHomeserver(
|
||||
Matrix.of(context).client.userID?.domain ?? 'homeserver',
|
||||
),
|
||||
),
|
||||
onTap: () => context.go('/rooms/settings/homeserver'),
|
||||
tileColor: activeRoute.startsWith('/rooms/settings/homeserver')
|
||||
? theme.colorScheme.surfaceContainerHigh
|
||||
: null,
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.privacy_tip_outlined),
|
||||
title: Text(L10n.of(context).privacy),
|
||||
@@ -205,6 +193,57 @@ class SettingsView extends StatelessWidget {
|
||||
title: Text(L10n.of(context).about),
|
||||
onTap: () => PlatformInfos.showDialog(context),
|
||||
),
|
||||
Theme(
|
||||
data: theme.copyWith(dividerColor: Colors.transparent),
|
||||
child: ExpansionTile(
|
||||
key: const Key('DeveloperMenu'),
|
||||
leading: const Icon(Icons.code_outlined),
|
||||
title: Text(L10n.of(context).developer),
|
||||
tilePadding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
childrenPadding: const EdgeInsets.symmetric(vertical: 4),
|
||||
controlAffinity: ListTileControlAffinity.trailing,
|
||||
children: [
|
||||
ListTile(
|
||||
leading: const Icon(Icons.dns_outlined),
|
||||
title: Text(
|
||||
L10n.of(context).aboutHomeserver(
|
||||
Matrix.of(
|
||||
context,
|
||||
).client.userID?.domain ?? 'homeserver',
|
||||
),
|
||||
),
|
||||
dense: true,
|
||||
contentPadding: const EdgeInsets.only(left: 40, right: 16),
|
||||
onTap: () => context.go('/rooms/settings/homeserver'),
|
||||
tileColor: activeRoute.startsWith(
|
||||
'/rooms/settings/homeserver',
|
||||
)
|
||||
? theme.colorScheme.surfaceContainerHigh
|
||||
: null,
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.list_alt_outlined),
|
||||
title: Text(L10n.of(context).logs),
|
||||
dense: true,
|
||||
contentPadding: const EdgeInsets.only(left: 40, right: 16),
|
||||
onTap: () => context.go('/logs'),
|
||||
tileColor: activeRoute.startsWith('/logs')
|
||||
? theme.colorScheme.surfaceContainerHigh
|
||||
: null,
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.settings_applications_outlined),
|
||||
title: Text(L10n.of(context).environmentVariables),
|
||||
dense: true,
|
||||
contentPadding: const EdgeInsets.only(left: 40, right: 16),
|
||||
onTap: () => context.go('/configs'),
|
||||
tileColor: activeRoute.startsWith('/configs')
|
||||
? theme.colorScheme.surfaceContainerHigh
|
||||
: null,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Divider(color: theme.dividerColor),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.logout_outlined),
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_linkify/flutter_linkify.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
import 'package:material_ui/material_ui.dart' as m show Dialog, showDialog;
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:tatchat/config/setting_keys.dart';
|
||||
import 'package:tatchat/l10n/l10n.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:material_ui/material_ui.dart';
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
import '../config/app_config.dart';
|
||||
@@ -56,53 +57,107 @@ abstract class PlatformInfos {
|
||||
return version;
|
||||
}
|
||||
|
||||
static const String aboutDescription =
|
||||
'O TatuChat é um cliente de mensagens instantâneas focado em '
|
||||
'privacidade, simplicidade e código aberto, desenvolvido como um fork do '
|
||||
'aclamado projeto FluffyChat. Utilizando o protocolo descentralizado '
|
||||
'Matrix, ele oferece criptografia de ponta a ponta (E2EE) para proteger '
|
||||
'conversas, arquivos e mídias. Além do bate-papo tradicional, o projeto '
|
||||
'se destaca por recursos como canais de transmissão, organização em '
|
||||
'espaços, murais visuais em formato de grid e suporte a mini-apps '
|
||||
'desenvolvidos pela comunidade. Acesse Aqui. '
|
||||
'https://tatuchat.weltonmoura.com.br/home/';
|
||||
|
||||
static Future<void> showDialog(BuildContext context) async {
|
||||
final l10n = L10n.of(context);
|
||||
final version = await PlatformInfos.getVersion();
|
||||
if (!context.mounted) return;
|
||||
showAboutDialog(
|
||||
final theme = Theme.of(context);
|
||||
final size = MediaQuery.sizeOf(context);
|
||||
await m.showDialog<void>(
|
||||
context: context,
|
||||
builder: (context) => m.Dialog(
|
||||
insetPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 24,
|
||||
vertical: 40,
|
||||
),
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: 720,
|
||||
maxHeight: size.height * 0.88,
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(24),
|
||||
child: Column(
|
||||
mainAxisSize: .min,
|
||||
children: [
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: .min,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(32),
|
||||
child: Image.asset(
|
||||
'./assets/logo/mini/logo_mini.png',
|
||||
width: 96,
|
||||
height: 96,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
Text(
|
||||
AppSettings.applicationName.value,
|
||||
textAlign: TextAlign.center,
|
||||
style: theme.textTheme.headlineMedium?.copyWith(
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
Linkify(
|
||||
text: aboutDescription,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
color: theme.colorScheme.onSurface,
|
||||
),
|
||||
options: const LinkifyOptions(humanize: false),
|
||||
linkStyle: TextStyle(
|
||||
color: theme.colorScheme.primary,
|
||||
decorationColor: theme.colorScheme.primary,
|
||||
),
|
||||
onOpen: (link) => launchUrlString(link.url),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
const Divider(),
|
||||
const SizedBox(height: 8),
|
||||
Wrap(
|
||||
alignment: WrapAlignment.end,
|
||||
crossAxisAlignment: WrapCrossAlignment.center,
|
||||
spacing: 8,
|
||||
runSpacing: 4,
|
||||
children: [
|
||||
Text(l10n.versionWithNumber(version)),
|
||||
TextButton.icon(
|
||||
onPressed: () => launchUrlString(AppConfig.sourceCodeUrl),
|
||||
icon: const Icon(Icons.source_outlined),
|
||||
label: Text(l10n.sourceCode),
|
||||
),
|
||||
Builder(
|
||||
builder: (innerContext) {
|
||||
return TextButton.icon(
|
||||
onPressed: () {
|
||||
context.go('/logs');
|
||||
Navigator.of(innerContext).pop();
|
||||
},
|
||||
icon: const Icon(Icons.list_outlined),
|
||||
label: Text(l10n.logs),
|
||||
);
|
||||
},
|
||||
TextButton.icon(
|
||||
onPressed: () => launchUrlString(AppConfig.licenseUrl),
|
||||
icon: const Icon(Icons.description_outlined),
|
||||
label: Text(l10n.licence),
|
||||
),
|
||||
Builder(
|
||||
builder: (innerContext) {
|
||||
return TextButton.icon(
|
||||
onPressed: () {
|
||||
context.go('/configs');
|
||||
Navigator.of(innerContext).pop();
|
||||
},
|
||||
icon: const Icon(Icons.settings_applications_outlined),
|
||||
label: Text(l10n.advancedConfigs),
|
||||
);
|
||||
},
|
||||
TextButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(l10n.close),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
applicationIcon: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(64),
|
||||
child: Image.asset(
|
||||
'./assets/logo/mini/logo_mini.png',
|
||||
width: 64,
|
||||
height: 64,
|
||||
),
|
||||
),
|
||||
applicationName: AppSettings.applicationName.value,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ description: |
|
||||
FluffyChat is a non-profit project based on open standards and driven entirely by volunteers. Infrastructure is funded by donations, and participation is open to everyone.
|
||||
|
||||
Join the community: https://matrix.to/#/#fluffy-space:matrix.org
|
||||
Website: http://fluffychat.im
|
||||
Website: https://tatuchat.weltonmoura.com.br/home/
|
||||
Microblog: https://troet.cafe/@krille
|
||||
|
||||
grade: stable
|
||||
|
||||
BIN
web/favicon.png
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 212 B |
|
Before Width: | Height: | Size: 762 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 13 KiB |