Merge branch 'main' of https://gitlab.com/ChristianPauly/fluffychat-flutter into yiffed
This commit is contained in:
commit
d5d7a254e3
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -11,6 +11,7 @@
|
||||||
.svn/
|
.svn/
|
||||||
lib/generated_plugin_registrant.dart
|
lib/generated_plugin_registrant.dart
|
||||||
google-services.json
|
google-services.json
|
||||||
|
prime
|
||||||
|
|
||||||
# libolm package
|
# libolm package
|
||||||
/assets/js/package/*
|
/assets/js/package/*
|
||||||
|
|
|
@ -158,8 +158,7 @@ upload_to_fdroid_repo:
|
||||||
- export UPDATE_VERSION=$(pcregrep -o1 'version:\\s([0-9]*\\.[0-9]*\\.[0-9]*)\\+[0-9]*' pubspec.yaml) && mv app-release.apk "${UPDATE_VERSION}.apk"
|
- export UPDATE_VERSION=$(pcregrep -o1 'version:\\s([0-9]*\\.[0-9]*\\.[0-9]*)\\+[0-9]*' pubspec.yaml) && mv app-release.apk "${UPDATE_VERSION}.apk"
|
||||||
- rsync -rav -e ssh ./ fluffy@fdroid.nordgedanken.dev:/fdroid/repo
|
- rsync -rav -e ssh ./ fluffy@fdroid.nordgedanken.dev:/fdroid/repo
|
||||||
- ssh fluffy@fdroid.nordgedanken.dev "cd fdroid && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc && fdroid update"
|
- ssh fluffy@fdroid.nordgedanken.dev "cd fdroid && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc && fdroid update"
|
||||||
dependencies:
|
needs: ["build_android_apk"]
|
||||||
- build_android_apk
|
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
|
|
||||||
|
@ -174,8 +173,7 @@ pages:
|
||||||
- cd build/web/ && bundle install && cd ../../
|
- cd build/web/ && bundle install && cd ../../
|
||||||
- cd build/web/ && bundle exec jekyll build -d public && cd ../../
|
- cd build/web/ && bundle exec jekyll build -d public && cd ../../
|
||||||
- mv build/web/public ./
|
- mv build/web/public ./
|
||||||
dependencies:
|
needs: ["build_web"]
|
||||||
- build_web
|
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
@ -215,3 +213,4 @@ snap:publish:
|
||||||
- './*.snap'
|
- './*.snap'
|
||||||
when: on_success
|
when: on_success
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
|
needs: []
|
||||||
|
|
|
@ -7,6 +7,7 @@ An experimental fork of FluffyChat.
|
||||||
* Removed Sentry
|
* Removed Sentry
|
||||||
* Double check of .well-known
|
* Double check of .well-known
|
||||||
* Get Jitsi instance from .well-known
|
* Get Jitsi instance from .well-known
|
||||||
|
* Redesigned settings
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
* Single and group chats
|
* Single and group chats
|
||||||
|
|
|
@ -2,3 +2,4 @@ arb-dir: lib/l10n
|
||||||
template-arb-file: intl_en.arb
|
template-arb-file: intl_en.arb
|
||||||
output-localization-file: l10n.dart
|
output-localization-file: l10n.dart
|
||||||
output-class: L10n
|
output-class: L10n
|
||||||
|
preferred-supported-locales: ["en"]
|
|
@ -11,7 +11,6 @@ import 'package:furrychat/utils/user_status.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||||
import 'package:localstorage/localstorage.dart';
|
|
||||||
import 'package:universal_html/prefer_universal/html.dart' as html;
|
import 'package:universal_html/prefer_universal/html.dart' as html;
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
@ -77,8 +76,7 @@ class MatrixState extends State<Matrix> {
|
||||||
void clean() async {
|
void clean() async {
|
||||||
if (!kIsWeb) return;
|
if (!kIsWeb) return;
|
||||||
|
|
||||||
final storage = LocalStorage('LocalStorage');
|
final storage = await getLocalStorage();
|
||||||
await storage.ready;
|
|
||||||
await storage.deleteItem(widget.clientName);
|
await storage.deleteItem(widget.clientName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -189,7 +189,7 @@
|
||||||
"username": {}
|
"username": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"changedTheDisplaynameTo": "{username} غيّر اسمه الى {displayname}",
|
"changedTheDisplaynameTo": "{username} غيّر اسمه العلني الى {displayname}",
|
||||||
"@changedTheDisplaynameTo": {
|
"@changedTheDisplaynameTo": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
@ -375,7 +375,7 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"couldNotSetDisplayname": "تعذر تعيين الاسم",
|
"couldNotSetDisplayname": "تعذر تعيين الاسم العلني",
|
||||||
"@couldNotSetDisplayname": {
|
"@couldNotSetDisplayname": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
@ -489,7 +489,7 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"displaynameHasBeenChanged": "غُيِّر الاسم",
|
"displaynameHasBeenChanged": "غُيِّر الاسم العلني",
|
||||||
"@displaynameHasBeenChanged": {
|
"@displaynameHasBeenChanged": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
@ -499,7 +499,7 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"editDisplayname": "حرر الاسم",
|
"editDisplayname": "حرر الاسم العلني",
|
||||||
"@editDisplayname": {
|
"@editDisplayname": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
@ -514,7 +514,7 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"emoteWarnNeedToPick": "اختر صورة ورمزا للانفعالة",
|
"emoteWarnNeedToPick": "اختر صورة ورمزا للانفعالة!",
|
||||||
"@emoteWarnNeedToPick": {
|
"@emoteWarnNeedToPick": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
@ -1374,7 +1374,7 @@
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"useAmoledTheme": "",
|
"useAmoledTheme": "هل تريد استخدم ألوان متوافقة مع Amoled؟",
|
||||||
"@useAmoledTheme": {
|
"@useAmoledTheme": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
@ -1507,14 +1507,14 @@
|
||||||
"unreadCount": {}
|
"unreadCount": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unreadMessages": "",
|
"unreadMessages": "{unreadEvents} رسالة غير مقروءة",
|
||||||
"@unreadMessages": {
|
"@unreadMessages": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
"unreadEvents": {}
|
"unreadEvents": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unreadMessagesInChats": "",
|
"unreadMessagesInChats": "{unreadEvents} رسالة غير مقروءة من {unreadChats} محادثة",
|
||||||
"@unreadMessagesInChats": {
|
"@unreadMessagesInChats": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
@ -1702,5 +1702,10 @@
|
||||||
"@yourOwnUsername": {
|
"@yourOwnUsername": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"privacy": "الخصوصية",
|
||||||
|
"@privacy": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,5 +194,272 @@
|
||||||
"@about": {
|
"@about": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"deleteMessage": "Cancella messaggio",
|
||||||
|
"@deleteMessage": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"deleteAccount": "Elimina account",
|
||||||
|
"@deleteAccount": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"deactivateAccountWarning": "Disabiliterà il tuo account. Non puoi tornare indietro! Sei sicuro?",
|
||||||
|
"@deactivateAccountWarning": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"delete": "Cancella",
|
||||||
|
"@delete": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"dateWithYear": "{day}-{month}-{year}",
|
||||||
|
"@dateWithYear": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"year": {},
|
||||||
|
"month": {},
|
||||||
|
"day": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dateWithoutYear": "{month}-{day}",
|
||||||
|
"@dateWithoutYear": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"month": {},
|
||||||
|
"day": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dateAndTimeOfDay": "{date}, {timeOfDay}",
|
||||||
|
"@dateAndTimeOfDay": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"date": {},
|
||||||
|
"timeOfDay": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"currentlyActive": "Attualmente attivo",
|
||||||
|
"@currentlyActive": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"createNewGroup": "Crea un nuovo gruppo",
|
||||||
|
"@createNewGroup": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"createdTheChat": "{username} ha creato la chat",
|
||||||
|
"@createdTheChat": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"createAccountNow": "Crea ora un account",
|
||||||
|
"@createAccountNow": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"create": "Crea",
|
||||||
|
"@create": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"countParticipants": "{count} partecipanti",
|
||||||
|
"@countParticipants": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"couldNotSetDisplayname": "Impossibile impostare nome",
|
||||||
|
"@couldNotSetDisplayname": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"couldNotSetAvatar": "Impossibile impostare avatar",
|
||||||
|
"@couldNotSetAvatar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"couldNotDecryptMessage": "Impossibile decriptare messaggio: {error}",
|
||||||
|
"@couldNotDecryptMessage": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"error": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"copy": "Copia",
|
||||||
|
"@copy": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"copiedToClipboard": "Copiato negli Appunti",
|
||||||
|
"@copiedToClipboard": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"contentViewer": "Visualizzatore contenuti",
|
||||||
|
"@contentViewer": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"contactHasBeenInvitedToTheGroup": "Il contatto è stato invitato nel gruppo",
|
||||||
|
"@contactHasBeenInvitedToTheGroup": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"connectionAttemptFailed": "Tentativo di connessione fallito",
|
||||||
|
"@connectionAttemptFailed": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"connect": "Connetti",
|
||||||
|
"@connect": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"confirm": "Conferma",
|
||||||
|
"@confirm": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"compareNumbersMatch": "Confronta e assicurati che le seguenti emoji corrispondano a quelle dell'altro dispositivo:",
|
||||||
|
"@compareNumbersMatch": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"compareEmojiMatch": "Confronta e assicurati che le seguenti emoji corrispondano a quelle dell'altro dispositivo:",
|
||||||
|
"@compareEmojiMatch": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"close": "Chiudi",
|
||||||
|
"@close": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"chooseAUsername": "Scegli un username",
|
||||||
|
"@chooseAUsername": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"chooseAStrongPassword": "Scegli una password complessa",
|
||||||
|
"@chooseAStrongPassword": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"chatDetails": "Dettagli chat",
|
||||||
|
"@chatDetails": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"chat": "Chat",
|
||||||
|
"@chat": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"channelCorruptedDecryptError": "La crittografia è corrotta",
|
||||||
|
"@channelCorruptedDecryptError": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"changeTheServer": "Cambia server",
|
||||||
|
"@changeTheServer": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"changeWallpaper": "Cambia sfondo",
|
||||||
|
"@changeWallpaper": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"changeTheNameOfTheGroup": "Cambia il nome del gruppo",
|
||||||
|
"@changeTheNameOfTheGroup": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"changelog": "Registro cambiamenti",
|
||||||
|
"@changelog": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"changedTheRoomInvitationLink": "{username} ha cambiato il link di invito",
|
||||||
|
"@changedTheRoomInvitationLink": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheRoomAliases": "{username} ha cambiato il nome delle stanze",
|
||||||
|
"@changedTheRoomAliases": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheProfileAvatar": "{username} ha cambiato il loro avatar",
|
||||||
|
"@changedTheProfileAvatar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheJoinRulesTo": "{username} ha cambiato le regole per unirsi in: {joinRules}",
|
||||||
|
"@changedTheJoinRulesTo": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {},
|
||||||
|
"joinRules": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheJoinRules": "{username} ha cambiato le regole per unirsi",
|
||||||
|
"@changedTheJoinRules": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheHistoryVisibilityTo": "{username} ha cambiato la visibilità della cronologia in: {rules}",
|
||||||
|
"@changedTheHistoryVisibilityTo": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {},
|
||||||
|
"rules": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheHistoryVisibility": "{username} ha cambiato la visibilità della cronologia",
|
||||||
|
"@changedTheHistoryVisibility": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheGuestAccessRulesTo": "{username} ha cambiato le regole di accesso per ospiti con: {rules}",
|
||||||
|
"@changedTheGuestAccessRulesTo": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {},
|
||||||
|
"rules": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"changedTheChatAvatar": "{username} ha cambiato avatar",
|
||||||
|
"@changedTheChatAvatar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {
|
||||||
|
"username": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"askSSSSSign": "Per entrare con l'altro utente, per favore inserisci la tua passphrase o recovery key.",
|
||||||
|
"@askSSSSSign": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"askSSSSCache": "Per favore inserisci la tua passphrase o recovery key per la cache delle chiavi.",
|
||||||
|
"@askSSSSCache": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,7 +8,6 @@ import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||||
import 'package:localstorage/localstorage.dart';
|
|
||||||
import 'package:universal_html/prefer_universal/html.dart' as html;
|
import 'package:universal_html/prefer_universal/html.dart' as html;
|
||||||
|
|
||||||
import 'components/matrix.dart';
|
import 'components/matrix.dart';
|
||||||
|
@ -21,8 +20,6 @@ void main() {
|
||||||
runZonedGuarded(
|
runZonedGuarded(
|
||||||
() => runApp(App()),
|
() => runApp(App()),
|
||||||
(error, stackTrace) async {
|
(error, stackTrace) async {
|
||||||
final storage = LocalStorage('LocalStorage');
|
|
||||||
await storage.ready;
|
|
||||||
debugPrint(error.toString());
|
debugPrint(error.toString());
|
||||||
debugPrint(stackTrace.toString());
|
debugPrint(stackTrace.toString());
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,12 +6,22 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||||
import 'package:localstorage/localstorage.dart';
|
import 'package:localstorage/localstorage.dart';
|
||||||
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:core';
|
import 'dart:core';
|
||||||
import './database/shared.dart';
|
import './database/shared.dart';
|
||||||
import 'package:olm/olm.dart' as olm; // needed for migration
|
import 'package:olm/olm.dart' as olm; // needed for migration
|
||||||
import 'package:random_string/random_string.dart';
|
import 'package:random_string/random_string.dart';
|
||||||
|
|
||||||
|
Future<LocalStorage> getLocalStorage() async {
|
||||||
|
final directory = PlatformInfos.isBetaDesktop
|
||||||
|
? await getApplicationSupportDirectory()
|
||||||
|
: await getApplicationDocumentsDirectory();
|
||||||
|
final localStorage = LocalStorage('LocalStorage', directory.path);
|
||||||
|
await localStorage.ready;
|
||||||
|
return localStorage;
|
||||||
|
}
|
||||||
|
|
||||||
Future<Database> getDatabase(Client client) async {
|
Future<Database> getDatabase(Client client) async {
|
||||||
while (_generateDatabaseLock) {
|
while (_generateDatabaseLock) {
|
||||||
await Future.delayed(Duration(milliseconds: 50));
|
await Future.delayed(Duration(milliseconds: 50));
|
||||||
|
|
|
@ -18,8 +18,8 @@ Future<MatrixImageFile> resizeImage(MatrixImageFile file,
|
||||||
try {
|
try {
|
||||||
final nativeImg = native.Image();
|
final nativeImg = native.Image();
|
||||||
await nativeImg.loadEncoded(file.bytes);
|
await nativeImg.loadEncoded(file.bytes);
|
||||||
file.width = nativeImg.width();
|
file.width = nativeImg.width;
|
||||||
file.height = nativeImg.height();
|
file.height = nativeImg.height;
|
||||||
args = _IsolateArgs(
|
args = _IsolateArgs(
|
||||||
width: file.width, height: file.height, bytes: file.bytes, max: max);
|
width: file.width, height: file.height, bytes: file.bytes, max: max);
|
||||||
nativeImg.free();
|
nativeImg.free();
|
||||||
|
@ -96,8 +96,8 @@ Future<_IsolateResponse> _isolateFunction(_IsolateArgs args) async {
|
||||||
final ret = _IsolateResponse(
|
final ret = _IsolateResponse(
|
||||||
blurhash: blurhash,
|
blurhash: blurhash,
|
||||||
jpegBytes: jpegBytes,
|
jpegBytes: jpegBytes,
|
||||||
width: nativeImg.width(),
|
width: nativeImg.width,
|
||||||
height: nativeImg.height());
|
height: nativeImg.height);
|
||||||
|
|
||||||
nativeImg.free();
|
nativeImg.free();
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,6 @@ class _LoginState extends State<Login> {
|
||||||
readOnly: loading,
|
readOnly: loading,
|
||||||
autocorrect: false,
|
autocorrect: false,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
keyboardType: TextInputType.emailAddress,
|
|
||||||
onChanged: (t) => _checkWellKnownWithCoolDown(t, context),
|
onChanged: (t) => _checkWellKnownWithCoolDown(t, context),
|
||||||
controller: usernameController,
|
controller: usernameController,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
|
|
|
@ -553,7 +553,7 @@ packages:
|
||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: master
|
ref: master
|
||||||
resolved-ref: bd24832f96537447174aa34ba78eaed7ff05bb8e
|
resolved-ref: c8eb59c25c4e3a568bd64e4722108ec45259e157
|
||||||
url: "https://gitlab.com/famedly/libraries/native_imaging.git"
|
url: "https://gitlab.com/famedly/libraries/native_imaging.git"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
|
|
59
snap/snapcraft.yaml
Normal file
59
snap/snapcraft.yaml
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
name: fluffychat
|
||||||
|
base: core18 # the base snap is the execution environment for this snap
|
||||||
|
version: git # just for humans, typically '1.2+git' or '1.3.2'
|
||||||
|
summary: Open. Nonprofit. Cute ♥
|
||||||
|
description: |
|
||||||
|
FluffyChat - Chat with your friends
|
||||||
|
|
||||||
|
9 greatest FluffyChat features:
|
||||||
|
1. Opensource and open development where everyone can join.
|
||||||
|
2. Nonprofit - FluffyChat is donation funded.
|
||||||
|
3. Cute design and many theme settings including a dark mode.
|
||||||
|
4. Unlimited groups and direct chats.
|
||||||
|
5. FluffyChat is made as simple to use as possible.
|
||||||
|
6. Free to use for everyone without ads.
|
||||||
|
7. FluffyChat can use your addressbook to find your friends or you can use
|
||||||
|
usernames.
|
||||||
|
8. There is no "FluffyChat server" you are forced to use. Use the server
|
||||||
|
you find trustworthy or host your own.
|
||||||
|
9. Compatible with Riot, Fractal, Nekho and all matrix messengers.
|
||||||
|
|
||||||
|
Join the community: fluffychat://+ubports_community:matrix.org
|
||||||
|
Website: http://fluffy.chat
|
||||||
|
Microblog: https://metalhead.club/@krille
|
||||||
|
|
||||||
|
grade: devel # must be 'stable' to release into candidate/stable channels
|
||||||
|
confinement: strict # use 'strict' once you have the right plugs and slots
|
||||||
|
|
||||||
|
parts:
|
||||||
|
olm:
|
||||||
|
plugin: cmake
|
||||||
|
source: https://gitlab.matrix.org/matrix-org/olm.git
|
||||||
|
source-type: git
|
||||||
|
source-tag: 3.2.1
|
||||||
|
fluffychat:
|
||||||
|
plugin: flutter
|
||||||
|
source: .
|
||||||
|
flutter-target: lib/main.dart
|
||||||
|
stage-packages:
|
||||||
|
- libsqlite3-0
|
||||||
|
override-prime: |
|
||||||
|
snapcraftctl prime
|
||||||
|
ln -sf libsqlite3.so.0 ${SNAPCRAFT_PRIME}/usr/lib/x86_64-linux-gnu/libsqlite3.so
|
||||||
|
|
||||||
|
slots:
|
||||||
|
dbus-svc:
|
||||||
|
interface: dbus
|
||||||
|
bus: session
|
||||||
|
name: chat.fluffy.fluffychat
|
||||||
|
|
||||||
|
apps:
|
||||||
|
fluffychat:
|
||||||
|
command: fluffychat
|
||||||
|
extensions:
|
||||||
|
- flutter-dev
|
||||||
|
plugs:
|
||||||
|
- network
|
||||||
|
- home
|
||||||
|
slots:
|
||||||
|
- dbus-svc
|
Loading…
Reference in a new issue