File: D:/HostingSpaces/SBogers10/farmfun.komma.pro/resources/js/site/services/useCart.js
import {ref} from "vue";
import FlashMessageInstance, {FlashMessageType} from "./flashMessage";
import useTranslations from "./useTranslations";
const cart = ref(null)
const maxAmount = 40
export default function useCart() {
const {trans} = useTranslations()
const cartErrors = ref([])
const showForceCartUpdate = ref(false)
const resetProps = () => {
cartErrors.value = []
showForceCartUpdate.value = false
}
const updateProduct = (productId, data) => {
resetProps()
return window.axios.post(`/api/cart/item/${productId}`, data)
.catch((error) => { defaultErrorResponse(error) })
}
const removeProduct = (productId) => {
resetProps()
return window.axios.delete(`/api/cart/item/${productId}`)
.catch((error) => { defaultErrorResponse(error) })
}
const loadCart = () => {
resetProps()
return window.axios.get(`/api/cart/index`)
.then((response) => {
cart.value = response.data
})
.catch((error) => { defaultErrorResponse(error) })
}
const updateMeta = (data) => {
resetProps()
return window.axios.post(`/api/cart/update-meta`, data)
.then((response) => {
// cart.value = response.data
})
.catch((error) => { defaultErrorResponse(error) })
}
const defaultErrorResponse = (error) => {
let responseCode = 0;
if(error.response && error.response.status) responseCode = error.response.status
switch (responseCode) {
case 417:
cartErrors.value.push((new FlashMessageInstance(
[error.response.data.message],
'Error'
)).setType(FlashMessageType.warning))
break;
case 412:
cartErrors.value.push((new FlashMessageInstance(
[error.response.data.message],
'Bevestig wijziging'
)).setType(FlashMessageType.info))
showForceCartUpdate.value = true
break;
default:
console.warn(error)
const errorFlash = (new FlashMessageInstance(
[trans('oops_something_went_wrong')],
'Error'
)).setType(FlashMessageType.error)
cartErrors.value.push(errorFlash)
break;
}
}
return {
cart,
maxAmount,
updateProduct,
removeProduct,
loadCart,
updateMeta,
cartErrors,
showForceCartUpdate,
}
}