initial: bootstrap from BukidBountyApp base
This commit is contained in:
50
resources/js/utils/navigate.js
Normal file
50
resources/js/utils/navigate.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import axios from 'axios';
|
||||
import { getCurrentInstance } from 'vue'
|
||||
|
||||
const navigate = async ({ page }) => {
|
||||
try {
|
||||
// Show loading spinner if you want
|
||||
loading.value = true;
|
||||
|
||||
// Request page data from server
|
||||
const response = await axios.get(`/${page}`);
|
||||
const data = response.data;
|
||||
|
||||
// Expected server response:
|
||||
// { component: 'Home', props: {...} }
|
||||
currentPage.value = data.component;
|
||||
currentProps.value = data.props || {};
|
||||
} catch (error) {
|
||||
console.error('Navigation error', error);
|
||||
currentPage.value = 'NotFound';
|
||||
currentProps.value = {};
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Reloads the current SPA page
|
||||
* without changing history.
|
||||
*
|
||||
* Vue replacement for legacy ReloadPage()
|
||||
*/
|
||||
export function reloadPage() {
|
||||
const instance = getCurrentInstance()
|
||||
|
||||
const navigate =
|
||||
instance?.proxy?.$navigate ||
|
||||
window.$navigate
|
||||
|
||||
if (!navigate) {
|
||||
console.warn('No SPA navigator available')
|
||||
return
|
||||
}
|
||||
|
||||
navigate({
|
||||
page: instance.proxy.currentPage,
|
||||
props: instance.proxy.currentProps,
|
||||
nohistory: true,
|
||||
redundantpage: true
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user