diff --git a/src/components/ContactsList.vue b/src/components/ContactsList.vue
index bf43f2258a..f3fa13f175 100644
--- a/src/components/ContactsList.vue
+++ b/src/components/ContactsList.vue
@@ -480,11 +480,18 @@ export default {
},
async finishContactMerging(mergedContact) {
- // After merging, we need to update the contact in the store
- await this.$store.dispatch('fetchFullContact', { contact: mergedContact, forceReFetch: true })
-
- this.unselectAllMultiSelected()
- this.isMerging = false
+ try {
+ // After merging, we need to update the contact in the store
+ await this.$store.dispatch('fetchFullContact', { contact: mergedContact, forceReFetch: true })
+ } catch (error) {
+ // The merge itself already succeeded on the server, so we must
+ // not leave the dialog stuck in a loading state if refreshing
+ // the merged contact fails.
+ console.error('Could not refresh the merged contact', error)
+ } finally {
+ this.unselectAllMultiSelected()
+ this.isMerging = false
+ }
await this.$router.push({
name: 'root',
diff --git a/src/components/ContactsList/Merging.vue b/src/components/ContactsList/Merging.vue
index 8d2a75aaef..59cdcd6e6e 100644
--- a/src/components/ContactsList/Merging.vue
+++ b/src/components/ContactsList/Merging.vue
@@ -23,6 +23,11 @@
type="warning"
:text="t('contacts', 'The selected contacts have conflicting information. Choose which information to keep')" />
+
+