Skip to content

Commit

Permalink
refactor: handle challenge templates (#1337)
Browse files Browse the repository at this point in the history
* refactor: handle challenge templates

* refactor: pass challenge directly to challenge view

* chore: update ua_client_hints to version 1.4.1

* fix: stop logging forum link

* feat: update navigation to handle challenge templates

* refactor: update challenge assignment in ChallengeViewModel

* fix: set last visited challenge

* fix: rename handleChallengeTemplateView to challengeTemplateView and update related navigation

* fix: black loading screen

* chore: remove extra builder widget

* chore: revert deleted comma

---------

Co-authored-by: Niraj Nandish <[email protected]>
  • Loading branch information
Sembauke and Nirajn2311 authored Feb 28, 2025
1 parent 764e122 commit 186f015
Show file tree
Hide file tree
Showing 14 changed files with 357 additions and 347 deletions.
4 changes: 2 additions & 2 deletions mobile-app/lib/app/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import 'package:freecodecamp/service/dio_service.dart';
import 'package:freecodecamp/service/news/api_service.dart';

import 'package:freecodecamp/ui/views/code_radio/code_radio_view.dart';
import 'package:freecodecamp/ui/views/learn/challenge/challenge_view.dart';
import 'package:freecodecamp/ui/views/learn/challenge/templates/template_view.dart';
import 'package:freecodecamp/ui/views/learn/landing/landing_view.dart';
import 'package:freecodecamp/ui/views/learn/superblock/superblock_view.dart';
import 'package:freecodecamp/ui/views/login/native_login_view.dart';
Expand Down Expand Up @@ -48,7 +48,7 @@ import 'package:stacked_services/stacked_services.dart';
MaterialRoute(page: NewsAuthorView),
MaterialRoute(page: NewsImageView),
MaterialRoute(page: CodeRadioView),
MaterialRoute(page: ChallengeView),
MaterialRoute(page: ChallengeTemplateView),
MaterialRoute(page: ProfileView),
MaterialRoute(page: LearnLandingView, initial: true),
MaterialRoute(page: NativeLoginView),
Expand Down
66 changes: 23 additions & 43 deletions mobile-app/lib/app/app.router.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions mobile-app/lib/service/firebase/analytics_observer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ class AnalyticsObserver extends RouteObserver {
route.settings.arguments as NewsBookmarkTutorialViewArguments;
screenName += '/${routeArgs.tutorial.tutorialTitle}';
break;
case ChallengeViewArguments:
final routeArgs = route.settings.arguments as ChallengeViewArguments;
case ChallengeTemplateViewArguments:
final routeArgs =
route.settings.arguments as ChallengeTemplateViewArguments;
screenName += '/${routeArgs.challengeId}';
break;
default:
Expand Down
16 changes: 6 additions & 10 deletions mobile-app/lib/service/learn/learn_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -172,17 +172,13 @@ class LearnService {
if (challengeIndex == maxChallenges - 1) {
_navigationService.back();
} else {
String challenge = block.challengeTiles[challengeIndex + 1].id;
String url = LearnService.baseUrl;
_navigationService.replaceWith(
Routes.challengeView,
arguments: ChallengeViewArguments(
url:
'$url/challenges/${block.superBlock.dashedName}/${block.dashedName}/$challenge.json',
block: block,
challengeId: block.challengeTiles[challengeIndex + 1].id,
challengesCompleted: challengesCompleted + 1,
isProject: block.challenges.length == 1),
Routes.challengeTemplateView,
arguments: ChallengeTemplateViewArguments(
challengeId: block.challengeTiles[challengeIndex + 1].id,
block: block,
challengesCompleted: challengesCompleted + 1,
),
);
}
}
Expand Down
10 changes: 0 additions & 10 deletions mobile-app/lib/ui/views/learn/block/block_view.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:freecodecamp/extensions/i18n_extension.dart';
import 'package:freecodecamp/models/learn/curriculum_model.dart';
import 'package:freecodecamp/service/learn/learn_service.dart';
import 'package:freecodecamp/ui/views/learn/block/block_viewmodel.dart';
import 'package:freecodecamp/ui/views/learn/utils/learn_globals.dart';
import 'package:freecodecamp/ui/views/learn/widgets/download_button_widget.dart';
Expand Down Expand Up @@ -243,10 +242,7 @@ class BlockView extends StatelessWidget {
onTap: () async {
String challengeId = block.challengeTiles[i].id;

String url = LearnService.baseUrl;

model.routeToChallengeView(
'$url/challenges/${block.superBlock.dashedName}/${block.dashedName}/$challengeId.json',
block,
challengeId,
);
Expand Down Expand Up @@ -380,13 +376,7 @@ class ChallengeTile extends StatelessWidget {
width: 70,
child: InkWell(
onTap: () async {
String url = LearnService.baseUrl;

String fullUrl =
'$url/challenges/${block.superBlock.dashedName}/${block.dashedName}/$challengeId.json';

model.routeToChallengeView(
fullUrl,
block,
challengeId,
);
Expand Down
13 changes: 4 additions & 9 deletions mobile-app/lib/ui/views/learn/block/block_viewmodel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -82,26 +82,21 @@ class BlockViewModel extends BaseViewModel {
notifyListeners();
}

void routeToChallengeView(String url, Block block, String challengeId) {
void routeToChallengeView(Block block, String challengeId) {
_navigationService.navigateTo(
Routes.challengeView,
arguments: ChallengeViewArguments(
url: url,
block: block,
Routes.challengeTemplateView,
arguments: ChallengeTemplateViewArguments(
challengeId: challengeId,
block: block,
challengesCompleted: _challengesCompleted,
isProject: block.challenges.length == 1,
),
);
}

Future<void> routeToCertification(Block block) async {
String challengeId = block.challengeTiles[0].id;

String url = LearnService.baseUrl;

routeToChallengeView(
'$url/challenges/${block.superBlock.dashedName}/${block.dashedName}/$challengeId.json',
block,
challengeId,
);
Expand Down
Loading

0 comments on commit 186f015

Please sign in to comment.