import 'package:equatable/equatable.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:scanktpflutter/screen/no-login/no_login_refresh_token_provider.dart'; import '../../app/app_extension.dart'; import '../../repository/no-login-scan/no_login_scan_repository.dart'; import '../../provider/no-login-scan/no_login_scan_provider.dart'; import '../../model/person_ktp_model.dart'; import '../../provider/dio_provider.dart'; import '../../repository/base_repository.dart'; // 3. state provider final noLoginRiwayatScanProvider = StateNotifierProvider( (ref) => NoLoginRiwayatScanNotifier(ref: ref)); // 2. notifier class NoLoginRiwayatScanNotifier extends StateNotifier { final Ref ref; NoLoginRiwayatScanNotifier({required this.ref}) : super(NoLoginRiwayatScanStateInit()); void noLoginRiwayatScan({ required String host, required String userId, required String token, required String expire_date, }) async { try { state = NoLoginRiwayatScanStateLoading(); final resp = await NoLoginScanRepository( dio: ref.read(dioProvider), ).listRiwayatScanRepo( host: host, userId: userId, token: token, ); // print(resp); state = NoLoginRiwayatScanStateDone(model: resp); ref.read(listScanRwt.notifier).state = resp; // // fungsi check token expired // if (await isTokenExpired()) { // print("Token expired, refreshing..."); // ref.read(noLoginRefreshTokenProvider.notifier).refreshToken( // client_id: userId, // host: host, // expire_date:expire_date, // ); // } } catch (e) { if (e is BaseRepositoryException) { state = NoLoginRiwayatScanStateError(message: e.message); } else { state = NoLoginRiwayatScanStateError(message: e.toString()); } } } } // 1. state abstract class NoLoginRiwayatScanState extends Equatable { final DateTime date; const NoLoginRiwayatScanState(this.date); @override List get props => [date]; } class NoLoginRiwayatScanStateInit extends NoLoginRiwayatScanState { NoLoginRiwayatScanStateInit() : super(DateTime.now()); } class NoLoginRiwayatScanStateLoading extends NoLoginRiwayatScanState { NoLoginRiwayatScanStateLoading() : super(DateTime.now()); } class NoLoginRiwayatScanStateError extends NoLoginRiwayatScanState { final String message; NoLoginRiwayatScanStateError({ required this.message, }) : super(DateTime.now()); } class NoLoginRiwayatScanStateDone extends NoLoginRiwayatScanState { final List model; NoLoginRiwayatScanStateDone({ required this.model, }) : super(DateTime.now()); }