mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-15 08:35:18 +00:00

Configuration File Removals: .vscode/c_cpp_properties.json: Removed the entire configuration for C/C++ properties. .vscode/launch.json: Removed the Dart launch configurations for different environments and modes. .vscode/settings.json: Removed settings related to CMake, spell checking, file nesting, and Dart Flutter SDK path. .vscode/snippets.code-snippets: Removed code snippets for Dart, including PaginatedState and PaginatedNotifier templates. .vscode/tasks.json: Removed the tasks configuration file. Documentation Updates: CONTRIBUTION.md: Removed heart emoji from the introductory text. README.md: Updated the logo image and made minor text adjustments, including removing emojis and updating section titles. [1] [2] [3] [4] [5] Asset Removals: lib/collections/assets.gen.dart: Removed multiple unused asset references, including images related to Spotube logos and banners. [1] [2] [3] Minor Code Cleanups: cli/commands/build/linux.dart, cli/commands/build/windows.dart, cli/commands/translated.dart, cli/commands/untranslated.dart: Adjusted import statements for consistency. [1] [2] [3] [4] integration_test/app_test.dart: Removed an unnecessary blank line. lib/collections/routes.dart: Commented out the TrackRoute configuration.
60 lines
1.5 KiB
Dart
60 lines
1.5 KiB
Dart
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'package:spotube/services/kv_store/kv_store.dart';
|
|
import 'package:spotube/utils/platform.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
abstract class EncryptedKvStoreService {
|
|
static const _storage = FlutterSecureStorage(
|
|
aOptions: AndroidOptions(
|
|
encryptedSharedPreferences: true,
|
|
),
|
|
);
|
|
|
|
static FlutterSecureStorage get storage => _storage;
|
|
|
|
static String? _encryptionKeySync;
|
|
|
|
static Future<void> initialize() async {
|
|
_encryptionKeySync = await encryptionKey;
|
|
}
|
|
|
|
static String get encryptionKeySync => _encryptionKeySync!;
|
|
|
|
static bool get isUnsupportedPlatform =>
|
|
kIsMacOS || kIsIOS || (kIsLinux && !kIsFlatpak);
|
|
|
|
static Future<String> get encryptionKey async {
|
|
if (isUnsupportedPlatform) {
|
|
return KVStoreService.encryptionKey;
|
|
}
|
|
try {
|
|
final value = await _storage.read(key: 'encryption');
|
|
final key = const Uuid().v4();
|
|
|
|
if (value == null) {
|
|
await setEncryptionKey(key);
|
|
return key;
|
|
}
|
|
|
|
return value;
|
|
} catch (e) {
|
|
return KVStoreService.encryptionKey;
|
|
}
|
|
}
|
|
|
|
static Future<void> setEncryptionKey(String key) async {
|
|
if (isUnsupportedPlatform) {
|
|
await KVStoreService.setEncryptionKey(key);
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await _storage.write(key: 'encryption', value: key);
|
|
} catch (e) {
|
|
await KVStoreService.setEncryptionKey(key);
|
|
} finally {
|
|
_encryptionKeySync = key;
|
|
}
|
|
}
|
|
}
|