import 'package:flutter_secure_storage/flutter_secure_storage.dart'; const _kBase = 'odoo_base'; const _kDb = 'odoo_db'; const _kUser = 'odoo_user'; const _kPass = 'odoo_pass'; const _kUid = 'odoo_uid'; /// Menyimpan konfigurasi login (url, db, user, password) secara aman /// + menyediakan OdooClient terautentikasi. class Session { static const _storage = FlutterSecureStorage(); static Future saveUid(int uid) async { await _storage.write(key: _kUid, value: uid.toString()); } static Future save(String baseUrl, String db, String user, String pass) async { await _storage.write(key: _kBase, value: baseUrl); await _storage.write(key: _kDb, value: db); await _storage.write(key: _kUser, value: user); await _storage.write(key: _kPass, value: pass); } static Future<({String base, String db, String user, String pass})?> load() async { final base = await _storage.read(key: _kBase); final db = await _storage.read(key: _kDb); final user = await _storage.read(key: _kUser); final pass = await _storage.read(key: _kPass); if (base == null || user == null || pass == null) return null; return (base: base, db: db ?? 'odoo', user: user, pass: pass); } static Future clear() async { // Hapus sesi (user & pass), tapi sisakan URL (_kBase) agar login berikutnya mudah await _storage.delete(key: _kUser); await _storage.delete(key: _kPass); } static Future readLastUrl() async { return _storage.read(key: _kBase); } static Future readBase() async { final base = await _storage.read(key: _kBase); if (base == null) throw Exception('URL tidak ditemukan'); return base; } static Future readDb() async { return _storage.read(key: _kDb); } static Future readUser() async { return _storage.read(key: _kUser); } static Future readPass() async { return _storage.read(key: _kPass); } static Future readUid() async { final uid = await _storage.read(key: _kUid); if (uid == null) return null; return int.tryParse(uid); } }