Skip to content

Commit b987614

Browse files
authored
fix: Prevent infinity loop on form deletion (#3343)
Signed-off-by: Kostiantyn Miakshyn <molodchick@gmail.com>
1 parent 3689fc8 commit b987614

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

src/Forms.vue

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ import { loadState } from '@nextcloud/initial-state'
152152
import moment from '@nextcloud/moment'
153153
import { generateOcsUrl } from '@nextcloud/router'
154154
import { useIsMobile } from '@nextcloud/vue'
155-
import { computed, onMounted, onUnmounted, ref } from 'vue'
155+
import { computed, onMounted, onUnmounted, ref, watch } from 'vue'
156156
import { useRoute, useRouter } from 'vue-router'
157157
import NcAppContent from '@nextcloud/vue/components/NcAppContent'
158158
import NcAppNavigation from '@nextcloud/vue/components/NcAppNavigation'
@@ -205,6 +205,7 @@ export default {
205205
const allSharedForms = ref([])
206206
const showArchivedForms = ref(false)
207207
const canCreateForms = ref(loadState(appName, 'appConfig').canCreateForms)
208+
const deletedFormHash = ref(null)
208209
209210
const PERMISSION_TYPES = PermissionTypes.data().PERMISSION_TYPES
210211
@@ -219,6 +220,11 @@ export default {
219220
return false
220221
}
221222
223+
// Don't try to fetch if this form was just deleted
224+
if (deletedFormHash.value === routeHash.value) {
225+
return false
226+
}
227+
222228
const form = [...forms.value, ...allSharedForms.value].find(
223229
(form) => form.hash === routeHash.value,
224230
)
@@ -435,12 +441,24 @@ export default {
435441
const deletedHash = forms.value[formIndex].hash
436442
437443
forms.value.splice(formIndex, 1)
444+
deletedFormHash.value = deletedHash
438445
439446
if (deletedHash === routeHash.value && route.name !== 'root') {
440-
router.push({ name: 'root' })
447+
// Navigate to root without triggering route guards
448+
router.replace({ name: 'root' })
441449
}
442450
}
443451
452+
// Reset deletedFormHash when navigating away from the deleted form
453+
watch(
454+
() => route.name,
455+
(newRouteName) => {
456+
if (newRouteName === 'root') {
457+
deletedFormHash.value = null
458+
}
459+
},
460+
)
461+
444462
const onLastUpdatedByEventBus = (id) => {
445463
const formIndex = forms.value.findIndex((form) => form.id === id)
446464
if (formIndex !== -1) {

0 commit comments

Comments
 (0)