fix: technical debts left by the Sites, Authors and SEO slices, plus backend support for the new Sites and Authors pagination
This commit is contained in:
1 parent
9f4ce426a8
commit
daf3594316
86 files changed
+4223
-1485
No files matched your search
@@ -0,0 +1,35 @@
|
||||
import { computed, ref } from 'vue'
|
||||
import { useSites, type Site } from '@/composables/useSites'
|
||||
import type { ArticleListQuery } from '@/lib/articleListQuery'
|
||||
|
||||
export function useArticleSites(shownSite: () => string) {
|
||||
const { listSites } = useSites()
|
||||
const sites = ref<Site[]>([])
|
||||
const sitesSettled = ref(false)
|
||||
|
||||
const severalSites = computed(() => sites.value.length > 1)
|
||||
const siteName = computed(
|
||||
() => sites.value.find((site) => site.key === shownSite())?.name ?? shownSite(),
|
||||
)
|
||||
|
||||
async function fetchSites() {
|
||||
try {
|
||||
sites.value = await listSites()
|
||||
} catch {
|
||||
sites.value = []
|
||||
}
|
||||
}
|
||||
|
||||
function loadSites() {
|
||||
return fetchSites().finally(() => {
|
||||
sitesSettled.value = true
|
||||
})
|
||||
}
|
||||
|
||||
function usableSite(query: ArticleListQuery): ArticleListQuery {
|
||||
const known = severalSites.value && sites.value.some((site) => site.key === query.site)
|
||||
return query.site && !known ? { ...query, site: '' } : query
|
||||
}
|
||||
|
||||
return { sites, sitesSettled, severalSites, siteName, loadSites, usableSite }
|
||||
}
|
||||
Reference in new issue
Block a user