Skip to content

Commit

Permalink
Improve visiting same url (#86)
Browse files Browse the repository at this point in the history
* No interception of visits as we can't grab the events
  • Loading branch information
pascalbaljet authored Jan 22, 2025
1 parent 8f144e6 commit f28c150
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 129 deletions.
2 changes: 1 addition & 1 deletion demo-app/resources/js/Pages/EditUser.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export default function EditUser({ user, roles, randomKey }) {
</div>

<div className="flex justify-end">
<Link href={route('users.edit', { user, navigate: 1, randomKey })}>
<Link replace href={route('users.edit', { user, navigate: 1, randomKey })}>
Edit again!
</Link>
<button
Expand Down
2 changes: 1 addition & 1 deletion demo-app/resources/js/Pages/EditUser.vue
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ function onMessage(message) {
</div>

<div class="flex justify-end">
<Link :href="route('users.edit', { user, navigate: 1, randomKey })">
<Link replace :href="route('users.edit', { user, navigate: 1, randomKey })">
Edit again!
</Link>
<button type="button" @click="close" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500">
Expand Down
64 changes: 0 additions & 64 deletions react/src/ModalRoot.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -475,70 +475,6 @@ export const ModalRoot = ({ children }) => {
let isNavigating = false
let previousModalOnBase = false

useEffect(
() =>
router.on('before', ($event) => {
if (!sameUrlPath(window.location.href, $event.detail.visit.url)) {
// Not navigating to the same base url
return true
}

if ($event.detail.visit.replace) {
// Prevent replacing again if we are already replacing
return true
}

if (context.length() !== 1) {
// Only replace the first modal
return true
}

if (!previousModalOnBase) {
// No modal on base
return true
}

const {
method,
data,
only,
except,
headers,
errorBag,
forceFormData,
queryStringArrayFormat,
async,
showProgress,
prefetch,
fresh,
reset,
preserveUrl,
} = $event.detail.visit

router.visit($event.detail.visit.url, {
replace: true,
preserveScroll: true,
preserveState: true,
method,
data,
only,
except,
headers,
errorBag,
forceFormData,
queryStringArrayFormat,
async,
showProgress,
prefetch,
fresh,
reset,
preserveUrl,
})

return false
}),
[],
)
useEffect(() => router.on('start', () => (isNavigating = true)), [])
useEffect(() => router.on('finish', () => (isNavigating = false)), [])
useEffect(
Expand Down
63 changes: 0 additions & 63 deletions vue/src/ModalRoot.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,69 +11,6 @@ const modalStack = useModalStack()
const isNavigating = ref(false)
const previousModalOnBase = ref(null)
onUnmounted(
router.on('before', ($event) => {
if (!sameUrlPath(window.location.href, $event.detail.visit.url)) {
// Not navigating to the same base url
return true
}
if ($event.detail.visit.replace) {
// Prevent replacing again if we are already replacing
return true
}
if (modalStack.stack.value.length !== 1) {
// Only replace the first modal
return true
}
if (!usePage().props?._inertiaui_modal) {
// No modal on base
return true
}
const {
method,
data,
only,
except,
headers,
errorBag,
forceFormData,
queryStringArrayFormat,
async,
showProgress,
prefetch,
fresh,
reset,
preserveUrl,
} = $event.detail.visit
router.visit($event.detail.visit.url, {
replace: true,
preserveScroll: true,
preserveState: true,
method,
data,
only,
except,
headers,
errorBag,
forceFormData,
queryStringArrayFormat,
async,
showProgress,
prefetch,
fresh,
reset,
preserveUrl,
})
return false
}),
)
onUnmounted(router.on('start', () => (isNavigating.value = true)))
onUnmounted(router.on('finish', () => (isNavigating.value = false)))
onUnmounted(
Expand Down

0 comments on commit f28c150

Please sign in to comment.