import '../models/user_model.dart'; import '../services/auth_service.dart'; /// Repository untuk fitur Autentikasi. /// Berfungsi sebagai lapisan abstraksi antara State Notifier (Presentation Layer) dan Klien Layanan API/Supabase (Service Layer). /// Menangani pembersihan input (*input cleaning/trimming*) dan meneruskan panggilan ke service autentikasi yang sesuai. class AuthRepository { final AuthService _service; AuthRepository(this._service); /// Masuk log (login) ke dalam sistem menggunakan email dan password. /// Menghapus spasi berlebih pada awal/akhir email dan password sebelum diteruskan ke API/Supabase. Future login(String email, String password) { return _service.login(email.trim(), password.trim()); } /// Mendaftarkan (register) akun pengguna baru ke sistem. /// Menghapus spasi berlebih pada nama, email, dan password. Future register(String name, String email, String password) { return _service.register(name.trim(), email.trim(), password.trim()); } /// Menghubungkan akun pengguna dengan perangkat IoT ESP32 menggunakan kode klaim (*claim code*). /// Mengembalikan String berupa `device_id` yang berhasil terhubung. Future claimDevice(String userId, String claimCode) { return _service.claimDevice(userId, claimCode.trim()); } /// Keluar dari akun pengguna (logout) dan menghapus token sesi. Future logout() { return _service.logout(); } /// Memeriksa apakah ada sesi login aktif yang masih valid di memori lokal perangkat. /// Digunakan untuk proses Auto-Login ketika aplikasi pertama kali dibuka. Future checkSession() { return _service.checkSession(); } }