41 lines
1.7 KiB
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();
|
|
}
|
|
}
|