diff --git a/lib/api/marathon/marathon_api_client.dart b/lib/api/marathon/marathon_api_client.dart index 3d75d87..428e586 100644 --- a/lib/api/marathon/marathon_api_client.dart +++ b/lib/api/marathon/marathon_api_client.dart @@ -62,7 +62,6 @@ class MarathonApiClient { Future getMarathonDetails() async { String payrollString = AppState().postParamsObject?.payrollCodeStr.toString() ?? "CS"; - Response response = await ApiClient().getJsonForResponse( ApiConsts.marathonUpcomingUrl + payrollString, token: AppState().getMarathonToken == null || AppState().getMarathonToken == "" ? await getMarathonToken() : AppState().getMarathonToken, @@ -84,7 +83,7 @@ class MarathonApiClient { return marathonDetailModel; } - Future joinMarathonAsParticipant() async { + Future joinMarathonAsParticipant() async { Map jsonObject = { "employeeNumber": AppState().memberInformationList!.eMPLOYEENUMBER ?? "", "employeeNameAr": AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEAr ?? AppState().memberInformationList!.eMPLOYEEDISPLAYNAMEEn ?? "", @@ -95,7 +94,7 @@ class MarathonApiClient { return await ApiClient().postJsonForObject( (json) { MarathonGenericModel marathonModel = MarathonGenericModel.fromJson(json); - return marathonModel.data["remainingTime"]; + return marathonModel; }, ApiConsts.marathonJoinParticipantUrl, jsonObject, diff --git a/lib/ui/marathon/marathon_provider.dart b/lib/ui/marathon/marathon_provider.dart index b88f54b..0b1a783 100644 --- a/lib/ui/marathon/marathon_provider.dart +++ b/lib/ui/marathon/marathon_provider.dart @@ -10,6 +10,7 @@ import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/models/marathon/marathon_generic_model.dart'; import 'package:mohem_flutter_app/models/marathon/marathon_model.dart'; import 'package:mohem_flutter_app/models/marathon/question_model.dart'; import 'package:mohem_flutter_app/models/marathon/winner_model.dart'; @@ -193,9 +194,7 @@ class MarathonProvider extends ChangeNotifier { if (totalSecondsToWaitForMarathon == 0) { timer.cancel(); if (isUserWaiting) { - MarathonApiClient().joinMarathonAsParticipant().whenComplete(() async { - await callNextQuestionApi(); - }); + await callNextQuestionApi(); } else { isButtonEnabled = false; } @@ -575,9 +574,18 @@ class MarathonProvider extends ChangeNotifier { Future onJoinMarathonPressed(BuildContext context) async { try { - isUserWaiting = true; - Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); + Utils.showLoading(AppRoutes.navigatorKey.currentContext!); + MarathonApiClient().joinMarathonAsParticipant().then((MarathonGenericModel? marathonGenericModel) async { + Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); + if (marathonGenericModel != null && marathonGenericModel.data != null) { + isUserWaiting = true; + Navigator.pushReplacementNamed(context, AppRoutes.marathonWaitingScreen); + } else if (marathonGenericModel!.data == null) { + Utils.showToast(marathonGenericModel.message.toString()); + } + }); } catch (e) { + Utils.hideLoading(AppRoutes.navigatorKey.currentContext!); Utils.confirmDialog(context, e.toString()); } }