Files
saat-app/flutter/lib/services/session.dart
Alex Ardhian a41656d3c5 Flutter: tampilkan URL server tersimpan saat layar login berikutnya
- Session.clear() kini hapus sesi (user/pass) tapi sisakan URL terakhir
- + Session.readLastUrl()
- LoginScreen mengisi field URL dari URL terakhir saat dibuka
- sesudah logout login lagi URL sudah terisi, tak perlu ketik ulang
2026-09-02 18:14:32 +07:00

39 lines
1.4 KiB
Dart

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';
/// Menyimpan konfigurasi login (url, db, user, password) secara aman
/// + menyediakan OdooClient terautentikasi.
class Session {
static const _storage = FlutterSecureStorage();
static Future<void> 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<void> 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<String?> readLastUrl() async {
return _storage.read(key: _kBase);
}
}