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

82 lines
2.5 KiB
Dart

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