part of '../app/app.dart'; class SessionStore { static const _tokenKey = 'mylis_token'; static const _baseUrlKey = 'mylis_base_url'; static Future token() async { final prefs = await SharedPreferences.getInstance(); return prefs.getString(_tokenKey); } static Future baseUrl() async { final prefs = await SharedPreferences.getInstance(); return prefs.getString(_baseUrlKey) ?? kDefaultBaseUrl; } static Future session() async { final prefs = await SharedPreferences.getInstance(); return SessionData( token: prefs.getString(_tokenKey), baseUrl: prefs.getString(_baseUrlKey) ?? kDefaultBaseUrl, ); } static Future saveToken(String token) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_tokenKey, token); } static Future saveBaseUrl(String baseUrl) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_baseUrlKey, normalizeBaseUrl(baseUrl)); } static Future 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'/+$'), ''); }