Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions app/components/course-page/current-step-complete-modal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import Component from '@glimmer/component';
import CoursePageStateService from 'codecrafters-frontend/services/course-page-state';
import type StepDefinition from 'codecrafters-frontend/utils/course-page-step-list/step';
import { service } from '@ember/service';
import type FeatureFlagsService from 'codecrafters-frontend/services/feature-flags';

interface Signature {
Element: HTMLDivElement;
Expand All @@ -15,7 +14,6 @@ interface Signature {

export default class CurrentStepCompleteModal extends Component<Signature> {
@service declare coursePageState: CoursePageStateService;
@service declare featureFlags: FeatureFlagsService;

get currentStep() {
return this.coursePageState.currentStep;
Expand All @@ -30,7 +28,7 @@ export default class CurrentStepCompleteModal extends Component<Signature> {
}

get shouldShowLanguageLeaderboardRankSection() {
return this.currentStep.type === 'CourseStageStep' && this.featureFlags.shouldSeeLeaderboard;
return this.currentStep.type === 'CourseStageStep';
}

get stepForNextOrActiveStepButton() {
Expand Down
11 changes: 3 additions & 8 deletions app/components/header/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import PromotionalDiscountModel from 'codecrafters-frontend/models/promotional-d
import logoImage from '/assets/images/logo/logomark-color.svg';
import type AuthenticatorService from 'codecrafters-frontend/services/authenticator';
import type ContainerWidthService from 'codecrafters-frontend/services/container-width';
import type FeatureFlagsService from 'codecrafters-frontend/services/feature-flags';
import type PreferredLanguageLeaderboardService from 'codecrafters-frontend/services/preferred-language-leaderboard';
import type RouterService from '@ember/routing/router-service';
import type VersionTrackerService from 'codecrafters-frontend/services/version-tracker';
Expand All @@ -23,7 +22,6 @@ export default class Header extends Component<Signature> {

@service declare authenticator: AuthenticatorService;
@service declare containerWidth: ContainerWidthService;
@service declare featureFlags: FeatureFlagsService;
@service declare preferredLanguageLeaderboard: PreferredLanguageLeaderboardService;
@service declare router: RouterService;
@service declare versionTracker: VersionTrackerService;
Expand Down Expand Up @@ -67,16 +65,13 @@ export default class Header extends Component<Signature> {
const links: { text: string; route: string; type: 'route' | 'link'; routeParams?: string[] }[] = [
{ text: 'Catalog', route: 'catalog', type: 'route' },
{ text: 'Roadmap', route: 'roadmap', type: 'route' },
];

if (this.featureFlags.shouldSeeLeaderboard) {
links.push({
{
text: 'Leaderboard',
route: 'leaderboard',
type: 'route',
routeParams: [this.preferredLanguageLeaderboard.defaultLanguageSlug],
});
}
},
];

return links;
}
Expand Down
3 changes: 0 additions & 3 deletions app/services/feature-flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ export default class FeatureFlagsService extends Service {
return this.authenticator.currentUser;
}

get shouldSeeLeaderboard(): boolean {
return this.currentUser?.isStaff || this.getFeatureFlagValue('should-see-leaderboard') === 'test';
}

getFeatureFlagValue(flagName: string): string | null | undefined {
const value = this.currentUser?.featureFlags?.[flagName];
Expand Down
2 changes: 0 additions & 2 deletions tests/acceptance/course-page/attempt-course-stage-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@ module('Acceptance | course-page | attempt-course-stage', function (hooks) {
testScenario(this.server);
const currentUser = signInAsSubscriber(this.owner, this.server);

// TODO: Remove this once leaderboard isn't behind a feature flag
currentUser.update({ featureFlags: { 'should-see-leaderboard': 'test' } });

const go = this.server.schema.languages.findBy({ slug: 'go' });
const redis = this.server.schema.courses.findBy({ slug: 'redis' });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ module('Acceptance | course-page | submit-course-stage-feedback', function (hook
testScenario(this.server);
const currentUser = signInAsSubscriber(this.owner, this.server);

// TODO: Remove this once leaderboard isn't behind a feature flag
currentUser.update('featureFlags', { 'should-see-leaderboard': 'test' });

const go = this.server.schema.languages.findBy({ slug: 'go' });
const redis = this.server.schema.courses.findBy({ slug: 'redis' });
Expand Down
2 changes: 0 additions & 2 deletions tests/acceptance/course-page/view-course-stages-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ module('Acceptance | course-page | view-course-stages-test', function (hooks) {
testScenario(this.server);
const currentUser = signIn(this.owner, this.server);

// TODO: Remove this once leaderboard isn't behind a feature flag
currentUser.update('featureFlags', { 'should-see-leaderboard': 'test' });

const python = this.server.schema.languages.findBy({ name: 'Python' });
const redis = this.server.schema.courses.findBy({ slug: 'redis' });
Expand Down
6 changes: 2 additions & 4 deletions tests/acceptance/header-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ module('Acceptance | header-test', function (hooks) {
assert.strictEqual(currentURL(), '/pay', 'expect to be redirected to pay page');
});

test('header should show generic leaderboard link if user has feature flag enabled and leaderboard entries', async function (assert) {
test('header should show generic leaderboard link if user is authenticated and leaderboard entries', async function (assert) {
const user = signIn(this.owner, this.server);
user.update('featureFlags', { 'should-see-leaderboard': 'test' });

await catalogPage.visit();
assert.true(catalogPage.header.hasLink('Leaderboard'), 'expect leaderboard link to be visible');
Expand All @@ -37,9 +36,8 @@ module('Acceptance | header-test', function (hooks) {
assert.strictEqual(currentURL(), '/leaderboards/rust', 'expect to be redirected to rust leaderboard page');
});

test('header should show custom leaderboard link if user has feature flag enabled', async function (assert) {
test('header should show custom leaderboard link if user is authenticated', async function (assert) {
const user = signIn(this.owner, this.server);
user.update('featureFlags', { 'should-see-leaderboard': 'test' });

const python = this.server.schema.languages.findBy({ name: 'Python' });

Expand Down
Loading