You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
2 years ago
|
import 'package:dio/dio.dart';
|
||
|
import 'package:equatable/equatable.dart';
|
||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
|
|
||
|
import '../../provider/dio_provider.dart';
|
||
|
import '../../provider/local_auth_provider.dart';
|
||
|
import '../../repository/base_repository.dart';
|
||
|
import '../../repository/mitra_repository.dart';
|
||
|
import '../../screen/md_lab_mitra/mitra_search_provider.dart';
|
||
|
|
||
|
final mitraDeleteProvider =
|
||
|
StateNotifierProvider<MitraDeleteNotifier, MitraDeleteState>(
|
||
|
(ref) => MitraDeleteNotifier(ref: ref),
|
||
|
);
|
||
|
|
||
|
class MitraDeleteNotifier extends StateNotifier<MitraDeleteState> {
|
||
|
final Ref ref;
|
||
|
CancelToken? cancelToken;
|
||
|
MitraDeleteNotifier({
|
||
|
required this.ref,
|
||
|
}) : super(MitraDeleteStateInit());
|
||
|
|
||
|
void reset() {
|
||
|
state = MitraDeleteStateInit();
|
||
|
}
|
||
|
|
||
|
void delete({
|
||
|
required String mitraID,
|
||
|
required String query,
|
||
|
}) async {
|
||
|
try {
|
||
|
state = MitraDeleteStateLoading();
|
||
|
final dio = ref.read(dioProvider);
|
||
|
final localAuth = ref.read(localAuthProvider);
|
||
|
if (localAuth?.token == null) {
|
||
|
throw BaseRepositoryException(message: "Invalid Token");
|
||
|
}
|
||
|
await MitraRepository(dio: dio).delete(
|
||
|
mitraID: mitraID,
|
||
|
token: localAuth!.token!,
|
||
|
);
|
||
|
state = MitraDeleteStateDone();
|
||
|
ref.read(mitraSearchProvider.notifier).search(query: query);
|
||
|
} catch (e) {
|
||
|
if (e is BaseRepositoryException) {
|
||
|
state = MitraDeleteStateError(message: e.message);
|
||
|
} else {
|
||
|
state = MitraDeleteStateError(message: "Unknown Error ");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
abstract class MitraDeleteState extends Equatable {
|
||
|
final DateTime date;
|
||
|
MitraDeleteState() : date = DateTime.now();
|
||
|
@override
|
||
|
List<Object?> get props => throw [date];
|
||
|
}
|
||
|
|
||
|
class MitraDeleteStateInit extends MitraDeleteState {}
|
||
|
|
||
|
class MitraDeleteStateLoading extends MitraDeleteState {}
|
||
|
|
||
|
class MitraDeleteStateError extends MitraDeleteState {
|
||
|
final String message;
|
||
|
|
||
|
MitraDeleteStateError({
|
||
|
required this.message,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
class MitraDeleteStateDone extends MitraDeleteState {
|
||
|
MitraDeleteStateDone();
|
||
|
}
|