Skip to content

Commit 9ff9a14

Browse files
committed
Added feature flag to show/hide the new draft history UI
1 parent 48cfac8 commit 9ff9a14

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-generation.component.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ <h3>{{ t("draft_finishing_header") }}</h3>
261261
<app-working-animated-indicator></app-working-animated-indicator>
262262
</section>
263263
}
264-
@if (isDraftComplete(draftJob) || hasAnyCompletedBuild) {
264+
@if ((isDraftComplete(draftJob) || hasAnyCompletedBuild) && !featureFlags.newDraftHistory.enabled) {
265265
<section class="draft-complete">
266266
<mat-card class="preview-card">
267267
<mat-card-header>
@@ -333,6 +333,10 @@ <h3>{{ t("draft_finishing_header") }}</h3>
333333
}
334334
</section>
335335

336+
@if (featureFlags.newDraftHistory.enabled) {
337+
<app-draft-history-list></app-draft-history-list>
338+
}
339+
336340
@if (canShowAdditionalInfo(draftJob)) {
337341
<section>
338342
<mat-expansion-panel class="diagnostics-info">
@@ -363,5 +367,3 @@ <h3>{{ t("draft_finishing_header") }}</h3>
363367
}
364368
}
365369
</ng-container>
366-
367-
<app-draft-history-list></app-draft-history-list>

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-generation.component.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { anything, instance, mock, verify, when } from 'ts-mockito';
1313
import { ActivatedProjectService } from 'xforge-common/activated-project.service';
1414
import { AuthService } from 'xforge-common/auth.service';
1515
import { DialogService } from 'xforge-common/dialog.service';
16+
import { createTestFeatureFlag, FeatureFlagService } from 'xforge-common/feature-flags/feature-flag.service';
1617
import { RealtimeQuery } from 'xforge-common/models/realtime-query';
1718
import { UserDoc } from 'xforge-common/models/user-doc';
1819
import { NoticeService } from 'xforge-common/notice.service';
@@ -51,6 +52,7 @@ describe('DraftGenerationComponent', () => {
5152
let mockPreTranslationSignupUrlService: jasmine.SpyObj<PreTranslationSignupUrlService>;
5253
let mockTrainingDataService: jasmine.SpyObj<TrainingDataService>;
5354
let mockProgressService: jasmine.SpyObj<ProgressService>;
55+
let mockFeatureFlagService: jasmine.SpyObj<FeatureFlagService>;
5456

5557
const buildDto: BuildDto = {
5658
id: 'testId',
@@ -98,7 +100,8 @@ describe('DraftGenerationComponent', () => {
98100
{ provide: OnlineStatusService, useClass: TestOnlineStatusService },
99101
{ provide: PreTranslationSignupUrlService, useValue: mockPreTranslationSignupUrlService },
100102
{ provide: TrainingDataService, useValue: mockTrainingDataService },
101-
{ provide: ProgressService, useValue: mockProgressService }
103+
{ provide: ProgressService, useValue: mockProgressService },
104+
{ provide: FeatureFlagService, useValue: mockFeatureFlagService }
102105
]
103106
});
104107

@@ -156,6 +159,9 @@ describe('DraftGenerationComponent', () => {
156159
when(mockTrainingDataQuery.remoteDocChanges$).thenReturn(of());
157160
mockTrainingDataService = jasmine.createSpyObj<TrainingDataService>(['queryTrainingDataAsync']);
158161
mockTrainingDataService.queryTrainingDataAsync.and.returnValue(Promise.resolve(instance(mockTrainingDataQuery)));
162+
mockFeatureFlagService = jasmine.createSpyObj<FeatureFlagService>({
163+
newDraftHistory: createTestFeatureFlag(false)
164+
});
159165
}
160166

161167
static initProject(currentUserId: string, preTranslate: boolean = true): void {
@@ -1416,6 +1422,7 @@ describe('DraftGenerationComponent', () => {
14161422

14171423
it('button should display if there is a completed build while a build is queued', () => {
14181424
const env = new TestEnvironment();
1425+
env.setup();
14191426
env.component.draftJob = { ...buildDto, state: BuildStates.Queued };
14201427
env.component.lastCompletedBuild = { ...buildDto, state: BuildStates.Completed };
14211428
env.component.hasDraftBooksAvailable = true;

src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-generation.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { AuthService } from 'xforge-common/auth.service';
1717
import { DataLoadingComponent } from 'xforge-common/data-loading-component';
1818
import { DialogService } from 'xforge-common/dialog.service';
1919
import { ExternalUrlService } from 'xforge-common/external-url.service';
20+
import { FeatureFlagService } from 'xforge-common/feature-flags/feature-flag.service';
2021
import { I18nService } from 'xforge-common/i18n.service';
2122
import { NoticeService } from 'xforge-common/notice.service';
2223
import { OnlineStatusService } from 'xforge-common/online-status.service';
@@ -152,6 +153,7 @@ export class DraftGenerationComponent extends DataLoadingComponent implements On
152153
private readonly preTranslationSignupUrlService: PreTranslationSignupUrlService,
153154
protected readonly noticeService: NoticeService,
154155
protected readonly urlService: ExternalUrlService,
156+
protected readonly featureFlags: FeatureFlagService,
155157
private destroyRef: DestroyRef
156158
) {
157159
super(noticeService);

src/SIL.XForge.Scripture/ClientApp/src/xforge-common/feature-flags/feature-flag.service.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ export class FeatureFlagService {
319319
this.featureFlagStore
320320
);
321321

322+
readonly newDraftHistory: ObservableFeatureFlag = new FeatureFlagFromStorage(
323+
'NewDraftHistory',
324+
'Preview new draft history interface',
325+
16,
326+
this.featureFlagStore
327+
);
328+
322329
get featureFlags(): FeatureFlag[] {
323330
return Object.values(this).filter(value => value instanceof FeatureFlagFromStorage);
324331
}

0 commit comments

Comments
 (0)