flutter-freaccess-hub/lib/shared/helpers/storage/keychain_storage.dart

69 lines
1.7 KiB
Dart

import 'dart:developer';
import 'package:hub/shared/constants/index.dart';
import 'package:hub/shared/helpers/database/database_helper.dart';
import 'package:hub/shared/helpers/storage/base_storage.dart';
import 'package:sqflite/sqflite.dart';
class KeychainHelper implements BaseStorage {
KeychainHelper._();
static final KeychainHelper instance = KeychainHelper._();
bool _isInitialized = false;
@override
Future<void> init() async {
if (_isInitialized) return;
await DatabaseStorage.instance.init();
_isInitialized = true;
}
@override
Future<String?> get(String key) async {
var response = await DatabaseStorage.database.query(tableKeychain, where: 'key = ?', whereArgs: [key]);
if (response.isEmpty) {
return null;
}
// log('() => get keychain: $key : ${response.first['value']}');
return response.first['value'].toString();
}
@override
Future<void> set<T>(String key, T value) async {
var date = DateTime.now().toIso8601String();
await DatabaseStorage.database.insert(
tableKeychain,
{
'key': key,
'value': value.toString(),
'type': 'local',
'updateAt': date,
'resolvedAt': date,
'createdAt': date,
},
conflictAlgorithm: ConflictAlgorithm.replace);
// log('() => set keychain: $key : $value');
}
@override
Future<void> delete(String key) async {
await DatabaseStorage.database.delete(tableKeychain, where: 'key = ?', whereArgs: [key]);
}
@override
Future<void> clearAll() async {
try {
await DatabaseStorage.database.delete(tableKeychain);
} catch (e, s) {
log('() => clearAll keychain: $e', stackTrace: s);
}
}
}