import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../core/network/api_client.dart'; import '../../config/app_config.dart'; class AuthNotifier extends StateNotifier { AuthNotifier() : super(false); Future checkLoginState() async { final prefs = await SharedPreferences.getInstance(); final token = prefs.getString('auth_token'); if (token != null) { state = true; return true; } state = false; return false; } Future login(String username, String password) async { final apiClient = ApiClient(); try { final response = await apiClient.client.post( AppConfig.loginEndpoint, data: { 'username': username, 'password': password, }, ); if (response.data is! Map || response.data['data'] is! Map) { throw Exception("Format respon server tidak valid (bukan JSON)"); } final token = response.data['data']['token']; if (token == null) { throw Exception("Token otentikasi tidak ditemukan dalam respon"); } final prefs = await SharedPreferences.getInstance(); await prefs.setString('auth_token', token); state = true; } catch (e) { state = false; rethrow; } } Future logout() async { final prefs = await SharedPreferences.getInstance(); await prefs.remove('auth_token'); state = false; } } final authProvider = StateNotifierProvider((ref) { return AuthNotifier(); });