Skip to content

Commit bc39af1

Browse files
authored
[ENG-10371] Delete draft preprint functionality was not included in Angular update (#940)
- Ticket: [ENG-10371](https://openscience.atlassian.net/browse/ENG-10371) - Feature flag: n/a ## Summary of Changes 1. Added logic for showing delete button. 2. Added delete button for update preprint.
1 parent b95b5f5 commit bc39af1

23 files changed

+288
-62
lines changed

src/app/features/preprints/components/stepper/author-assertion-step/author-assertions-step.component.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,15 @@ <h2>{{ 'preprints.preprintStepper.authorAssertions.publicPreregistration.title'
226226
severity="info"
227227
(onClick)="backButtonClicked()"
228228
/>
229-
<p-button
230-
class="w-6 md:w-6rem"
231-
styleClass="w-full"
232-
[label]="'common.buttons.delete' | translate"
233-
severity="danger"
234-
(onClick)="deletePreprint()"
235-
/>
229+
@if (showDeleteButton()) {
230+
<p-button
231+
class="w-6 md:w-6rem"
232+
styleClass="w-full"
233+
[label]="'common.buttons.delete' | translate"
234+
severity="danger"
235+
(onClick)="deletePreprint()"
236+
/>
237+
}
236238
<p-button
237239
class="w-6 md:w-9rem"
238240
styleClass="w-full"

src/app/features/preprints/components/stepper/author-assertion-step/author-assertions-step.component.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,21 @@ describe('AuthorAssertionsStepComponent', () => {
121121
expect(controls.preregLinkInfo.value).toBe(PreregLinkInfo.Both);
122122
});
123123

124+
it('should default showDeleteButton to false', () => {
125+
setup();
126+
127+
expect(component.showDeleteButton()).toBe(false);
128+
});
129+
130+
it('should update showDeleteButton when input changes', () => {
131+
setup();
132+
133+
fixture.componentRef.setInput('showDeleteButton', true);
134+
fixture.detectChanges();
135+
136+
expect(component.showDeleteButton()).toBe(true);
137+
});
138+
124139
it('should enable coiStatement control when hasCoi becomes true', () => {
125140
setup({ detectChanges: true });
126141
component.authorAssertionsForm.controls.hasCoi.setValue(true);

src/app/features/preprints/components/stepper/author-assertion-step/author-assertions-step.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Textarea } from 'primeng/textarea';
1010
import { Tooltip } from 'primeng/tooltip';
1111

1212
import { NgClass } from '@angular/common';
13-
import { ChangeDetectionStrategy, Component, effect, inject, output } from '@angular/core';
13+
import { ChangeDetectionStrategy, Component, effect, inject, input, output } from '@angular/core';
1414
import { toSignal } from '@angular/core/rxjs-interop';
1515
import {
1616
AbstractControl,
@@ -124,6 +124,7 @@ export class AuthorAssertionsStepComponent {
124124
initialValue: this.createdPreprint()?.hasPreregLinks ?? ApplicabilityStatus.NotApplicable,
125125
});
126126

127+
showDeleteButton = input(false);
127128
nextClicked = output<void>();
128129
backClicked = output<void>();
129130
deleteClicked = output<void>();

src/app/features/preprints/components/stepper/file-step/file-step.component.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,15 @@ <h2>{{ 'preprints.preprintStepper.file.title' | translate }}</h2>
143143
severity="info"
144144
(onClick)="backButtonClicked()"
145145
/>
146-
<p-button
147-
class="w-6 md:w-6rem"
148-
styleClass="w-full"
149-
[label]="'common.buttons.delete' | translate"
150-
severity="danger"
151-
(onClick)="deletePreprint()"
152-
/>
146+
@if (showDeleteButton()) {
147+
<p-button
148+
class="w-6 md:w-6rem"
149+
styleClass="w-full"
150+
[label]="'common.buttons.delete' | translate"
151+
severity="danger"
152+
(onClick)="deletePreprint()"
153+
/>
154+
}
153155
<p-button
154156
class="w-6 md:w-9rem"
155157
styleClass="w-full"

src/app/features/preprints/components/stepper/file-step/file-step.component.spec.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import { FilesTreeComponent } from '@osf/shared/components/files-tree/files-tree
2525
import { IconComponent } from '@osf/shared/components/icon/icon.component';
2626
import { FileModel } from '@osf/shared/models/files/file.model';
2727
import { FileFolderModel } from '@osf/shared/models/files/file-folder.model';
28-
import { CustomConfirmationService } from '@osf/shared/services/custom-confirmation.service';
2928
import { ToastService } from '@osf/shared/services/toast.service';
3029

3130
import { FileStepComponent } from './file-step.component';
@@ -34,10 +33,6 @@ import { OSF_FILE_MOCK } from '@testing/mocks/osf-file.mock';
3433
import { PREPRINT_MOCK } from '@testing/mocks/preprint.mock';
3534
import { PREPRINT_PROVIDER_DETAILS_MOCK } from '@testing/mocks/preprint-provider-details';
3635
import { provideOSFCore } from '@testing/osf.testing.provider';
37-
import {
38-
CustomConfirmationServiceMock,
39-
CustomConfirmationServiceMockType,
40-
} from '@testing/providers/custom-confirmation-provider.mock';
4136
import { mergeSignalOverrides, provideMockStore, SignalOverride } from '@testing/providers/store-provider.mock';
4237
import { ToastServiceMock, ToastServiceMockType } from '@testing/providers/toast-provider.mock';
4338

@@ -46,7 +41,6 @@ describe('FileStepComponent', () => {
4641
let fixture: ComponentFixture<FileStepComponent>;
4742
let store: Store;
4843
let toastServiceMock: ToastServiceMockType;
49-
let confirmationServiceMock: CustomConfirmationServiceMockType;
5044
const originalPointerEvent = (globalThis as unknown as { PointerEvent?: typeof Event }).PointerEvent;
5145

5246
const mockProvider: PreprintProviderDetails = PREPRINT_PROVIDER_DETAILS_MOCK;
@@ -81,16 +75,10 @@ describe('FileStepComponent', () => {
8175
}) {
8276
const signals = mergeSignalOverrides(defaultSignals, overrides?.selectorOverrides);
8377
toastServiceMock = ToastServiceMock.simple();
84-
confirmationServiceMock = CustomConfirmationServiceMock.simple();
8578

8679
TestBed.configureTestingModule({
8780
imports: [FileStepComponent, ...MockComponents(IconComponent, FilesTreeComponent)],
88-
providers: [
89-
provideOSFCore(),
90-
MockProvider(ToastService, toastServiceMock),
91-
MockProvider(CustomConfirmationService, confirmationServiceMock),
92-
provideMockStore({ signals }),
93-
],
81+
providers: [provideOSFCore(), MockProvider(ToastService, toastServiceMock), provideMockStore({ signals })],
9482
});
9583

9684
store = TestBed.inject(Store);
@@ -348,4 +336,19 @@ describe('FileStepComponent', () => {
348336

349337
expect(store.dispatch).toHaveBeenCalledWith(new FetchProjectFilesByLink('/v2/nodes/node-456/files/', 3));
350338
});
339+
340+
it('should default showDeleteButton to false', () => {
341+
setup();
342+
343+
expect(component.showDeleteButton()).toBe(false);
344+
});
345+
346+
it('should update showDeleteButton when input changes', () => {
347+
setup();
348+
349+
fixture.componentRef.setInput('showDeleteButton', true);
350+
fixture.detectChanges();
351+
352+
expect(component.showDeleteButton()).toBe(true);
353+
});
351354
});

src/app/features/preprints/components/stepper/file-step/file-step.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import { ClearFileDirective } from '@osf/shared/directives/clear-file.directive'
4646
import { StringOrNull } from '@osf/shared/helpers/types.helper';
4747
import { FileModel } from '@osf/shared/models/files/file.model';
4848
import { FileFolderModel } from '@osf/shared/models/files/file-folder.model';
49-
import { CustomConfirmationService } from '@osf/shared/services/custom-confirmation.service';
5049
import { ToastService } from '@osf/shared/services/toast.service';
5150

5251
@Component({
@@ -71,7 +70,6 @@ import { ToastService } from '@osf/shared/services/toast.service';
7170
})
7271
export class FileStepComponent implements OnInit {
7372
private toastService = inject(ToastService);
74-
private customConfirmationService = inject(CustomConfirmationService);
7573
private destroyRef = inject(DestroyRef);
7674

7775
private actions = createDispatchMap({
@@ -90,6 +88,7 @@ export class FileStepComponent implements OnInit {
9088
readonly PreprintFileSource = PreprintFileSource;
9189

9290
provider = input.required<PreprintProviderDetails>();
91+
showDeleteButton = input(false);
9392
preprint = select(PreprintStepperSelectors.getPreprint);
9493
selectedFileSource = select(PreprintStepperSelectors.getSelectedFileSource);
9594
fileUploadLink = select(PreprintStepperSelectors.getUploadLink);

src/app/features/preprints/components/stepper/preprints-metadata-step/preprints-metadata-step.component.html

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,15 @@ <h2 class="mb-4">{{ 'preprints.preprintStepper.metadata.publicationCitationTitle
106106
severity="info"
107107
(onClick)="backButtonClicked()"
108108
/>
109-
<p-button
110-
class="w-6 md:w-6rem"
111-
styleClass="w-full"
112-
[label]="'common.buttons.delete' | translate"
113-
severity="danger"
114-
(onClick)="deletePreprint()"
115-
/>
109+
@if (showDeleteButton()) {
110+
<p-button
111+
class="w-6 md:w-6rem"
112+
styleClass="w-full"
113+
[label]="'common.buttons.delete' | translate"
114+
severity="danger"
115+
(onClick)="deletePreprint()"
116+
/>
117+
}
116118
<p-button
117119
class="w-6 md:w-9rem"
118120
styleClass="w-full"

src/app/features/preprints/components/stepper/preprints-metadata-step/preprints-metadata-step.component.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,21 @@ describe('PreprintsMetadataStepComponent', () => {
184184
expect(nextClickedSpy).toHaveBeenCalled();
185185
});
186186

187+
it('should default showDeleteButton to false', () => {
188+
setup();
189+
190+
expect(component.showDeleteButton()).toBe(false);
191+
});
192+
193+
it('should update showDeleteButton when input changes', () => {
194+
setup();
195+
196+
fixture.componentRef.setInput('showDeleteButton', true);
197+
fixture.detectChanges();
198+
199+
expect(component.showDeleteButton()).toBe(true);
200+
});
201+
187202
it('should dispatch save license from createLicense', () => {
188203
setup({ detectChanges: false });
189204
component.createLicense({ id: MOCK_LICENSE.id, licenseOptions: { year: '2024', copyrightHolders: 'A' } });

src/app/features/preprints/components/stepper/preprints-metadata-step/preprints-metadata-step.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export class PreprintsMetadataStepComponent implements OnInit {
6363
private toastService = inject(ToastService);
6464

6565
provider = input.required<PreprintProviderDetails>();
66+
showDeleteButton = input(false);
6667
nextClicked = output<void>();
6768
backClicked = output<void>();
6869
deleteClicked = output<void>();

src/app/features/preprints/components/stepper/review-step/review-step.component.html

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,16 @@ <h2>{{ 'preprints.preprintStepper.review.sections.supplements.title' | translate
240240
[disabled]="isPreprintSubmitting()"
241241
(onClick)="cancelSubmission()"
242242
/>
243-
<p-button
244-
class="w-6 md:w-6rem"
245-
styleClass="w-full"
246-
[label]="'common.buttons.delete' | translate"
247-
severity="danger"
248-
[disabled]="isPreprintSubmitting()"
249-
(onClick)="deletePreprint()"
250-
/>
243+
@if (showDeleteButton()) {
244+
<p-button
245+
class="w-6 md:w-6rem"
246+
styleClass="w-full"
247+
[label]="'common.buttons.delete' | translate"
248+
severity="danger"
249+
[disabled]="isPreprintSubmitting()"
250+
(onClick)="deletePreprint()"
251+
/>
252+
}
251253
<p-button
252254
data-test-submit-button
253255
class="w-6 md:w-9rem"

0 commit comments

Comments
 (0)