HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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,
    }

}