36 lines
1.2 KiB
Dart
36 lines
1.2 KiB
Dart
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
/// Persisted app settings + employee session.
|
|
class Settings {
|
|
static const _kBaseUrl = 'base_url';
|
|
static const _kToken = 'emp_token';
|
|
static const _kName = 'emp_name';
|
|
static const _kRole = 'emp_role';
|
|
|
|
static const defaultBaseUrl = 'https://api.scalar360.in';
|
|
|
|
late SharedPreferences _prefs;
|
|
Future<void> load() async => _prefs = await SharedPreferences.getInstance();
|
|
|
|
String get baseUrl => (_prefs.getString(_kBaseUrl) ?? defaultBaseUrl).trim();
|
|
set baseUrl(String v) => _prefs.setString(_kBaseUrl, v.trim());
|
|
|
|
String? get token => _prefs.getString(_kToken);
|
|
String? get name => _prefs.getString(_kName);
|
|
String get role => _prefs.getString(_kRole) ?? 'EMPLOYEE';
|
|
bool get isManager => role == 'MANAGER';
|
|
bool get isLoggedIn => (token ?? '').isNotEmpty;
|
|
|
|
Future<void> saveSession({required String token, String? name, String? role}) async {
|
|
await _prefs.setString(_kToken, token);
|
|
if (name != null) await _prefs.setString(_kName, name);
|
|
if (role != null) await _prefs.setString(_kRole, role);
|
|
}
|
|
|
|
Future<void> clearSession() async {
|
|
await _prefs.remove(_kToken);
|
|
await _prefs.remove(_kName);
|
|
await _prefs.remove(_kRole);
|
|
}
|
|
}
|