Skip to content

Commit fe1b2e0

Browse files
authored
[ENG-3243] Delete button for Revisions and Draft Reg (#1354)
* Move delete button in edit-revision * Add delete button to draft registration workflow * Remove updated responses from justification page * Fix tests * Move delete task to revisionManager
1 parent 9f09d9e commit fe1b2e0

File tree

17 files changed

+112
-67
lines changed

17 files changed

+112
-67
lines changed

app/models/registration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export default class RegistrationModel extends NodeModel.extend(Validations) {
151151
originalResponse!: AsyncBelongsTo<SchemaResponseModel> | SchemaResponseModel;
152152

153153
@belongsTo('schema-response', { inverse: null })
154-
latestResponse!: AsyncBelongsTo<SchemaResponseModel> | SchemaResponseModel;
154+
latestResponse!: AsyncBelongsTo<SchemaResponseModel> | SchemaResponseModel; // Latest accepted response
155155

156156
// Write-only relationships
157157
@belongsTo('draft-registration', { inverse: null })

app/packages/registration-schema/validations.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { assert } from '@ember/debug';
22
import { set } from '@ember/object';
33
import { ValidationObject, ValidatorFunction } from 'ember-changeset-validations';
4-
import { validateLength, validatePresence } from 'ember-changeset-validations/validators';
4+
import { validatePresence } from 'ember-changeset-validations/validators';
55
import DraftNode from 'ember-osf-web/models/draft-node';
66
import LicenseModel from 'ember-osf-web/models/license';
77

@@ -178,11 +178,5 @@ export function buildSchemaResponseValidations() {
178178
type: 'blank',
179179
})];
180180
set(validationObj, 'revisionJustification', notBlank);
181-
set(validationObj, 'updatedResponseKeys', [validateLength({
182-
min: 1,
183-
allowBlank: false,
184-
allowNone: false,
185-
type: 'no_updated_responses',
186-
})]);
187181
return validationObj;
188182
}

lib/registries/addon/drafts/draft/-components/right-nav/styles.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.NextButton,
22
.ReviewButton,
3-
.BackButton {
3+
.BackButton,
4+
.DeleteButton {
45
button {
56
width: 100%;
67
}

lib/registries/addon/drafts/draft/-components/right-nav/template.hbs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,13 @@
7979
@date={{@draftManager.draftRegistration.datetimeUpdated}}
8080
/>
8181
</span>
82+
83+
{{#if @draftManager.currentUserIsAdmin}}
84+
<DeleteButton
85+
local-class='DeleteButton'
86+
@delete={{perform @draftManager.deleteDraft}}
87+
@modalTitle={{t 'registries.drafts.draft.delete_modal.title'}}
88+
@modalBody={{t 'registries.drafts.draft.delete_modal.body'}}
89+
@buttonLabel={{t 'registries.drafts.draft.delete_modal.button'}}
90+
/>
91+
{{/if}}

lib/registries/addon/drafts/draft/draft-registration-manager.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,19 @@ export default class DraftRegistrationManager {
203203
}
204204
}
205205

206+
@task
207+
@waitFor
208+
async deleteDraft() {
209+
try {
210+
await this.draftRegistration.destroyRecord();
211+
this.router.transitionTo('registries.my-registrations');
212+
} catch (e) {
213+
const errorMessage = this.intl.t('registries.drafts.draft.delete_modal.delete_error');
214+
captureException(e, { errorMessage });
215+
this.toast.error(getApiErrorMessage(e), errorMessage);
216+
}
217+
}
218+
206219
@action
207220
onPageChange(currentPage: number) {
208221
if (this.hasVisitedPages) {

lib/registries/addon/edit-revision/-components/right-nav/styles.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.NextButton,
22
.ReviewButton,
3-
.BackButton {
3+
.BackButton,
4+
.DeleteButton {
45
button {
56
width: 100%;
67
}

lib/registries/addon/edit-revision/-components/right-nav/template.hbs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,13 @@
7878
@date={{@revisionManager.revision.dateModified}}
7979
/>
8080
</span>
81+
82+
{{#if @revisionManager.showDeleteButton}}
83+
<DeleteButton
84+
local-class='DeleteButton'
85+
@delete={{perform @revisionManager.deleteRevision}}
86+
@modalTitle={{t 'registries.edit_revision.delete_modal.title'}}
87+
@modalBody={{t 'registries.edit_revision.delete_modal.body'}}
88+
@buttonLabel={{t 'registries.edit_revision.delete_modal.button'}}
89+
/>
90+
{{/if}}
Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
import Controller from '@ember/controller';
2-
import { assert } from '@ember/debug';
32
import { alias, not } from '@ember/object/computed';
43
import RouterService from '@ember/routing/router-service';
54
import { inject as service } from '@ember/service';
6-
import { waitFor } from '@ember/test-waiters';
7-
import { task } from 'ember-concurrency';
85
import IntlService from 'ember-intl/services/intl';
96
import RegistrationModel from 'ember-osf-web/models/registration';
107
import SchemaResponseModel from 'ember-osf-web/models/schema-response';
11-
import captureException, { getApiErrorMessage } from 'ember-osf-web/utils/capture-exception';
128
import Media from 'ember-responsive';
139

1410
export default class EditRevisionController extends Controller {
@@ -21,19 +17,4 @@ export default class EditRevisionController extends Controller {
2117

2218
@alias('model.revisionManager.revision') revision?: SchemaResponseModel;
2319
@alias('model.revisionManager.registration') registration?: RegistrationModel;
24-
25-
@task
26-
@waitFor
27-
async deleteRevision() {
28-
assert('this.revision is required to delete a revision', this.revision);
29-
assert('this.registration is required to redirect after deleting a revision', this.registration);
30-
try {
31-
await this.revision.destroyRecord();
32-
this.router.transitionTo('registries.overview.index', this.registration.id);
33-
} catch (e) {
34-
const errorMessage = this.intl.t('registries.edit_revision.delete_modal.delete_error');
35-
captureException(e, { errorMessage });
36-
this.toast.error(getApiErrorMessage(e), errorMessage);
37-
}
38-
}
3920
}

lib/registries/addon/edit-revision/justification/styles.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,3 @@
2121
.SchemaBlockLongText {
2222
composes: SchemaBlockLongText from '../../drafts/draft/metadata/styles.scss';
2323
}
24-
25-
.RevisedResponses {
26-
font-style: italic;
27-
}

lib/registries/addon/edit-revision/justification/template.hbs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,7 @@
2727
@uniqueID={{reasonFieldId}}
2828
/>
2929
{{/let}}
30-
{{#let (unique-id 'questions') as |questionsFieldId|}}
31-
<label for={{questionsFieldId}} id='questions'>
32-
<p local-class='DisplayText'>
33-
{{t 'registries.edit_revision.updatedResponseKeys'}}
34-
<span local-class='Required'>*</span>
35-
</p>
36-
</label>
37-
<Registries::RevisedResponsesList
38-
@revision={{this.revisionManager.revision}}
39-
@schemaBlocks={{this.revisionManager.schemaBlocks}}
40-
local-class='RevisedResponses'
41-
/>
42-
{{/let}}
4330
</FormControls>
4431
</form>
4532
</main>
46-
{{/if}}
33+
{{/if}}

0 commit comments

Comments
 (0)