Scope knowledge and image libraries by brand
This commit is contained in:
@@ -18,11 +18,14 @@ import { imagesApi } from '@/lib/api'
|
||||
import { formatBytes, formatDateTime, formatPercentage } from '@/lib/display'
|
||||
import { formatError } from '@/lib/errors'
|
||||
import { IMAGE_UPLOAD_ACCEPT, useImageUploadProgress } from '@/lib/image-webp'
|
||||
import { useCompanyStore } from '@/stores/company'
|
||||
import type { ImageAssetItem, ImageFolder } from '@geo/shared-types'
|
||||
|
||||
const { t } = useI18n()
|
||||
const queryClient = useQueryClient()
|
||||
const imageUploadProgress = useImageUploadProgress()
|
||||
const companyStore = useCompanyStore()
|
||||
const currentBrandId = computed(() => companyStore.currentBrandId)
|
||||
|
||||
// State
|
||||
const selectedFolderId = ref<number | null>(null) // null means "All" or is handled by folders query
|
||||
@@ -51,7 +54,8 @@ const fileInput = ref<HTMLInputElement | null>(null)
|
||||
|
||||
// Queries
|
||||
const foldersQuery = useQuery({
|
||||
queryKey: ['images', 'folders'],
|
||||
queryKey: computed(() => ['images', 'folders', currentBrandId.value]),
|
||||
enabled: computed(() => Boolean(currentBrandId.value)),
|
||||
queryFn: () => imagesApi.listFolders(),
|
||||
})
|
||||
|
||||
@@ -59,6 +63,7 @@ const imagesQuery = useQuery({
|
||||
queryKey: computed(() => [
|
||||
'images',
|
||||
'list',
|
||||
currentBrandId.value,
|
||||
{
|
||||
folder_id: debouncedSearch.value ? undefined : selectedFolderId.value,
|
||||
q: debouncedSearch.value,
|
||||
@@ -66,6 +71,7 @@ const imagesQuery = useQuery({
|
||||
page_size: pageSize.value,
|
||||
},
|
||||
]),
|
||||
enabled: computed(() => Boolean(currentBrandId.value)),
|
||||
queryFn: () =>
|
||||
imagesApi.list({
|
||||
folder_id: debouncedSearch.value ? undefined : (selectedFolderId.value ?? undefined),
|
||||
@@ -76,7 +82,8 @@ const imagesQuery = useQuery({
|
||||
})
|
||||
|
||||
const allImagesCountQuery = useQuery({
|
||||
queryKey: ['images', 'list', 'all-count'],
|
||||
queryKey: computed(() => ['images', 'list', 'all-count', currentBrandId.value]),
|
||||
enabled: computed(() => Boolean(currentBrandId.value)),
|
||||
queryFn: () =>
|
||||
imagesApi.list({
|
||||
page: 1,
|
||||
@@ -181,6 +188,17 @@ watch(searchKeyword, () => {
|
||||
}, 300)
|
||||
})
|
||||
|
||||
watch(currentBrandId, () => {
|
||||
selectedFolderId.value = null
|
||||
movingImage.value = null
|
||||
previewingImage.value = null
|
||||
renamingImage.value = null
|
||||
moveModalOpen.value = false
|
||||
previewModalOpen.value = false
|
||||
renameImageModalOpen.value = false
|
||||
currentPage.value = 1
|
||||
})
|
||||
|
||||
function handleFolderSelect(id: number | null) {
|
||||
if (debouncedSearch.value) return
|
||||
selectedFolderId.value = id
|
||||
|
||||
Reference in New Issue
Block a user