mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 18:48:40 +00:00
41 lines
1.2 KiB
Dart
41 lines
1.2 KiB
Dart
import 'dart:convert';
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'package:hive/hive.dart';
|
|
import 'package:logging/logging.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:twonly/src/services/notification_service.dart';
|
|
|
|
Future initMediaStorage() async {
|
|
final storage = FlutterSecureStorage();
|
|
var containsEncryptionKey =
|
|
await storage.containsKey(key: 'hive_encryption_key');
|
|
if (!containsEncryptionKey) {
|
|
var key = Hive.generateSecureKey();
|
|
await storage.write(
|
|
key: 'hive_encryption_key',
|
|
value: base64UrlEncode(key),
|
|
);
|
|
}
|
|
final dir = await getApplicationSupportDirectory();
|
|
Hive.init(dir.path);
|
|
}
|
|
|
|
Future<Box> getMediaStorage() async {
|
|
try {
|
|
await initMediaStorage();
|
|
final storage = FlutterSecureStorage();
|
|
|
|
var encryptionKey =
|
|
base64Url.decode((await storage.read(key: 'hive_encryption_key'))!);
|
|
|
|
return await Hive.openBox(
|
|
'media_storage',
|
|
encryptionCipher: HiveAesCipher(encryptionKey),
|
|
);
|
|
} catch (e) {
|
|
await customLocalPushNotification("Secure Storage Error",
|
|
"Settings > Apps > twonly > Storage and Cache > Press clear on both");
|
|
Logger("hive.dart").shout(e);
|
|
throw Exception(e);
|
|
}
|
|
}
|