Join MarathonProviderFix

faiz_dev_marathon_text_fix
Faiz Hashmi 2 years ago
parent ada971c7e4
commit 5723b64234

@ -16,7 +16,7 @@
"projects": { "projects": {
"id": "b1cd3fa3-bb27-422e-a4c1-08dac09254df", "id": "b1cd3fa3-bb27-422e-a4c1-08dac09254df",
"nameEn": "Cloud Solutions", "nameEn": "Cloud Solutions",
"nameAr": "333شركة حلول السحابة للاتصالات وتقنية المعلومات", "nameAr": "شركة حلول السحابة للاتصالات وتقنية المعلومات",
"projectCode": "CS" "projectCode": "CS"
}, },
"sponsors": [ "sponsors": [
@ -42,5 +42,6 @@
"totalQuestions": 10, "totalQuestions": 10,
"cancelReason": null, "cancelReason": null,
"marathonBufferTime": 30, "marathonBufferTime": 30,
"currentTime": "2022-12-28T08:03:24.3671803Z" "currentTime": "2022-12-28T08:03:24.3671803Z",
"displayCorrectAnswer": true
} }

@ -90,7 +90,7 @@ class AppState {
String get getHuaweiPushToken => _huaweiPushToken; String get getHuaweiPushToken => _huaweiPushToken;
final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.3, mobileType: Platform.isAndroid ? "android" : "ios"); final PostParamsModel _postParamsInitConfig = PostParamsModel(channel: 31, versionID: 5.4, mobileType: Platform.isAndroid ? "android" : "ios");
void setPostParamsInitConfig() { void setPostParamsInitConfig() {
isAuthenticated = false; isAuthenticated = false;

@ -30,7 +30,6 @@ class MyDecorations {
return getContainersDecoration(MyColors.greenColor); return getContainersDecoration(MyColors.greenColor);
case QuestionsOptionStatus.wrong: case QuestionsOptionStatus.wrong:
return getContainersDecoration(MyColors.redColor); return getContainersDecoration(MyColors.redColor);
case QuestionsOptionStatus.selected: case QuestionsOptionStatus.selected:
return getContainersDecoration(MyColors.yellowColorII); return getContainersDecoration(MyColors.yellowColorII);
case QuestionsOptionStatus.unSelected: case QuestionsOptionStatus.unSelected:

@ -1,3 +1,5 @@
import 'dart:developer';
class MarathonDetailModel { class MarathonDetailModel {
String? id; String? id;
String? titleEn; String? titleEn;
@ -17,6 +19,7 @@ class MarathonDetailModel {
List<Questions>? questions; List<Questions>? questions;
int? totalQuestions; int? totalQuestions;
int? marathonBufferTime; int? marathonBufferTime;
bool? displayCorrectAnswer;
MarathonDetailModel({ MarathonDetailModel({
id, id,
@ -37,6 +40,7 @@ class MarathonDetailModel {
questions, questions,
totalQuestions, totalQuestions,
marathonBufferTime, marathonBufferTime,
displayCorrectAnswer,
}); });
MarathonDetailModel.fromJson(Map<String, dynamic> json) { MarathonDetailModel.fromJson(Map<String, dynamic> json) {
@ -68,6 +72,7 @@ class MarathonDetailModel {
} }
totalQuestions = json["totalQuestions"]; totalQuestions = json["totalQuestions"];
marathonBufferTime = json["marathonBufferTime"]; marathonBufferTime = json["marathonBufferTime"];
displayCorrectAnswer = json["displayCorrectAnswer"];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer';
import 'package:appinio_swiper/appinio_swiper.dart'; import 'package:appinio_swiper/appinio_swiper.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -414,13 +415,16 @@ class MarathonProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void updateCurrentQuestionOptionStatus(QuestionsOptionStatus status, int index) { void updateCurrentQuestionOptionStatus({required QuestionsOptionStatus status, required int selectedOptIndex, required int correctOptionIndex}) {
for (int i = 0; i < currentQuestion.questionOptions!.length; i++) { for (int i = 0; i < currentQuestion.questionOptions!.length; i++) {
currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected; currentQuestion.questionOptions![i].optionStatus = QuestionsOptionStatus.unSelected;
} }
currentQuestion.questionOptions![index].optionStatus = status; if (status == QuestionsOptionStatus.wrong) {
selectedOptionId = currentQuestion.questionOptions![index].id; currentQuestion.questionOptions![correctOptionIndex].optionStatus = QuestionsOptionStatus.correct; // if person's answer is wrong we have to show him the actual right answer
selectedOptionIndex = index; }
currentQuestion.questionOptions![selectedOptIndex].optionStatus = status;
selectedOptionId = currentQuestion.questionOptions![selectedOptIndex].id;
selectedOptionIndex = selectedOptIndex;
notifyListeners(); notifyListeners();
} }
@ -435,22 +439,30 @@ class MarathonProvider extends ChangeNotifier {
} }
void getCorrectAnswerAndUpdateAnswerColor() { void getCorrectAnswerAndUpdateAnswerColor() {
log("correctOptionIndex");
callCountThreshold = 1; callCountThreshold = 1;
int correctOptionIndex = -1;
if (demoMarathonDetailModel.displayCorrectAnswer ?? false) {
correctOptionIndex = currentQuestion.questionOptions!.indexWhere((QuestionOptions element) => element.isCorrectOption ?? false);
log("correctOptionIndex: $correctOptionIndex");
}
if (selectedOptionIndex != null) { if (selectedOptionIndex != null) {
scheduleMicrotask(() async { scheduleMicrotask(() async {
if (AppState().getIsDemoMarathon) { if (AppState().getIsDemoMarathon) {
if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) { if (currentQuestion.questionOptions![selectedOptionIndex!].isCorrectOption!) {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.correct, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex);
} else { } else {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.wrong, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex);
} }
} else { } else {
await callSubmitOptionApi().then((bool value) async { await callSubmitOptionApi().then((bool value) async {
updateIsUserOutOfGame = !value; updateIsUserOutOfGame = !value;
if (value) { if (value) {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.correct, selectedOptionIndex!); updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.correct, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex);
} else { } else {
updateCurrentQuestionOptionStatus(QuestionsOptionStatus.wrong, selectedOptionIndex!); updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.wrong, selectedOptIndex: selectedOptionIndex!, correctOptionIndex: correctOptionIndex);
} }
}); });
} }
@ -551,7 +563,6 @@ class MarathonProvider extends ChangeNotifier {
notifyListeners(); notifyListeners();
isPrivilegedWithMarathon = checkIfPrivilegedForMarathon(); isPrivilegedWithMarathon = checkIfPrivilegedForMarathon();
demoMarathonDetailModel = await DemoMarathonRepo().getDemoMarathonDetails(); demoMarathonDetailModel = await DemoMarathonRepo().getDemoMarathonDetails();
if (isPrivilegedWithMarathon) { if (isPrivilegedWithMarathon) {
marathonDetailModel = await MarathonApiClient().getMarathonDetails(); marathonDetailModel = await MarathonApiClient().getMarathonDetails();
updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30; updateTotalSecondsToWaitForMarathon = marathonDetailModel.marathonBufferTime ?? 30;

@ -133,7 +133,7 @@ class AnswerContent extends StatelessWidget {
if (provider.totalCurrentQuestionTime - provider.currentGapTime <= 0) { if (provider.totalCurrentQuestionTime - provider.currentGapTime <= 0) {
null; null;
} else { } else {
provider.updateCurrentQuestionOptionStatus(QuestionsOptionStatus.selected, index); provider.updateCurrentQuestionOptionStatus(status: QuestionsOptionStatus.selected, selectedOptIndex: index, correctOptionIndex: -1); //
} }
}, },
); );

Loading…
Cancel
Save