mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
61 lines
1.7 KiB
Dart
61 lines
1.7 KiB
Dart
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
|
|
class StoredCredentials {
|
|
final String relayUrl;
|
|
final String token;
|
|
final String? pubkey;
|
|
final String? nsec;
|
|
|
|
const StoredCredentials({
|
|
required this.relayUrl,
|
|
required this.token,
|
|
this.pubkey,
|
|
this.nsec,
|
|
});
|
|
}
|
|
|
|
class CredentialStorage {
|
|
static const _keyRelayUrl = 'sprout_relay_url';
|
|
static const _keyToken = 'sprout_token';
|
|
static const _keyPubkey = 'sprout_pubkey';
|
|
static const _keyNsec = 'sprout_nsec';
|
|
|
|
final FlutterSecureStorage _storage;
|
|
|
|
CredentialStorage([FlutterSecureStorage? storage])
|
|
: _storage = storage ?? const FlutterSecureStorage();
|
|
|
|
Future<StoredCredentials?> load() async {
|
|
final relayUrl = await _storage.read(key: _keyRelayUrl);
|
|
final token = await _storage.read(key: _keyToken);
|
|
if (relayUrl == null || token == null) return null;
|
|
|
|
final pubkey = await _storage.read(key: _keyPubkey);
|
|
final nsec = await _storage.read(key: _keyNsec);
|
|
return StoredCredentials(
|
|
relayUrl: relayUrl,
|
|
token: token,
|
|
pubkey: pubkey,
|
|
nsec: nsec,
|
|
);
|
|
}
|
|
|
|
Future<void> save(StoredCredentials credentials) async {
|
|
await _storage.write(key: _keyRelayUrl, value: credentials.relayUrl);
|
|
await _storage.write(key: _keyToken, value: credentials.token);
|
|
if (credentials.pubkey != null) {
|
|
await _storage.write(key: _keyPubkey, value: credentials.pubkey);
|
|
}
|
|
if (credentials.nsec != null) {
|
|
await _storage.write(key: _keyNsec, value: credentials.nsec);
|
|
}
|
|
}
|
|
|
|
Future<void> clear() async {
|
|
await _storage.delete(key: _keyRelayUrl);
|
|
await _storage.delete(key: _keyToken);
|
|
await _storage.delete(key: _keyPubkey);
|
|
await _storage.delete(key: _keyNsec);
|
|
}
|
|
}
|