phongdt:page video

This commit is contained in:
Duong Truong Phong
2024-06-03 12:27:22 +07:00
parent 94ea03f189
commit 0bfbfa7711
19 changed files with 538 additions and 511 deletions
+55
View File
@@ -0,0 +1,55 @@
import { LocationQuery } from "vue-router";
import { defineStore, acceptHMRUpdate } from "pinia";
export const useTopicStore = defineStore('topic', () => {
const pagination = ref({
page: utils.toNumber(useRuntimeConfig().public.pagingDefault),
limit: utils.toNumber(useRuntimeConfig().public.pagingLimit),
total: 0,
});
function setStateFromRoute(query: LocationQuery) {
if (query.page) pagination.value.page = utils.toNumber(query.page)
else pagination.value.page = utils.toNumber(useRuntimeConfig().public.pagingDefault);
if (query.limit) pagination.value.limit = utils.toNumber(query.limit)
else pagination.value.limit = utils.toNumber(useRuntimeConfig().public.pagingLimit);
}
async function fetchById(topicId: string) {
const { data, error } = await useFetch<any>(`/api/services/topic`, {
query: {
topicId: topicId
}
})
if(error.value) {
return null
}
return data.value
}
async function fetchByCategoryId(categoryId: number, limit?: number) {
if(limit) {
pagination.value.limit = limit
}
const { data, error } = await useFetch<any>(`/api/services/topics-paging`, {
query: {
categoryId: categoryId,
limit: pagination.value.limit,
page: pagination.value.page,
sort: 'createdon desc'
}
})
if(error.value) {
return null
}
return data.value.items
}
return { pagination, setStateFromRoute, fetchById, fetchByCategoryId }
})
if (import.meta.hot) {
import.meta.hot.accept(acceptHMRUpdate(useTopicStore, import.meta.hot))
}