Files
2026-07-21 15:03:40 +07:00

70 lines
2.0 KiB
JavaScript
Vendored

const App = {
setup() {
const state = Vue.reactive({
isSubmitting: false,
});
const logout = async () => {
try {
const response = await AxiosManager.post('/Security/Logout', {
userId: StorageManager.getUserId()
});
return response;
} catch (error) {
throw error;
}
}
const handleSubmit = async () => {
try {
state.isSubmitting = true;
await new Promise(resolve => setTimeout(resolve, 300));
const response = await logout();
if (response.data.code === 200) {
StorageManager.clearStorage();
Swal.fire({
icon: 'success',
title: 'Logout Successful',
text: 'You are being redirected...',
timer: 2000,
showConfirmButton: false
});
setTimeout(() => {
window.location.href = '/';
}, 2000);
} else {
Swal.fire({
icon: 'error',
title: 'Logout Failed',
text: response.data.message ?? 'Logout Failed.',
confirmButtonText: 'Try Again'
});
}
} catch (error) {
Swal.fire({
icon: 'error',
title: 'An Error Occurred',
text: error.response?.data?.message || 'Please try again.',
confirmButtonText: 'OK'
});
} finally {
state.isSubmitting = false;
}
};
return {
state,
handleSubmit
};
}
};
Vue.createApp(App).mount('#app');