step 22 : no_login -> login dan list riwayat pake JWT done, masih belum done di refreshToken karena check waktu expired salah
This commit is contained in:
90
lib/screen/no-login-home/no_login_riwayat_scan_provider.dart
Normal file
90
lib/screen/no-login-home/no_login_riwayat_scan_provider.dart
Normal file
@@ -0,0 +1,90 @@
|
||||
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/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<NoLoginRiwayatScanNotifier, NoLoginRiwayatScanState>(
|
||||
(ref) => NoLoginRiwayatScanNotifier(ref: ref));
|
||||
|
||||
// 2. notifier
|
||||
class NoLoginRiwayatScanNotifier
|
||||
extends StateNotifier<NoLoginRiwayatScanState> {
|
||||
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<Object?> 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<PersonKtp> model;
|
||||
NoLoginRiwayatScanStateDone({
|
||||
required this.model,
|
||||
}) : super(DateTime.now());
|
||||
}
|
||||
Reference in New Issue
Block a user