From db38ff9a88a0d4cbdad9d8cc867810a539d9ba93 Mon Sep 17 00:00:00 2001 From: Rajat Jain Date: Thu, 11 Apr 2019 15:29:32 +0530 Subject: Autosave description in epics When editing an epic, the progress was previously lost due to lack of localstorage syncing code. This commit adds support for localstorage sync. --- .../javascripts/issue_show/components/app.vue | 20 +++++++-- .../issue_show/components/description.vue | 1 + .../issue_show/components/fields/title.vue | 1 + .../javascripts/issue_show/components/form.vue | 47 +++++++++++++++++++++- app/helpers/labels_helper.rb | 2 +- changelogs/unreleased/ce-4681-autosave.yml | 5 +++ spec/javascripts/issue_show/components/app_spec.js | 47 ++++++++++++++++++++++ .../components/fields/description_spec.js | 4 ++ .../issue_show/components/fields/title_spec.js | 4 ++ .../javascripts/issue_show/components/form_spec.js | 25 ++++++++++++ 10 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/ce-4681-autosave.yml diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index bd757a76ee7..ab0b4231255 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -159,9 +159,23 @@ export default { return !!this.state.updatedAt; }, issueChanged() { - const descriptionChanged = this.initialDescriptionText !== this.store.formState.description; - const titleChanged = this.initialTitleText !== this.store.formState.title; - return descriptionChanged || titleChanged; + const { + store: { + formState: { description, title }, + }, + initialDescriptionText, + initialTitleText, + } = this; + + if (initialDescriptionText || description) { + return initialDescriptionText !== description; + } + + if (initialTitleText || title) { + return initialTitleText !== title; + } + + return false; }, defaultErrorMessage() { return sprintf(s__('Error updating %{issuableType}'), { issuableType: this.issuableType }); diff --git a/app/assets/javascripts/issue_show/components/description.vue b/app/assets/javascripts/issue_show/components/description.vue index 732184dc782..385e9543973 100644 --- a/app/assets/javascripts/issue_show/components/description.vue +++ b/app/assets/javascripts/issue_show/components/description.vue @@ -145,6 +145,7 @@ export default { >