chore: Add loader for email and csat submit buttons (#2569)

* fix the loader issue in submit button

* review fixes

Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com>
This commit is contained in:
Muhsin Keloth 2021-07-07 11:24:08 +05:30 committed by GitHub
parent 0d02142925
commit e89e184d3b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 29 deletions

View file

@ -29,8 +29,8 @@
:disabled="isButtonDisabled"
:style="{ background: widgetColor, borderColor: widgetColor }"
>
<i v-if="!isUpdating" class="ion-ios-arrow-forward" />
<spinner v-else />
<spinner v-if="isUpdating && feedback" />
<i v-else class="ion-ios-arrow-forward" />
</button>
</form>
</div>
@ -50,6 +50,10 @@ export default {
type: Object,
default: () => {},
},
messageId: {
type: Number,
required: true,
},
},
data() {
return {
@ -84,10 +88,10 @@ export default {
mounted() {
if (this.isRatingSubmitted) {
const {
csat_survey_response: { rating, feedback },
csat_survey_response: { rating, feedback_message },
} = this.messageContentAttributes;
this.selectedRating = rating;
this.feedback = feedback;
this.feedback = feedback_message;
}
},
@ -100,11 +104,23 @@ export default {
'emoji-button',
];
},
onSubmit() {
this.$emit('submit', {
async onSubmit() {
this.isUpdating = true;
try {
await this.$store.dispatch('message/update', {
submittedValues: {
csat_survey_response: {
rating: this.selectedRating,
feedback: this.feedback,
feedback_message: this.feedback,
},
},
messageId: this.messageId,
});
} catch (error) {
// Ignore error
} finally {
this.isUpdating = false;
}
},
selectRating(rating) {
this.selectedRating = rating.value;

View file

@ -47,7 +47,7 @@
<customer-satisfaction
v-if="isCSAT"
:message-content-attributes="messageContentAttributes.submitted_values"
@submit="onCSATSubmit"
:message-id="messageId"
/>
</div>
</template>
@ -125,17 +125,6 @@ export default {
messageId: this.messageId,
});
},
onCSATSubmit({ feedback, rating }) {
this.onResponse({
submittedValues: {
csat_survey_response: {
rating,
feedback_message: feedback,
},
},
messageId: this.messageId,
});
},
},
};
</script>

View file

@ -18,7 +18,7 @@
:disabled="$v.email.$invalid"
:style="{ background: widgetColor, borderColor: widgetColor }"
>
<i v-if="!uiFlags.isUpdating" class="ion-ios-arrow-forward" />
<i v-if="!isUpdating" class="ion-ios-arrow-forward" />
<spinner v-else />
</button>
</form>
@ -47,11 +47,11 @@ export default {
data() {
return {
email: '',
isUpdating: false,
};
},
computed: {
...mapGetters({
uiFlags: 'message/getUIFlags',
widgetColor: 'appConfig/getWidgetColor',
}),
hasSubmitted() {
@ -68,15 +68,21 @@ export default {
},
},
methods: {
onSubmit() {
async onSubmit() {
if (this.$v.$invalid) {
return;
}
this.$store.dispatch('message/update', {
this.isUpdating = true;
try {
await this.$store.dispatch('message/update', {
email: this.email,
messageId: this.messageId,
});
} catch (error) {
// Ignore error
} finally {
this.isUpdating = false;
}
},
},
};