58 lines
1.5 KiB
Dart
58 lines
1.5 KiB
Dart
part of '../app/app.dart';
|
|
|
|
class SessionStore {
|
|
static const _tokenKey = 'mylis_token';
|
|
static const _baseUrlKey = 'mylis_base_url';
|
|
|
|
static Future<String?> token() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return prefs.getString(_tokenKey);
|
|
}
|
|
|
|
static Future<String> baseUrl() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return prefs.getString(_baseUrlKey) ?? kDefaultBaseUrl;
|
|
}
|
|
|
|
static Future<SessionData> session() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return SessionData(
|
|
token: prefs.getString(_tokenKey),
|
|
baseUrl: prefs.getString(_baseUrlKey) ?? kDefaultBaseUrl,
|
|
);
|
|
}
|
|
|
|
static Future<void> saveToken(String token) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setString(_tokenKey, token);
|
|
}
|
|
|
|
static Future<void> saveBaseUrl(String baseUrl) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.setString(_baseUrlKey, normalizeBaseUrl(baseUrl));
|
|
}
|
|
|
|
static Future<void> clear() async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
await prefs.remove(_tokenKey);
|
|
}
|
|
}
|
|
|
|
class SessionData {
|
|
const SessionData({this.token, this.baseUrl = kDefaultBaseUrl});
|
|
|
|
final String? token;
|
|
final String baseUrl;
|
|
}
|
|
|
|
String normalizeBaseUrl(String value) {
|
|
var url = value.trim();
|
|
if (url.isEmpty) {
|
|
return kDefaultBaseUrl;
|
|
}
|
|
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
url = 'https://$url';
|
|
}
|
|
return url.replaceAll(RegExp(r'/+$'), '');
|
|
}
|