fix autosave of comment

This commit is contained in:
2022-03-14 13:04:29 +01:00
parent fc1fe7c277
commit bd79391efc
3 changed files with 131 additions and 58 deletions

View File

@@ -17,12 +17,11 @@
:placeholder="$t('comment.content')"
:editor="editor"
v-model="content"
@input="onContentChange"
tag-name="textarea">
</ckeditor>
<div class="sub-comment">
<div v-if="pinnedComment" class="metadata">
<div v-if="pinnedComment !== null && typeof pinnedComment.creator !== 'undefined'" class="metadata">
{{ $t('comment.created_by', [
pinnedComment.creator.text,
$d(pinnedComment.updatedAt.datetime, 'long')
@@ -64,11 +63,8 @@ export default {
data() {
return {
editor: ClassicEditor,
formData: {
type: "accompanying_period_comment",
content: ''
},
loading: false
loading: false,
lastRecordedContent: null,
}
},
computed: {
@@ -77,10 +73,48 @@ export default {
}),
content: {
set(value) {
this.formData.content = value;
console.log('new comment value', value);
console.log('previous value', this.lastRecordedContent);
this.lastRecordedContent = value;
setTimeout(() => {
console.log('performing test on ', value);
if (this.lastRecordedContent === value) {
this.loading = true;
if (value !== '') {
this.$store.dispatch('updatePinnedComment', value)
.then(() => {
this.loading = false;
})
.catch(({name, violations}) => {
if (name === 'ValidationException' || name === 'AccessException') {
violations.forEach((violation) => this.$toast.open({message: violation}));
} else {
this.$toast.open({message: 'An error occurred'})
}
});
} else {
if (this.$store.state.accompanyingCourse.pinnedComment !== null) {
this.$store.dispatch('removePinnedComment', {id: this.pinnedComment.id})
.then(() => {
this.loading = false;
this.lastRecoredContent = null;
})
.catch(({name, violations}) => {
if (name === 'ValidationException' || name === 'AccessException') {
violations.forEach((violation) => this.$toast.open({message: violation}));
} else {
this.$toast.open({message: 'An error occurred'})
}
});
}
}
}
}, 3000);
},
get() {
return this.pinnedComment ? this.pinnedComment.content : '';
get() {
return this.pinnedComment ? this.pinnedComment.content : '';
}
},
errors() {
@@ -89,38 +123,7 @@ export default {
},
methods: {
onContentChange() {
this.loading = true;
let lastRecordedContent = this.formData.content;
setTimeout(() => {
if (this.formData.content !== '') {
if (lastRecordedContent === this.formData.content) {
if (this.pinnedComment) {
let body = this.formData;
Object.assign(body, {id: this.pinnedComment.id});
this.$store.dispatch('updatePinnedComment', body)
.catch(({name, violations}) => {
if (name === 'ValidationException' || name === 'AccessException') {
violations.forEach((violation) => this.$toast.open({message: violation}));
} else {
this.$toast.open({message: 'An error occurred'})
}
});
} else {
this.$store.dispatch('addPinnedComment', this.formData)
.catch(({name, violations}) => {
if (name === 'ValidationException' || name === 'AccessException') {
violations.forEach((violation) => this.$toast.open({message: violation}));
} else {
this.$toast.open({message: 'An error occurred'})
}
});
}
lastRecordedContent = null;
}
}
this.loading = false;
}, 3000);
},
removeComment() {
this.$store.dispatch('removePinnedComment', {id: this.pinnedComment.id})