fluffychat merge
This commit is contained in:
commit
c13afdea3a
4 changed files with 73 additions and 16 deletions
37
CHANGELOG.md
37
CHANGELOG.md
|
|
@ -1,3 +1,40 @@
|
|||
## v1.19.2
|
||||
Bugfix release to mostly fix the new database encryption on Linux and update the translations.
|
||||
|
||||
- build: (deps): bump peaceiris/actions-gh-pages from 3 to 4 (dependabot[bot])
|
||||
- build: Update all dependencies and remove vibrator package (krille-chan)
|
||||
- build: Update emoji picker package (krille-chan)
|
||||
- build: Update flutter_map package (krille-chan)
|
||||
- docs: Fix typo in android app description (Krille)
|
||||
- fix: Allow unencrypted database if gnome keyring not present or platform does not support it (krille-chan)
|
||||
- fix: Background color of images with transparency (Krille)
|
||||
- fix: Localizations from weblate confused by unknownEvent locale (Krille)
|
||||
- fix: More logs when database fails to init and trycatch sendInitNotification (Krille)
|
||||
- Added translation using Weblate (Filipino) (searinminecraft)
|
||||
- Translated using Weblate (Arabic) (Rex_sa)
|
||||
- Translated using Weblate (Basque) (xabirequejo)
|
||||
- Translated using Weblate (Catalan) (fadelkon)
|
||||
- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山)
|
||||
- Translated using Weblate (Chinese (Traditional)) (D0735)
|
||||
- Translated using Weblate (Chinese (Traditional)) (Kyanos Chiu)
|
||||
- Translated using Weblate (Croatian) (v1s7)
|
||||
- Translated using Weblate (English) (v1s7)
|
||||
- Translated using Weblate (Estonian) (Priit Jõerüüt)
|
||||
- Translated using Weblate (Estonian) (Priit Jõerüüt)
|
||||
- Translated using Weblate (Filipino) (searinminecraft)
|
||||
- Translated using Weblate (Galician) (josé m)
|
||||
- Translated using Weblate (Indonesian) (Linerly)
|
||||
- Translated using Weblate (Interlingua) (kdh8219)
|
||||
- Translated using Weblate (Italian) (Krystian)
|
||||
- Translated using Weblate (Korean) (kdh8219)
|
||||
- Translated using Weblate (Persian) (EndermanXD)
|
||||
- Translated using Weblate (Polish) (Adam Strączek)
|
||||
- Translated using Weblate (Polish) (Krystian)
|
||||
- Translated using Weblate (Russian) (v1s7)
|
||||
- Translated using Weblate (Swedish) (Joaquim Homrighausen)
|
||||
- Translated using Weblate (Turkish) (v1s7)
|
||||
- Translated using Weblate (Ukrainian) (Ihor Hordiichuk)
|
||||
|
||||
## v1.19.1
|
||||
Minor bugfix release for login with SSO on web.
|
||||
|
||||
|
|
|
|||
|
|
@ -30,4 +30,6 @@ abstract class SettingKeys {
|
|||
static const String showPresences = 'chat.fluffy.show_presences';
|
||||
static const String displayChatDetailsColumn =
|
||||
'chat.fluffy.display_chat_details_column';
|
||||
static const String noEncryptionWarningShown =
|
||||
'chat.fluffy.no_encryption_warning_shown';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,21 +95,23 @@ Future<MatrixSdkDatabase> _constructDatabase(Client client) async {
|
|||
|
||||
// in case we got a cipher, we use the encryption helper
|
||||
// to manage SQLite encryption
|
||||
final helper = SQfLiteEncryptionHelper(
|
||||
factory: factory,
|
||||
path: path,
|
||||
cipher: cipher,
|
||||
);
|
||||
final helper = cipher == null
|
||||
? null
|
||||
: SQfLiteEncryptionHelper(
|
||||
factory: factory,
|
||||
path: path,
|
||||
cipher: cipher,
|
||||
);
|
||||
|
||||
// check whether the DB is already encrypted and otherwise do so
|
||||
await helper.ensureDatabaseFileEncrypted();
|
||||
await helper?.ensureDatabaseFileEncrypted();
|
||||
|
||||
final database = await factory.openDatabase(
|
||||
path,
|
||||
options: OpenDatabaseOptions(
|
||||
version: 1,
|
||||
// most important : apply encryption when opening the DB
|
||||
onConfigure: helper.applyPragmaKey,
|
||||
onConfigure: helper?.applyPragmaKey,
|
||||
),
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
import 'dart:convert';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:fluffychat/config/setting_keys.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
const _passwordStorageKey = 'database_password';
|
||||
|
||||
Future<String> getDatabaseCipher() async {
|
||||
Future<String?> getDatabaseCipher() async {
|
||||
String? password;
|
||||
|
||||
try {
|
||||
|
|
@ -28,21 +29,36 @@ Future<String> getDatabaseCipher() async {
|
|||
// workaround for if we just wrote to the key and it still doesn't exist
|
||||
password = await secureStorage.read(key: _passwordStorageKey);
|
||||
if (password == null) throw MissingPluginException();
|
||||
} on MissingPluginException catch (_) {
|
||||
} on MissingPluginException catch (e) {
|
||||
const FlutterSecureStorage()
|
||||
.delete(key: _passwordStorageKey)
|
||||
.catchError((_) {});
|
||||
Logs().i('Database encryption is not supported on this platform');
|
||||
Logs().w('Database encryption is not supported on this platform', e);
|
||||
_sendNoEncryptionWarning(e);
|
||||
} catch (e, s) {
|
||||
const FlutterSecureStorage()
|
||||
.delete(key: _passwordStorageKey)
|
||||
.catchError((_) {});
|
||||
Logs().w('Unable to init database encryption', e, s);
|
||||
_sendNoEncryptionWarning(e);
|
||||
}
|
||||
|
||||
// with the new database, we should no longer allow unencrypted storage
|
||||
// secure_storage now supports all platforms we support
|
||||
assert(password != null);
|
||||
|
||||
return password!;
|
||||
return password;
|
||||
}
|
||||
|
||||
void _sendNoEncryptionWarning(Object exception) async {
|
||||
final store = await SharedPreferences.getInstance();
|
||||
final isStored = store.getBool(SettingKeys.noEncryptionWarningShown);
|
||||
|
||||
if (isStored == true) return;
|
||||
|
||||
// #Pangea
|
||||
// final l10n = lookupL10n(PlatformDispatcher.instance.locale);
|
||||
// ClientManager.sendInitNotification(
|
||||
// l10n.noDatabaseEncryption,
|
||||
// exception.toString(),
|
||||
// );
|
||||
// Pangea#
|
||||
|
||||
await store.setBool(SettingKeys.noEncryptionWarningShown, true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue