export const usePagesStore = defineStore('pages', () => {
    const datasPage = ref({})
    const datasTypes = ref([])
    const activeType = ref('')

    const asyncGetPage = async (name: string, slug: string, language: string) => {
        if (datasPage.value.length) { return }
        try {
            let page = ''

            if (name) {
                page = await $fetch(`/api/single/${name}?lang=${language}&slug=${slug}`)
            } else {
                page = await $fetch(`/api/pages/${slug}?lang=${language}`)
            }
            if (page) {
                datasPage.value = page
            } else {
                throw createError({
                    statusCode: 404,
                    fatal: true
                })
            }
        } catch {
            throw createError({
                statusCode: 404,
                fatal: true
            })
        }
    }

    const asyncGetListingPageFromType = async (type: string, language: string) => {
        try {
            const pages = await $fetch(`/api/listing/${type}?lang=${language}`)
            if (pages) {
                return pages
            } else {
                throw createError({
                    statusCode: 404,
                    fatal: true
                })
            }
        } catch {
            throw createError({
                statusCode: 404,
                fatal: true
            })
        }
    }

    const asyncGetTypes = async (language: string) => {
        if (datasTypes.value.length) { return }
        try {
            const types = await $fetch(`/api/listing/types?lang=${language}`)
            if (types) {
                datasTypes.value = types
            } else {
                throw createError({
                    statusCode: 404,
                    fatal: true
                })
            }
        } catch {
            throw createError({
                statusCode: 404,
                fatal: true
            })
        }
    }

    return { datasPage, datasTypes, activeType, asyncGetPage, asyncGetListingPageFromType, asyncGetTypes }
})
