diff --git a/projects/v3/src/app/pages/home/home.page.html b/projects/v3/src/app/pages/home/home.page.html index b27635cea..4d911d4ab 100644 --- a/projects/v3/src/app/pages/home/home.page.html +++ b/projects/v3/src/app/pages/home/home.page.html @@ -45,7 +45,7 @@

-
+
{ beforeEach(() => { sharedService.refreshJWT.and.returnValue(Promise.resolve()); storageService.get.and.returnValue({ name: 'Test Experience', cardUrl: 'test-url' }); + storageService.getFeature.and.returnValue(true); achievementService.getIsPointsConfigured.and.returnValue(true); achievementService.getEarnedPoints.and.returnValue(100); homeService.getPulseCheckStatuses.and.returnValue(of({ @@ -165,6 +166,18 @@ describe('HomePage', () => { expect(component.experience).toEqual({ name: 'Test Experience', cardUrl: 'test-url' }); }); + it('should set project hub visibility from feature toggle', async () => { + await component.updateDashboard(); + expect(storageService.getFeature).toHaveBeenCalledWith('showProjectHub'); + expect(component.showProjectHub).toBe(true); + }); + + it('should hide project hub when feature toggle is disabled', async () => { + storageService.getFeature.and.returnValue(false); + await component.updateDashboard(); + expect(component.showProjectHub).toBe(false); + }); + it('should call service methods to fetch data', async () => { await component.updateDashboard(); expect(homeService.getMilestones).toHaveBeenCalled(); diff --git a/projects/v3/src/app/pages/home/home.page.ts b/projects/v3/src/app/pages/home/home.page.ts index 1fcfd5b8d..f1b34ffbe 100644 --- a/projects/v3/src/app/pages/home/home.page.ts +++ b/projects/v3/src/app/pages/home/home.page.ts @@ -66,6 +66,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked { // project brief data from team storage projectBrief: ProjectBrief | null = null; + showProjectHub = false; // Expose Math to template Math = Math; @@ -205,6 +206,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked { async updateDashboard() { await this.sharedService.refreshJWT(); // refresh JWT token [CORE-6083] this.experience = this.storageService.get("experience"); + this.showProjectHub = this.storageService.getFeature('showProjectHub'); this.homeService.getMilestones({ forceRefresh: true }); this.achievementService.getAchievements(); this.homeService.getProjectProgress(); diff --git a/projects/v3/src/app/services/auth.service.ts b/projects/v3/src/app/services/auth.service.ts index 56dd573f5..a6ff016a4 100644 --- a/projects/v3/src/app/services/auth.service.ts +++ b/projects/v3/src/app/services/auth.service.ts @@ -118,6 +118,7 @@ interface AuthEndpointExperience { }; featureToggle: { pulseCheckIndicator: boolean; + showProjectHub: boolean; }; } @@ -240,6 +241,7 @@ export class AuthService { } featureToggle { pulseCheckIndicator + showProjectHub } } email diff --git a/projects/v3/src/app/services/demo.service.ts b/projects/v3/src/app/services/demo.service.ts index 472e290d9..2b7dc4f76 100644 --- a/projects/v3/src/app/services/demo.service.ts +++ b/projects/v3/src/app/services/demo.service.ts @@ -1714,6 +1714,7 @@ export class DemoService { "progress": 0, "featureToggle": { "pulseCheckIndicator": true, + "showProjectHub": true, }, "projectId": 1, }; diff --git a/projects/v3/src/app/services/experience.service.ts b/projects/v3/src/app/services/experience.service.ts index a3d7dbeda..5b36e02d8 100644 --- a/projects/v3/src/app/services/experience.service.ts +++ b/projects/v3/src/app/services/experience.service.ts @@ -90,6 +90,7 @@ export interface Experience { truncateDescription: boolean; featureToggle: { pulseCheckIndicator: boolean; + showProjectHub: boolean; }; progress: number; config: { @@ -191,6 +192,7 @@ export class ExperienceService { truncateDescription featureToggle { pulseCheckIndicator + showProjectHub } } }` diff --git a/projects/v3/src/app/services/storage.service.ts b/projects/v3/src/app/services/storage.service.ts index 6d94f3f7a..241478801 100644 --- a/projects/v3/src/app/services/storage.service.ts +++ b/projects/v3/src/app/services/storage.service.ts @@ -154,10 +154,10 @@ export class BrowserStorageService { /** * Retrieves the status of a specified feature toggle. (controlled by the backend) * - * @param name - The name of the feature toggle to check. Currently supports 'pulseCheckIndicator'. + * @param name - The name of the feature toggle to check. Currently supports 'pulseCheckIndicator' and 'showProjectHub'. * @returns A boolean indicating whether the specified feature toggle is enabled. */ - getFeature(name: 'pulseCheckIndicator'): boolean { + getFeature(name: 'pulseCheckIndicator' | 'showProjectHub'): boolean { return this.get('experience')?.featureToggle?.[name] || false; } diff --git a/projects/v3/src/environments/environment.custom.ts b/projects/v3/src/environments/environment.custom.ts index 4431ccb15..cb62cd1bb 100644 --- a/projects/v3/src/environments/environment.custom.ts +++ b/projects/v3/src/environments/environment.custom.ts @@ -64,7 +64,7 @@ export const environment = { assessmentPagination: , }, snowAnimation: { - enabled: true, + enabled: false, snowflakeCount: 30, }, };