You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/controllers/providers/api/device_transfer_provider.dart

88 lines
2.5 KiB
Dart

3 years ago
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/api/device_transfer_api_client.dart';
import 'package:test_sa/controllers/providers/loading_notifier.dart';
3 years ago
3 years ago
import '../../../models/device/device_transfer.dart';
import '../../../models/device/device_transfer_info.dart';
import '../../../models/user.dart';
import '../../http_status_manger/http_status_manger.dart';
import '../../localization/localization.dart';
3 years ago
class DeviceTransferProvider extends LoadingNotifier {
3 years ago
// number of items call in each request
final pageItemNumber = 50;
//reset provider data
3 years ago
void reset() {
3 years ago
items.clear();
3 years ago
nextPage = true;
stateCode = null;
}
// state code of current request to defied error message
// like 400 customer request failed
// 500 service not available
3 years ago
int? stateCode;
3 years ago
// true if there is next page in product list and false if not
3 years ago
bool? nextPage = true;
3 years ago
// list of user requests
List<DeviceTransfer> items = [];
3 years ago
Future getRequests() async {
3 years ago
waitApiRequest(() async {
items.clear();
items.addAll(await DeviceTransferApiClient().getRequests(items: items, pageItemNumber: pageItemNumber));
3 years ago
notifyListeners();
if (items.length == pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
});
3 years ago
}
Future createRequest({
3 years ago
required DeviceTransfer model,
required BuildContext context
3 years ago
}) async {
final subtitle = AppLocalization.of(context)?.subtitle;
waitApiRequest(() async {
items.insert(0, await DeviceTransferApiClient().createRequest(model: model));
notifyListeners();
},
onSuccess: (){
Fluttertoast.showToast(
msg: subtitle?.requestCompleteSuccessfully??"",
3 years ago
);
Navigator.of(context).pop();
},
onError: (error){
String errorMessage = HttpStatusManger.getStatusMessage(status: error.error?.errorCode, subtitle: subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(errorMessage),
));
3 years ago
}
);
3 years ago
}
Future updateRequest({
3 years ago
required String host,
required User user,
required bool isSender,
required String requestId,
required DeviceTransfer? oldModel,
3 years ago
required DeviceTransferInfo newModel,
3 years ago
}) async {
3 years ago
reset();
oldModel= await DeviceTransferApiClient().updateRequest(isSender: isSender, requestId: requestId, oldModel: oldModel, newModel: newModel);
notifyListeners();
3 years ago
}
3 years ago
}