Browse Source

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

pull/4898/head
Daniel Spaude 2 years 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'] ClaritySuccessLine: typeof import('~icons/clarity/success-line')['default']
EvaEmailOutline: typeof import('~icons/eva/email-outline')['default'] EvaEmailOutline: typeof import('~icons/eva/email-outline')['default']
IcBaselineMoreVert: typeof import('~icons/ic/baseline-more-vert')['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'] IcOutlineInsertDriveFile: typeof import('~icons/ic/outline-insert-drive-file')['default']
IcRoundEdit: typeof import('~icons/ic/round-edit')['default'] IcRoundEdit: typeof import('~icons/ic/round-edit')['default']
IcRoundKeyboardArrowDown: typeof import('~icons/ic/round-keyboard-arrow-down')['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'] MdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default'] MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default']
MdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] MdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
MdiChevronUp: typeof import('~icons/mdi/chevron-up')['default']
MdiClose: typeof import('~icons/mdi/close')['default'] MdiClose: typeof import('~icons/mdi/close')['default']
MdiCloseBox: typeof import('~icons/mdi/close-box')['default'] MdiCloseBox: typeof import('~icons/mdi/close-box')['default']
MdiCloseCircle: typeof import('~icons/mdi/close-circle')['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'] MdiCog: typeof import('~icons/mdi/cog')['default']
MdiCommentTextOutline: typeof import('~icons/mdi/comment-text-outline')['default'] MdiCommentTextOutline: typeof import('~icons/mdi/comment-text-outline')['default']
MdiContentCopy: typeof import('~icons/mdi/content-copy')['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'] MdiContentSave: typeof import('~icons/mdi/content-save')['default']
MdiContentSaveEdit: typeof import('~icons/mdi/content-save-edit')['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'] MdiCurrencyUsd: typeof import('~icons/mdi/currency-usd')['default']
MdiDatabaseAlert: typeof import('~icons/mdi/database-alert')['default'] MdiDatabaseAlert: typeof import('~icons/mdi/database-alert')['default']
MdiDatabaseLockOutline: typeof import('~icons/mdi/database-lock-outline')['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'] MdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
MdiDiscord: typeof import('~icons/mdi/discord')['default'] MdiDiscord: typeof import('~icons/mdi/discord')['default']
MdiDotsHorizontal: typeof import('~icons/mdi/dots-horizontal')['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'] MdiDotsVertical: typeof import('~icons/mdi/dots-vertical')['default']
MdiDownload: typeof import('~icons/mdi/download')['default'] MdiDownload: typeof import('~icons/mdi/download')['default']
MdiDownloadOutline: typeof import('~icons/mdi/download-outline')['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'] MdiFileUploadOutline: typeof import('~icons/mdi/file-upload-outline')['default']
MdiFilterOutline: typeof import('~icons/mdi/filter-outline')['default'] MdiFilterOutline: typeof import('~icons/mdi/filter-outline')['default']
MdiFlag: typeof import('~icons/mdi/flag')['default'] MdiFlag: typeof import('~icons/mdi/flag')['default']
MdiFlashOutline: typeof import('~icons/mdi/flash-outline')['default']
MdiFolder: typeof import('~icons/mdi/folder')['default'] MdiFolder: typeof import('~icons/mdi/folder')['default']
MdiFunction: typeof import('~icons/mdi/function')['default'] MdiFunction: typeof import('~icons/mdi/function')['default']
MdiGestureDoubleTap: typeof import('~icons/mdi/gesture-double-tap')['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, useRouter,
useSidebar, useSidebar,
useUIPermission, useUIPermission,
useViewsStoreOrThrow, useViews,
watch, watch,
} from '#imports' } from '#imports'
@ -23,7 +23,7 @@ const activeView = inject(ActiveViewInj, ref())
const { activeTab } = useTabs() const { activeTab } = useTabs()
const { views, loadViews, isLoading } = useViewsStoreOrThrow() const { views, loadViews, isLoading } = useViews(meta)
const { lastOpenedViewMap } = useProject() const { lastOpenedViewMap } = useProject()

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

@ -11,7 +11,7 @@ import {
useRoute, useRoute,
useRouter, useRouter,
useUIPermission, useUIPermission,
useViewsStoreOrThrow, useViews,
watch, watch,
} from '#imports' } from '#imports'
@ -23,7 +23,7 @@ const activeView = inject(ActiveViewInj, ref())
const { activeTab } = useTabs() const { activeTab } = useTabs()
const { views, loadViews, isLoading } = useViewsStoreOrThrow() const { views, loadViews, isLoading } = useViews(meta)
const { lastOpenedViewMap } = useProject() 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 type { MaybeRef } from '@vueuse/core'
import { ref, unref, useNuxtApp, watch } from '#imports' 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 views = ref<ViewType[]>([])
const isLoading = ref(false) const isLoading = ref(false)
@ -25,14 +25,7 @@ const [useProvideViewsStore, useViewsStore] = useInjectionState((meta: MaybeRef<
watch(() => unref(meta), loadViews, { immediate: true }) watch(() => unref(meta), loadViews, { immediate: true })
return { views, isLoading, loadViews } return { views, isLoading, loadViews }
}, 'views-store') // return createSharedComposable({ views, isLoading, loadViews })
export { useProvideViewsStore }
export function useViewsStoreOrThrow() {
const viewsStore = useViewsStore()
if (viewsStore == null) throw new Error('Please call `useProvideViewsStore` on the appropriate parent component')
return viewsStore
} }
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(ActiveViewInj, activeView)
provide(MetaInj, meta) provide(MetaInj, meta)
useProvideViewsStore(meta) useViews(meta)
const showViewsMobileSidebar = ref(false) const showViewsMobileSidebar = ref(false)

Loading…
Cancel
Save