aves_mio1/lib/remote/remote_settings.dart
FabioMich66 19a982ede6
Some checks are pending
Quality check / Flutter analysis (push) Waiting to run
Quality check / CodeQL analysis (java-kotlin) (push) Waiting to run
first commit
2026-03-05 15:51:30 +01:00

83 lines
No EOL
3.1 KiB
Dart

// lib/remote/remote_settings.dart
import 'package:flutter/foundation.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class RemoteSettings {
static const _storage = FlutterSecureStorage();
// Keys
static const _kEnabled = 'remote_enabled';
static const _kBaseUrl = 'remote_base_url';
static const _kIndexPath = 'remote_index_path';
static const _kEmail = 'remote_email';
static const _kPassword = 'remote_password';
// Default values:
// In DEBUG vogliamo valori pre-compilati; in RELEASE lasciamo vuoti/false.
static final bool defaultEnabled = kDebugMode ? true : false;
static final String defaultBaseUrl = kDebugMode ? 'https://prova.patachina.it' : '';
static final String defaultIndexPath = kDebugMode ? 'photos/' : '';
static final String defaultEmail = kDebugMode ? 'fabio@gmail.com' : '';
static final String defaultPassword = kDebugMode ? 'master66' : '';
bool enabled;
String baseUrl;
String indexPath;
String email;
String password;
RemoteSettings({
required this.enabled,
required this.baseUrl,
required this.indexPath,
required this.email,
required this.password,
});
/// Carica i setting dal secure storage.
/// Se un valore non esiste, usa i default (in debug: quelli precompilati).
static Future<RemoteSettings> load() async {
final enabledStr = await _storage.read(key: _kEnabled);
final baseUrl = await _storage.read(key: _kBaseUrl) ?? defaultBaseUrl;
final indexPath = await _storage.read(key: _kIndexPath) ?? defaultIndexPath;
final email = await _storage.read(key: _kEmail) ?? defaultEmail;
final password = await _storage.read(key: _kPassword) ?? defaultPassword;
final enabled = (enabledStr ?? (defaultEnabled ? 'true' : 'false')) == 'true';
return RemoteSettings(
enabled: enabled,
baseUrl: baseUrl,
indexPath: indexPath,
email: email,
password: password,
);
}
/// Scrive i setting nel secure storage.
Future<void> save() async {
await _storage.write(key: _kEnabled, value: enabled ? 'true' : 'false');
await _storage.write(key: _kBaseUrl, value: baseUrl);
await _storage.write(key: _kIndexPath, value: indexPath);
await _storage.write(key: _kEmail, value: email);
await _storage.write(key: _kPassword, value: password);
}
/// In DEBUG: se un valore non è ancora impostato, inizializzalo con i default.
/// NON sovrascrive valori già presenti (quindi puoi sempre entrare in Settings e cambiare).
static Future<void> debugSeedIfEmpty() async {
if (!kDebugMode) return;
Future<void> _seed(String key, String value) async {
final existing = await _storage.read(key: key);
if (existing == null) {
await _storage.write(key: key, value: value);
}
}
await _seed(_kEnabled, defaultEnabled ? 'true' : 'false');
await _seed(_kBaseUrl, defaultBaseUrl);
await _seed(_kIndexPath, defaultIndexPath);
await _seed(_kEmail, defaultEmail);
await _seed(_kPassword, defaultPassword);
}
}