Browse Source

mobile optimisations - switch to createSharedComposable (vue-use) for useViews composable

pull/4898/head
Daniel Spaude 1 year ago
parent
commit
e5d7c19094
No known key found for this signature in database
GPG Key ID: 654A3D1FA4F35FFE
  1. 7
      packages/nc-gui/components.d.ts
  2. 4
      packages/nc-gui/components/smartsheet/sidebar/index.vue
  3. 4
      packages/nc-gui/components/smartsheet/sidebar/mobile.vue
  4. 15
      packages/nc-gui/composables/useViews.ts
  5. 2
      packages/nc-gui/pages/[projectType]/[projectId]/index.vue

7
packages/nc-gui/components.d.ts vendored

@ -80,7 +80,6 @@ declare module '@vue/runtime-core' {
ClaritySuccessLine: typeof import('~icons/clarity/success-line')['default']
EvaEmailOutline: typeof import('~icons/eva/email-outline')['default']
IcBaselineMoreVert: typeof import('~icons/ic/baseline-more-vert')['default']
Icon: typeof import('~icons/ic/on')['default']
IcOutlineInsertDriveFile: typeof import('~icons/ic/outline-insert-drive-file')['default']
IcRoundEdit: typeof import('~icons/ic/round-edit')['default']
IcRoundKeyboardArrowDown: typeof import('~icons/ic/round-keyboard-arrow-down')['default']
@ -140,7 +139,6 @@ declare module '@vue/runtime-core' {
MdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default']
MdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
MdiChevronUp: typeof import('~icons/mdi/chevron-up')['default']
MdiClose: typeof import('~icons/mdi/close')['default']
MdiCloseBox: typeof import('~icons/mdi/close-box')['default']
MdiCloseCircle: typeof import('~icons/mdi/close-circle')['default']
@ -151,10 +149,8 @@ declare module '@vue/runtime-core' {
MdiCog: typeof import('~icons/mdi/cog')['default']
MdiCommentTextOutline: typeof import('~icons/mdi/comment-text-outline')['default']
MdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
MdiContentCopyOutline: typeof import('~icons/mdi/content-copy-outline')['default']
MdiContentSave: typeof import('~icons/mdi/content-save')['default']
MdiContentSaveEdit: typeof import('~icons/mdi/content-save-edit')['default']
MdiCopyOutline: typeof import('~icons/mdi/copy-outline')['default']
MdiCurrencyUsd: typeof import('~icons/mdi/currency-usd')['default']
MdiDatabaseAlert: typeof import('~icons/mdi/database-alert')['default']
MdiDatabaseLockOutline: typeof import('~icons/mdi/database-lock-outline')['default']
@ -164,8 +160,6 @@ declare module '@vue/runtime-core' {
MdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
MdiDiscord: typeof import('~icons/mdi/discord')['default']
MdiDotsHorizontal: typeof import('~icons/mdi/dots-horizontal')['default']
MdiDotsHorizontalhOutline: typeof import('~icons/mdi/dots-horizontalh-outline')['default']
MdiDotsHorizontalOutline: typeof import('~icons/mdi/dots-horizontal-outline')['default']
MdiDotsVertical: typeof import('~icons/mdi/dots-vertical')['default']
MdiDownload: typeof import('~icons/mdi/download')['default']
MdiDownloadOutline: typeof import('~icons/mdi/download-outline')['default']
@ -188,7 +182,6 @@ declare module '@vue/runtime-core' {
MdiFileUploadOutline: typeof import('~icons/mdi/file-upload-outline')['default']
MdiFilterOutline: typeof import('~icons/mdi/filter-outline')['default']
MdiFlag: typeof import('~icons/mdi/flag')['default']
MdiFlashOutline: typeof import('~icons/mdi/flash-outline')['default']
MdiFolder: typeof import('~icons/mdi/folder')['default']
MdiFunction: typeof import('~icons/mdi/function')['default']
MdiGestureDoubleTap: typeof import('~icons/mdi/gesture-double-tap')['default']

4
packages/nc-gui/components/smartsheet/sidebar/index.vue

@ -13,7 +13,7 @@ import {
useRouter,
useSidebar,
useUIPermission,
useViewsStoreOrThrow,
useViews,
watch,
} from '#imports'
@ -23,7 +23,7 @@ const activeView = inject(ActiveViewInj, ref())
const { activeTab } = useTabs()
const { views, loadViews, isLoading } = useViewsStoreOrThrow()
const { views, loadViews, isLoading } = useViews(meta)
const { lastOpenedViewMap } = useProject()

4
packages/nc-gui/components/smartsheet/sidebar/mobile.vue

@ -11,7 +11,7 @@ import {
useRoute,
useRouter,
useUIPermission,
useViewsStoreOrThrow,
useViews,
watch,
} from '#imports'
@ -23,7 +23,7 @@ const activeView = inject(ActiveViewInj, ref())
const { activeTab } = useTabs()
const { views, loadViews, isLoading } = useViewsStoreOrThrow()
const { views, loadViews, isLoading } = useViews(meta)
const { lastOpenedViewMap } = useProject()

15
packages/nc-gui/composables/useViews.ts

@ -2,7 +2,7 @@ import type { TableType, ViewType } from 'nocodb-sdk'
import type { MaybeRef } from '@vueuse/core'
import { ref, unref, useNuxtApp, watch } from '#imports'
const [useProvideViewsStore, useViewsStore] = useInjectionState((meta: MaybeRef<TableType | undefined>) => {
function _useViews(meta: MaybeRef<TableType | undefined>) {
const views = ref<ViewType[]>([])
const isLoading = ref(false)
@ -25,14 +25,7 @@ const [useProvideViewsStore, useViewsStore] = useInjectionState((meta: MaybeRef<
watch(() => unref(meta), loadViews, { immediate: true })
return { views, isLoading, loadViews }
}, 'views-store')
export { useProvideViewsStore }
export function useViewsStoreOrThrow() {
const viewsStore = useViewsStore()
if (viewsStore == null) throw new Error('Please call `useProvideViewsStore` on the appropriate parent component')
return viewsStore
// return createSharedComposable({ views, isLoading, loadViews })
}
export default createSharedComposable(_useViews)

2
packages/nc-gui/pages/[projectType]/[projectId]/index.vue

@ -75,7 +75,7 @@ const meta = computed<TableType | undefined>(() => activeTab.value && metas.valu
provide(ActiveViewInj, activeView)
provide(MetaInj, meta)
useProvideViewsStore(meta)
useViews(meta)
const showViewsMobileSidebar = ref(false)

Loading…
Cancel
Save