Proper error handling when fetching comments fails
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
@@ -23,8 +23,8 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div v-else-if="isLoading" class="icon icon-loading" />
|
<div v-else-if="isLoading" class="icon icon-loading" />
|
||||||
<div v-else class="emptycontent">
|
<div v-else class="emptycontent">
|
||||||
<div class="icon-comment" />
|
<div :class="{ 'icon-comment': !error, 'icon-error': error }" />
|
||||||
<p>{{ t('deck', 'No comments yet. Begin the discussion!') }}</p>
|
<p>{{ error || t('deck', 'No comments yet. Begin the discussion!') }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -60,6 +60,7 @@ export default {
|
|||||||
newComment: '',
|
newComment: '',
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
currentUser: getCurrentUser(),
|
currentUser: getCurrentUser(),
|
||||||
|
error: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -85,19 +86,33 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async infiniteHandler($state) {
|
async infiniteHandler($state) {
|
||||||
await this.loadMore()
|
this.error = null
|
||||||
if (this.hasMoreComments(this.card.id)) {
|
try {
|
||||||
$state.loaded()
|
await this.loadMore()
|
||||||
} else {
|
if (this.hasMoreComments(this.card.id)) {
|
||||||
|
$state.loaded()
|
||||||
|
} else {
|
||||||
|
$state.complete()
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Failed to fetch more comments during infinite loading', e)
|
||||||
|
this.error = t('deck', 'Failed to load comments')
|
||||||
$state.complete()
|
$state.complete()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async loadComments() {
|
async loadComments() {
|
||||||
|
this.error = null
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
await this.$store.dispatch('fetchComments', { cardId: this.card.id })
|
try {
|
||||||
this.isLoading = false
|
await this.$store.dispatch('fetchComments', { cardId: this.card.id })
|
||||||
if (this.card.commentsUnread > 0) {
|
this.isLoading = false
|
||||||
await this.$store.dispatch('markCommentsAsRead', this.card.id)
|
if (this.card.commentsUnread > 0) {
|
||||||
|
await this.$store.dispatch('markCommentsAsRead', this.card.id)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
this.isLoading = false
|
||||||
|
console.error('Failed to fetch more comments during infinite loading', e)
|
||||||
|
this.error = t('deck', 'Failed to load comments')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async createComment(content) {
|
async createComment(content) {
|
||||||
|
|||||||
Reference in New Issue
Block a user