mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-01 10:07:42 +00:00
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
import type { ComputedRef, Ref } from 'vue'
|
|
import type { GalleryType, TableType, ViewType } from 'nocodb-sdk'
|
|
|
|
export function useGalleryViewData(
|
|
_meta: Ref<TableType | undefined> | ComputedRef<TableType | undefined>,
|
|
viewMeta: Ref<ViewType | undefined> | ComputedRef<(ViewType & { id: string }) | undefined>,
|
|
where?: ComputedRef<string | undefined>,
|
|
) {
|
|
const isPublic = inject(IsPublicInj, ref(false))
|
|
|
|
const tablesStore = useTablesStore()
|
|
|
|
const { activeTable } = storeToRefs(tablesStore)
|
|
|
|
const { sharedView } = useSharedView()
|
|
|
|
const meta = computed(() => _meta.value || activeTable.value)
|
|
|
|
const viewData = computed(() => (isPublic.value ? (sharedView.value?.view as GalleryType) : viewMeta.value?.view))
|
|
|
|
const {
|
|
cachedRows,
|
|
syncCount,
|
|
clearCache,
|
|
deleteRow,
|
|
loadData,
|
|
navigateToSiblingRow,
|
|
totalRows,
|
|
fetchChunk,
|
|
chunkStates,
|
|
isFirstRow,
|
|
isLastRow,
|
|
} = useInfiniteData({
|
|
meta,
|
|
viewMeta,
|
|
callbacks: {
|
|
getWhereFilter: async () => where?.value ?? '',
|
|
},
|
|
where,
|
|
isPublic,
|
|
})
|
|
|
|
return {
|
|
cachedRows,
|
|
deleteRow,
|
|
loadData,
|
|
navigateToSiblingRow,
|
|
viewData,
|
|
totalRows,
|
|
clearCache,
|
|
chunkStates,
|
|
syncCount,
|
|
fetchChunk,
|
|
isFirstRow,
|
|
isLastRow,
|
|
}
|
|
}
|