diff --git a/mobile-app/lib/ui/views/learn/challenge/challenge_viewmodel.dart b/mobile-app/lib/ui/views/learn/challenge/challenge_viewmodel.dart
index 4dccfc17d..d3e339d18 100644
--- a/mobile-app/lib/ui/views/learn/challenge/challenge_viewmodel.dart
+++ b/mobile-app/lib/ui/views/learn/challenge/challenge_viewmodel.dart
@@ -712,7 +712,8 @@ class ChallengeViewModel extends BaseViewModel {
);
if (evalResult != null && evalResult.error != null) {
setUserConsoleMessages = [
- ...userConsoleMessages.sublist(0, userConsoleMessages.length - 1),
+ if (userConsoleMessages.isNotEmpty)
+ ...userConsoleMessages.sublist(0, userConsoleMessages.length - 1),
'
${evalResult.error}
',
];
}
@@ -745,13 +746,16 @@ class ChallengeViewModel extends BaseViewModel {
'testStr': test.javaScript,
},
);
- if (testRes?.value['pass'] == null) {
- log('TEST FAILED: ${test.instruction} - ${test.javaScript} - ${testRes?.value['err']}');
+ if (testRes != null && testRes.value['pass'] == null) {
+ log('TEST FAILED: ${test.instruction} - ${test.javaScript} - ${testRes.value['err']}');
failedTest = failedTest ?? test;
- failedTestErr = failedTestErr ?? testRes?.value['err'] as Map;
+ failedTestErr = failedTestErr ?? testRes.value['err'] as Map;
failedTestsConsole.add(
'${replacePlaceholders(test.instruction, failedTestErr)}',
);
+ } else if (testRes == null) {
+ log('TEST RESULT NULL: $testRes');
+ throw Exception('Test result is null ${testRes.toString()}');
}
}
diff --git a/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_model.dart b/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_model.dart
index 71352f7d4..d171627ac 100644
--- a/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_model.dart
+++ b/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_model.dart
@@ -15,6 +15,17 @@ import 'package:stacked/stacked.dart';
class PassWidgetModel extends BaseViewModel {
final AuthenticationService auth = locator();
+ Future? quoteFuture;
+
+ set setQuoteFuture(Future value) {
+ quoteFuture = value;
+ notifyListeners();
+ }
+
+ void initQuoute() {
+ setQuoteFuture = retrieveNewQuote();
+ }
+
Future numCompletedChallenges(ChallengeViewModel challengeModel) async {
FccUserModel? user = await auth.userModel;
if (user != null) {
diff --git a/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_view.dart b/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_view.dart
index 36031fdeb..cef5c365e 100644
--- a/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_view.dart
+++ b/mobile-app/lib/ui/views/learn/widgets/pass/pass_widget_view.dart
@@ -22,6 +22,7 @@ class PassWidgetView extends StatelessWidget {
Widget build(BuildContext context) {
return ViewModelBuilder.reactive(
viewModelBuilder: () => PassWidgetModel(),
+ onViewModelReady: (model) => model.initQuoute(),
builder: (context, model, child) => SafeArea(
child: Column(
children: [
@@ -48,7 +49,7 @@ class PassWidgetView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
FutureBuilder(
- future: model.retrieveNewQuote(),
+ future: model.quoteFuture,
builder: (context, snapshot) {
if (snapshot.hasData) {
MotivationalQuote quote =