54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
import {defineStore} from 'pinia'
|
|
import {useClient} from "@/plugins/api.js";
|
|
import {useSessionStorage} from "@vueuse/core";
|
|
import {onBeforeMount, ref, watch} from "vue";
|
|
import {useRoute} from "vue-router";
|
|
|
|
export const useBrandingStore = defineStore(
|
|
'branding',
|
|
() => {
|
|
|
|
const currentBrand = ref('')
|
|
|
|
const value = useSessionStorage(
|
|
'branding',
|
|
{},
|
|
{writeDefaults: false})
|
|
|
|
const loading = ref(true)
|
|
|
|
const route = useRoute()
|
|
|
|
onBeforeMount(async () => await fetchCreatorData(route.params.creator))
|
|
|
|
watch(
|
|
() => route.params.creator,
|
|
async () => {
|
|
console.log(`creator: ${route.params.creator}`)
|
|
console.log(`currentBrand: ${currentBrand.value}`)
|
|
if (route.params.creator !== currentBrand.value) {
|
|
await fetchCreatorData(route.params.creator);
|
|
currentBrand.value = route.params.creator
|
|
}
|
|
}
|
|
)
|
|
|
|
const fetchCreatorData = async (creatorAlias) => {
|
|
try {
|
|
loading.value = true
|
|
const client = useClient()
|
|
const response = await client.get(`/api/creators/@${creatorAlias}`)
|
|
value.value = response.data
|
|
} catch (error) {
|
|
console.error(`Error fetching content: ${error}`)
|
|
} finally {
|
|
loading.value = false
|
|
}
|
|
}
|
|
|
|
return {
|
|
value,
|
|
loading
|
|
}
|
|
})
|