11import AnalyticsEventTrackerService from 'codecrafters-frontend/services/analytics-event-tracker' ;
22import Component from '@glimmer/component' ;
33import CoursePageStateService from 'codecrafters-frontend/services/course-page-state' ;
4- import FeatureFlagsService from 'codecrafters-frontend/services/feature-flags ' ;
4+ import RepositoryModel from 'codecrafters-frontend/models/repository ' ;
55import Store from '@ember-data/store' ;
6- import type CourseStageModel from 'codecrafters-frontend/models/course-stage' ;
7- import type RepositoryModel from 'codecrafters-frontend/models/repository' ;
86import type { StepDefinition } from 'codecrafters-frontend/components/expandable-step-list' ;
9- import type CourseStageStep from 'codecrafters-frontend/utils/course-page-step-list/course-stage-step' ;
10- import { action } from '@ember/object' ;
117import { inject as service } from '@ember/service' ;
8+ import { action } from '@ember/object' ;
9+ import type CourseStageStep from 'codecrafters-frontend/utils/course-page-step-list/course-stage-step' ;
1210
1311interface Signature {
1412 Element : HTMLDivElement ;
1513
1614 Args : {
17- repository : RepositoryModel ;
18- courseStage : CourseStageModel ;
1915 currentStep : CourseStageStep ;
2016 } ;
2117}
@@ -30,51 +26,37 @@ class BaseStep {
3026 }
3127}
3228
33- class NavigateToFileStep extends BaseStep implements StepDefinition {
34- id = 'navigate-to-file ' ;
29+ class UncommentCodeStep extends BaseStep implements StepDefinition {
30+ id = 'uncomment-code ' ;
3531 canBeCompletedManually = true ;
3632
3733 get titleMarkdown ( ) {
38- if ( ! this . repository . firstStageSolution ) {
39- return 'Navigate to README.md' ;
40- }
41-
42- const filename = this . repository . firstStageSolution . changedFiles [ 0 ] ! . filename ;
34+ const filename = this . repository . firstStageSolution ?. changedFiles [ 0 ] ?. filename ;
4335
4436 if ( filename ) {
45- return `Navigate to ${ filename } ` ;
37+ return `Uncomment code in ${ filename } ` ;
4638 } else {
47- return 'Navigate to file ' ;
39+ return 'Uncomment code ' ;
4840 }
4941 }
5042}
5143
52- class UncommentCodeStep extends BaseStep implements StepDefinition {
53- id = 'uncomment-code' ;
54- canBeCompletedManually = true ;
55-
56- get titleMarkdown ( ) {
57- return 'Uncomment code' ;
58- }
59- }
60-
6144class SubmitCodeStep extends BaseStep implements StepDefinition {
6245 id = 'submit-code' ;
6346 canBeCompletedManually = false ;
6447
6548 get titleMarkdown ( ) {
66- return 'Submit changes' ;
49+ return 'Git push to submit your changes' ;
6750 }
6851}
6952
70- export default class FirstStageTutorialCard extends Component < Signature > {
53+ export default class FirstStageYourTaskCard extends Component < Signature > {
7154 @service declare analyticsEventTracker : AnalyticsEventTrackerService ;
7255 @service declare coursePageState : CoursePageStateService ;
73- @service declare featureFlags : FeatureFlagsService ;
7456 @service declare store : Store ;
7557
7658 get filename ( ) {
77- const solution = this . args . courseStage . solutions . find ( ( solution ) => solution . language === this . args . repository . language ) ;
59+ const solution = this . args . currentStep . courseStage . solutions . find ( ( solution ) => solution . language === this . args . currentStep . repository . language ) ;
7860
7961 return solution ?. changedFiles [ 0 ] ?. filename ;
8062 }
@@ -83,24 +65,22 @@ export default class FirstStageTutorialCard extends Component<Signature> {
8365 return this . args . currentStep . testsStatus === 'passed' || this . args . currentStep . status === 'complete' ;
8466 }
8567
86- get navigateToFileStepIsComplete ( ) {
87- return this . navigateToFileStepWasMarkedAsComplete || this . uncommentCodeStepIsComplete ;
88- }
89-
90- get navigateToFileStepWasMarkedAsComplete ( ) {
91- return this . coursePageState . manuallyCompletedStepIdsInFirstStageInstructions . includes ( 'navigate-to-file' ) ;
68+ get instructionsMarkdown ( ) {
69+ return this . args . currentStep . courseStage . buildInstructionsMarkdownFor ( this . args . currentStep . repository ) ;
9270 }
9371
9472 get steps ( ) {
9573 return [
96- new NavigateToFileStep ( this . args . repository , this . navigateToFileStepIsComplete ) ,
97- new UncommentCodeStep ( this . args . repository , this . uncommentCodeStepIsComplete ) ,
98- new SubmitCodeStep ( this . args . repository , this . submitCodeStepIsComplete ) ,
74+ new UncommentCodeStep ( this . args . currentStep . repository , this . uncommentCodeStepIsComplete ) ,
75+ new SubmitCodeStep ( this . args . currentStep . repository , this . submitCodeStepIsComplete ) ,
9976 ] ;
10077 }
10178
10279 get submitCodeStepIsComplete ( ) {
103- return this . args . repository . lastSubmissionHasSuccessStatus || this . args . repository . stageIsComplete ( this . args . courseStage ) ;
80+ return (
81+ this . args . currentStep . repository . lastSubmissionHasSuccessStatus ||
82+ this . args . currentStep . repository . stageIsComplete ( this . args . currentStep . courseStage )
83+ ) ;
10484 }
10585
10686 get uncommentCodeStepIsComplete ( ) {
@@ -113,24 +93,13 @@ export default class FirstStageTutorialCard extends Component<Signature> {
11393
11494 @action
11595 handleStepCompletedManually ( step : StepDefinition ) {
116- if ( step . id === 'navigate-to-file' ) {
117- this . coursePageState . recordManuallyCompletedStepInFirstStageInstructions ( 'navigate-to-file' ) ;
118-
119- this . analyticsEventTracker . track ( 'completed_first_stage_tutorial_step' , {
120- step_number : 1 ,
121- step_id : 'navigate-to-file' ,
122- repository_id : this . args . repository . id ,
123- } ) ;
124- }
125-
12696 if ( step . id === 'uncomment-code' ) {
12797 this . coursePageState . recordManuallyCompletedStepInFirstStageInstructions ( 'uncomment-code' ) ;
128- this . coursePageState . recordManuallyCompletedStepInFirstStageInstructions ( 'navigate-to-file' ) ;
12998
13099 this . analyticsEventTracker . track ( 'completed_first_stage_tutorial_step' , {
131- step_number : 2 ,
100+ step_number : 1 ,
132101 step_id : 'uncomment-code' ,
133- repository_id : this . args . repository . id ,
102+ repository_id : this . args . currentStep . repository . id ,
134103 } ) ;
135104 }
136105 }
@@ -143,6 +112,6 @@ export default class FirstStageTutorialCard extends Component<Signature> {
143112
144113declare module '@glint/environment-ember-loose/registry' {
145114 export default interface Registry {
146- 'CoursePage::CourseStageStep::FirstStageTutorialCard ' : typeof FirstStageTutorialCard ;
115+ 'CoursePage::CourseStageStep::FirstStageYourTaskCard ' : typeof FirstStageYourTaskCard ;
147116 }
148117}
0 commit comments