TKK_E32230206/lib/repositories/auth_repository.dart

41 lines
1.7 KiB
Dart

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<UserModel> 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<UserModel> 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<String> claimDevice(String userId, String claimCode) {
return _service.claimDevice(userId, claimCode.trim());
}
/// Keluar dari akun pengguna (logout) dan menghapus token sesi.
Future<void> 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<UserModel?> checkSession() {
return _service.checkSession();
}
}