From edcf0e7c8667c52905aa1b90c6722c8bae4b0f7e Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 27 Jul 2022 16:49:19 +0200 Subject: [PATCH 01/14] Move Resource interface to web-client --- .../components/FilesList/ContextActions.vue | 2 +- .../components/FilesList/ResourceTable.vue | 3 +- .../src/components/Search/List.vue | 2 +- .../components/Shares/SharedWithMeSection.vue | 2 +- .../web-app-files/src/components/TrashBin.vue | 2 +- .../useResourcesViewDefaults.ts | 2 +- .../composables/upload/useUploadHelpers.ts | 3 +- packages/web-app-files/src/fileSideBars.ts | 3 +- .../src/helpers/resource/copyMove.ts | 3 +- .../src/helpers/resource/resource.ts | 55 +------------------ .../src/helpers/resource/sameResource.ts | 2 +- .../web-app-files/src/helpers/resources.ts | 9 +-- .../web-app-files/src/helpers/share/share.ts | 2 +- .../web-app-files/src/helpers/user/index.ts | 1 - .../web-app-files/src/views/Favorites.vue | 2 +- packages/web-app-files/src/views/Personal.vue | 3 +- .../web-app-files/src/views/PublicFiles.vue | 3 +- .../src/views/shares/SharedResource.vue | 3 +- .../src/views/shares/SharedViaLink.vue | 2 +- .../src/views/shares/SharedWithMe.vue | 2 +- .../src/views/shares/SharedWithOthers.vue | 2 +- .../unit/composables/sort/useSort.spec.ts | 2 +- .../unit/helpers/resource/resource.spec.ts | 4 +- packages/web-client/src/helpers/index.ts | 2 + .../web-client/src/helpers/resource/index.ts | 1 + .../web-client/src/helpers/resource/types.ts | 53 ++++++++++++++++++ packages/web-client/src/helpers/user/index.ts | 1 + .../src/helpers/user/types.ts | 0 packages/web-client/src/index.ts | 4 ++ .../appDefaults/useAppFileHandling.ts | 2 +- .../appDefaults/useAppFolderHandling.ts | 2 +- 31 files changed, 92 insertions(+), 87 deletions(-) create mode 100644 packages/web-client/src/helpers/index.ts create mode 100644 packages/web-client/src/helpers/resource/index.ts create mode 100644 packages/web-client/src/helpers/resource/types.ts create mode 100644 packages/web-client/src/helpers/user/index.ts rename packages/{web-app-files => web-client}/src/helpers/user/types.ts (100%) diff --git a/packages/web-app-files/src/components/FilesList/ContextActions.vue b/packages/web-app-files/src/components/FilesList/ContextActions.vue index a072c70847d..eb9806a085d 100644 --- a/packages/web-app-files/src/components/FilesList/ContextActions.vue +++ b/packages/web-app-files/src/components/FilesList/ContextActions.vue @@ -26,7 +26,7 @@ import SetSpaceImage from '../../mixins/spaces/actions/setImage' import SetSpaceReadme from '../../mixins/spaces/actions/setReadme' import SpaceNavigate from '../../mixins/spaces/actions/navigate' import { PropType } from '@vue/composition-api' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' export default { name: 'ContextActions', diff --git a/packages/web-app-files/src/components/FilesList/ResourceTable.vue b/packages/web-app-files/src/components/FilesList/ResourceTable.vue index 9c6dcf1545e..11bc1ffd07b 100644 --- a/packages/web-app-files/src/components/FilesList/ResourceTable.vue +++ b/packages/web-app-files/src/components/FilesList/ResourceTable.vue @@ -185,7 +185,8 @@ import { } from 'web-pkg/src/composables' import Rename from '../../mixins/actions/rename' import { defineComponent, PropType } from '@vue/composition-api' -import { extractDomSelector, Resource } from '../../helpers/resource' +import { extractDomSelector } from '../../helpers/resource' +import { Resource } from 'web-client' import { ShareTypes } from '../../helpers/share' import { createLocationSpaces } from '../../router' diff --git a/packages/web-app-files/src/components/Search/List.vue b/packages/web-app-files/src/components/Search/List.vue index 8978691361d..3807536222c 100644 --- a/packages/web-app-files/src/components/Search/List.vue +++ b/packages/web-app-files/src/components/Search/List.vue @@ -63,7 +63,7 @@ import MixinFileActions from '../../mixins/fileActions' import MixinFilesListFilter from '../../mixins/filesListFilter' import MixinFilesListScrolling from '../../mixins/filesListScrolling' import { searchLimit } from '../../search/sdk/list' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' import { useStore } from 'web-pkg/src/composables' const visibilityObserver = new VisibilityObserver() diff --git a/packages/web-app-files/src/components/Shares/SharedWithMeSection.vue b/packages/web-app-files/src/components/Shares/SharedWithMeSection.vue index e54a86f52aa..24d574e3b86 100644 --- a/packages/web-app-files/src/components/Shares/SharedWithMeSection.vue +++ b/packages/web-app-files/src/components/Shares/SharedWithMeSection.vue @@ -98,7 +98,7 @@ import MixinDeclineShare from '../../mixins/actions/declineShare' import MixinFilesListFilter from '../../mixins/filesListFilter' import MixinMountSideBar from '../../mixins/sidebar/mountSideBar' import { useResourcesViewDefaults } from '../../composables' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' import { useCapabilityShareJailEnabled, useStore } from 'web-pkg/src/composables' import { createLocationSpaces } from '../../router' import ListInfo from '../../components/FilesList/ListInfo.vue' diff --git a/packages/web-app-files/src/components/TrashBin.vue b/packages/web-app-files/src/components/TrashBin.vue index ad50be85a89..da116df9e90 100644 --- a/packages/web-app-files/src/components/TrashBin.vue +++ b/packages/web-app-files/src/components/TrashBin.vue @@ -64,7 +64,7 @@ import ContextActions from './FilesList/ContextActions.vue' import { useResourcesViewDefaults } from '../composables' import { bus } from 'web-pkg/src/instance' import { defineComponent } from '@vue/composition-api' -import { Resource } from '../helpers/resource' +import { Resource } from 'web-client' export default defineComponent({ name: 'TrashBin', diff --git a/packages/web-app-files/src/composables/resourcesViewDefaults/useResourcesViewDefaults.ts b/packages/web-app-files/src/composables/resourcesViewDefaults/useResourcesViewDefaults.ts index 85485b48dd9..d681c769d11 100644 --- a/packages/web-app-files/src/composables/resourcesViewDefaults/useResourcesViewDefaults.ts +++ b/packages/web-app-files/src/composables/resourcesViewDefaults/useResourcesViewDefaults.ts @@ -14,7 +14,7 @@ import { useSort, SortDir } from '../sort/' import { useMutationSubscription, useRouteQuery, useStore } from 'web-pkg/src/composables' import { determineSortFields } from '../../helpers/ui/resourceTable' import { Task } from 'vue-concurrency' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' interface ResourcesViewDefaultsOptions { loadResourcesTask?: Task diff --git a/packages/web-app-files/src/composables/upload/useUploadHelpers.ts b/packages/web-app-files/src/composables/upload/useUploadHelpers.ts index 84b0d4f99a1..862673ba230 100644 --- a/packages/web-app-files/src/composables/upload/useUploadHelpers.ts +++ b/packages/web-app-files/src/composables/upload/useUploadHelpers.ts @@ -1,7 +1,7 @@ import { Route } from 'vue-router' import { UppyResource } from 'web-runtime/src/composables/upload' import { buildWebDavFilesPath, buildWebDavSpacesPath } from '../../helpers/resources' -import { User } from '../../helpers/user' +import { User, Graph } from 'web-client' import { useCapabilityShareJailEnabled, useClientService, @@ -15,7 +15,6 @@ import { SHARE_JAIL_ID } from '../../services/folder' import * as uuid from 'uuid' import path from 'path' import { useGraphClient } from 'web-client/src/composables' -import { Graph } from 'web-client' interface UploadHelpersResult { inputFilesToUppyFiles(inputFileOptions): UppyResource[] diff --git a/packages/web-app-files/src/fileSideBars.ts b/packages/web-app-files/src/fileSideBars.ts index d64cad03c02..09c1fcef4e9 100644 --- a/packages/web-app-files/src/fileSideBars.ts +++ b/packages/web-app-files/src/fileSideBars.ts @@ -10,8 +10,7 @@ import { isLocationSpacesActive, isLocationTrashActive, isLocationPublicActive } import { spaceRoleEditor, spaceRoleManager } from './helpers/share' import { Panel } from '../../web-pkg/src/components/sidebar' -import { Resource } from './helpers/resource' -import { User } from './helpers/user' +import { Resource, User } from 'web-client' import Router from 'vue-router' function $gettext(msg: string): string { diff --git a/packages/web-app-files/src/helpers/resource/copyMove.ts b/packages/web-app-files/src/helpers/resource/copyMove.ts index be0669e879b..f36c7142fbe 100644 --- a/packages/web-app-files/src/helpers/resource/copyMove.ts +++ b/packages/web-app-files/src/helpers/resource/copyMove.ts @@ -1,4 +1,5 @@ -import { Resource, extractNameWithoutExtension } from './index' +import { Resource } from 'web-client' +import { extractNameWithoutExtension } from './index' import { join } from 'path' import { buildResource } from '../resources' import { DavProperties } from 'web-pkg/src/constants' diff --git a/packages/web-app-files/src/helpers/resource/resource.ts b/packages/web-app-files/src/helpers/resource/resource.ts index b4d35dcbc57..99ab0de34d5 100644 --- a/packages/web-app-files/src/helpers/resource/resource.ts +++ b/packages/web-app-files/src/helpers/resource/resource.ts @@ -1,59 +1,6 @@ -import { User } from '../user' +import { Resource } from 'web-client' import fileExtensions from '../extensions/fileExtensions' -// TODO: find a good location for the Resource interface. Needed in other repos as well, so it needs to be deployed to npm. -// TODO: add more fields to the resource interface. Extend into different resource types: FileResource, FolderResource, ShareResource, IncomingShareResource, OutgoingShareResource, ... -export interface Resource { - id: number | string - fileId?: string - storageId?: string - name?: string - path: string - webDavPath?: string - downloadURL?: string - type?: string - status?: number - spaceRoles?: any[] - mimeType?: string - isFolder?: boolean - sdate?: string - mdate?: string - indicators?: any[] - size?: number - permissions?: number - starred?: boolean - etag?: string - sharePermissions?: number - shareTypes?: number[] - privateLink?: string - - canCreate?(): boolean - canUpload?(): boolean - canDownload?(): boolean - canShare?(): boolean - canRename?(): boolean - canBeDeleted?(): boolean - canBeRestored?(): boolean - - isReceivedShare?(): boolean - isMounted?(): boolean - - getDomSelector?(): string - - resourceOwner?: User - owner?: User[] - ownerDisplayName?: string - ownerId?: string - sharedWith?: string - shareOwner?: string - shareOwnerDisplayname?: string - - extension?: string - share?: any - - ddate?: string -} - export const extractStorageId = (id?: string): string => { if (!id || typeof id !== 'string') { return '' diff --git a/packages/web-app-files/src/helpers/resource/sameResource.ts b/packages/web-app-files/src/helpers/resource/sameResource.ts index 60b09cebeb1..ee5f80a8785 100644 --- a/packages/web-app-files/src/helpers/resource/sameResource.ts +++ b/packages/web-app-files/src/helpers/resource/sameResource.ts @@ -1,4 +1,4 @@ -import { Resource } from './resource' +import { Resource } from 'web-client' export const isSameResource = (r1: Resource, r2: Resource): boolean => { if (!r1 || !r2) return false diff --git a/packages/web-app-files/src/helpers/resources.ts b/packages/web-app-files/src/helpers/resources.ts index 0e911f118a5..5009405ba1a 100644 --- a/packages/web-app-files/src/helpers/resources.ts +++ b/packages/web-app-files/src/helpers/resources.ts @@ -15,13 +15,8 @@ import { spaceRoleManager, spaceRoleViewer } from './share' -import { - extractDomSelector, - extractExtensionFromFile, - extractStorageId, - Resource -} from './resource' -import { User } from './user' +import { extractDomSelector, extractExtensionFromFile, extractStorageId } from './resource' +import { User, Resource } from 'web-client' import { SHARE_JAIL_ID } from '../services/folder' export function renameResource(resource, newName, newPath) { diff --git a/packages/web-app-files/src/helpers/share/share.ts b/packages/web-app-files/src/helpers/share/share.ts index 2cd77ca5d83..856beb3d104 100644 --- a/packages/web-app-files/src/helpers/share/share.ts +++ b/packages/web-app-files/src/helpers/share/share.ts @@ -1,4 +1,4 @@ -import type { User } from '../user' +import type { User } from 'web-client' import type { ShareRole } from './role' import type { SharePermission } from './permission' diff --git a/packages/web-app-files/src/helpers/user/index.ts b/packages/web-app-files/src/helpers/user/index.ts index 66a386b97cf..3f5f92a465c 100644 --- a/packages/web-app-files/src/helpers/user/index.ts +++ b/packages/web-app-files/src/helpers/user/index.ts @@ -1,2 +1 @@ export * from './avatarUrl' -export * from './types' diff --git a/packages/web-app-files/src/views/Favorites.vue b/packages/web-app-files/src/views/Favorites.vue index 4936192dc92..8defb14d37e 100644 --- a/packages/web-app-files/src/views/Favorites.vue +++ b/packages/web-app-files/src/views/Favorites.vue @@ -67,7 +67,7 @@ import ContextActions from '../components/FilesList/ContextActions.vue' import { createLocationSpaces } from '../router' import { useResourcesViewDefaults } from '../composables' import { defineComponent } from '@vue/composition-api' -import { Resource } from '../helpers/resource' +import { Resource } from 'web-client' import { useStore } from 'web-pkg/src/composables' const visibilityObserver = new VisibilityObserver() diff --git a/packages/web-app-files/src/views/Personal.vue b/packages/web-app-files/src/views/Personal.vue index 151796ca4ff..49ec489bd68 100644 --- a/packages/web-app-files/src/views/Personal.vue +++ b/packages/web-app-files/src/views/Personal.vue @@ -101,7 +101,8 @@ import ContextActions from '../components/FilesList/ContextActions.vue' import { createLocationSpaces } from '../router' import { useResourcesViewDefaults } from '../composables' import { defineComponent, unref, computed } from '@vue/composition-api' -import { Resource, move } from '../helpers/resource' +import { move } from '../helpers/resource' +import { Resource } from 'web-client' import { useGraphClient } from 'web-client/src/composables' import { useCapabilityShareJailEnabled, useRouteParam } from 'web-pkg/src/composables' import KeyboardActions from '../components/FilesList/KeyboardActions.vue' diff --git a/packages/web-app-files/src/views/PublicFiles.vue b/packages/web-app-files/src/views/PublicFiles.vue index 64e655fd9a0..9cfcb234bb5 100644 --- a/packages/web-app-files/src/views/PublicFiles.vue +++ b/packages/web-app-files/src/views/PublicFiles.vue @@ -89,7 +89,8 @@ import Pagination from '../components/FilesList/Pagination.vue' import ContextActions from '../components/FilesList/ContextActions.vue' import { breadcrumbsFromPath, concatBreadcrumbs } from '../helpers/breadcrumbs' import { defineComponent } from '@vue/composition-api' -import { Resource, move } from '../helpers/resource' +import { move } from '../helpers/resource' +import { Resource } from 'web-client' import { usePublicLinkPassword, useStore } from 'web-pkg/src/composables' import KeyboardActions from '../components/FilesList/KeyboardActions.vue' diff --git a/packages/web-app-files/src/views/shares/SharedResource.vue b/packages/web-app-files/src/views/shares/SharedResource.vue index e8c3bd6ce56..401f67730b2 100644 --- a/packages/web-app-files/src/views/shares/SharedResource.vue +++ b/packages/web-app-files/src/views/shares/SharedResource.vue @@ -104,7 +104,8 @@ import { createLocationSpaces } from '../../router' import { useResourcesViewDefaults } from '../../composables' import { defineComponent, unref } from '@vue/composition-api' import { fetchResources } from '../../services/folder' -import { Resource, move } from '../../helpers/resource' +import { move } from '../../helpers/resource' +import { Resource } from 'web-client' import { breadcrumbsFromPath, concatBreadcrumbs } from '../../helpers/breadcrumbs' import { useRouteParam, useRouteQuery } from 'web-pkg/src/composables' import KeyboardActions from '../../components/FilesList/KeyboardActions.vue' diff --git a/packages/web-app-files/src/views/shares/SharedViaLink.vue b/packages/web-app-files/src/views/shares/SharedViaLink.vue index dee5f217327..d15592908d3 100644 --- a/packages/web-app-files/src/views/shares/SharedViaLink.vue +++ b/packages/web-app-files/src/views/shares/SharedViaLink.vue @@ -70,7 +70,7 @@ import ContextActions from '../../components/FilesList/ContextActions.vue' import { createLocationSpaces } from '../../router' import { useResourcesViewDefaults } from '../../composables' import { defineComponent } from '@vue/composition-api' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' import { shareQuickLinkHelp } from '../../helpers/contextualHelpers' import { useStore } from 'web-pkg/src/composables' diff --git a/packages/web-app-files/src/views/shares/SharedWithMe.vue b/packages/web-app-files/src/views/shares/SharedWithMe.vue index 4877f539919..ea2e69a5ac3 100644 --- a/packages/web-app-files/src/views/shares/SharedWithMe.vue +++ b/packages/web-app-files/src/views/shares/SharedWithMe.vue @@ -56,7 +56,7 @@ import AppBar from '../../components/AppBar/AppBar.vue' import SharedWithMeSection from '../../components/Shares/SharedWithMeSection.vue' import { ShareStatus } from '../../helpers/share' import { computed, defineComponent, unref } from '@vue/composition-api' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' export default defineComponent({ components: { diff --git a/packages/web-app-files/src/views/shares/SharedWithOthers.vue b/packages/web-app-files/src/views/shares/SharedWithOthers.vue index 235fb51382b..a53b5be997c 100644 --- a/packages/web-app-files/src/views/shares/SharedWithOthers.vue +++ b/packages/web-app-files/src/views/shares/SharedWithOthers.vue @@ -71,7 +71,7 @@ import ContextActions from '../../components/FilesList/ContextActions.vue' import { createLocationSpaces } from '../../router' import { useResourcesViewDefaults } from '../../composables' import { defineComponent } from '@vue/composition-api' -import { Resource } from '../../helpers/resource' +import { Resource } from 'web-client' import { useStore } from 'web-pkg/src/composables' const visibilityObserver = new VisibilityObserver() diff --git a/packages/web-app-files/tests/unit/composables/sort/useSort.spec.ts b/packages/web-app-files/tests/unit/composables/sort/useSort.spec.ts index 2753a3a5572..e8d257b827b 100644 --- a/packages/web-app-files/tests/unit/composables/sort/useSort.spec.ts +++ b/packages/web-app-files/tests/unit/composables/sort/useSort.spec.ts @@ -1,7 +1,7 @@ import { ref, readonly } from '@vue/composition-api' import { createWrapper } from './spec' import { SortDir, SortOptions, useSort } from '../../../../src/composables' -import { Resource } from '../../../../src/helpers/resource' +import { Resource } from 'web-client/src/helpers/resource' describe('useSort', () => { it('should be valid', () => { diff --git a/packages/web-app-files/tests/unit/helpers/resource/resource.spec.ts b/packages/web-app-files/tests/unit/helpers/resource/resource.spec.ts index 26d7fbdbd5e..29d125be9d7 100644 --- a/packages/web-app-files/tests/unit/helpers/resource/resource.spec.ts +++ b/packages/web-app-files/tests/unit/helpers/resource/resource.spec.ts @@ -1,9 +1,9 @@ import { extractDomSelector, extractExtensionFromFile, - extractNameWithoutExtension, - Resource + extractNameWithoutExtension } from '../../../../src/helpers/resource' +import { Resource } from 'web-client' const resourceWithoutExtension = { name: 'file' diff --git a/packages/web-client/src/helpers/index.ts b/packages/web-client/src/helpers/index.ts new file mode 100644 index 00000000000..1281a286d04 --- /dev/null +++ b/packages/web-client/src/helpers/index.ts @@ -0,0 +1,2 @@ +export * from './resource' +export * from './user' diff --git a/packages/web-client/src/helpers/resource/index.ts b/packages/web-client/src/helpers/resource/index.ts new file mode 100644 index 00000000000..c9f6f047dc0 --- /dev/null +++ b/packages/web-client/src/helpers/resource/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/packages/web-client/src/helpers/resource/types.ts b/packages/web-client/src/helpers/resource/types.ts new file mode 100644 index 00000000000..8445311d1e6 --- /dev/null +++ b/packages/web-client/src/helpers/resource/types.ts @@ -0,0 +1,53 @@ +import { User } from '../user' + +// TODO: add more fields to the resource interface. Extend into different resource types: FileResource, FolderResource, ShareResource, IncomingShareResource, OutgoingShareResource, ... +export interface Resource { + id: number | string + fileId?: string + storageId?: string + name?: string + path: string + webDavPath?: string + downloadURL?: string + type?: string + status?: number + spaceRoles?: any[] + mimeType?: string + isFolder?: boolean + sdate?: string + mdate?: string + indicators?: any[] + size?: number + permissions?: number + starred?: boolean + etag?: string + sharePermissions?: number + shareTypes?: number[] + privateLink?: string + + canCreate?(): boolean + canUpload?(): boolean + canDownload?(): boolean + canShare?(): boolean + canRename?(): boolean + canBeDeleted?(): boolean + canBeRestored?(): boolean + + isReceivedShare?(): boolean + isMounted?(): boolean + + getDomSelector?(): string + + resourceOwner?: User + owner?: User[] + ownerDisplayName?: string + ownerId?: string + sharedWith?: string + shareOwner?: string + shareOwnerDisplayname?: string + + extension?: string + share?: any + + ddate?: string +} diff --git a/packages/web-client/src/helpers/user/index.ts b/packages/web-client/src/helpers/user/index.ts new file mode 100644 index 00000000000..c9f6f047dc0 --- /dev/null +++ b/packages/web-client/src/helpers/user/index.ts @@ -0,0 +1 @@ +export * from './types' diff --git a/packages/web-app-files/src/helpers/user/types.ts b/packages/web-client/src/helpers/user/types.ts similarity index 100% rename from packages/web-app-files/src/helpers/user/types.ts rename to packages/web-client/src/helpers/user/types.ts diff --git a/packages/web-client/src/index.ts b/packages/web-client/src/index.ts index 79fd0535821..b3299262551 100644 --- a/packages/web-client/src/index.ts +++ b/packages/web-client/src/index.ts @@ -5,6 +5,10 @@ import { ocs, OCS } from './ocs' export { Graph } from './graph' export { OCS } from './ocs' +export * as helpers from './helpers' + +export { Resource, User } from './helpers' + interface Client { graph: Graph ocs: OCS diff --git a/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts b/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts index a96e8651ce0..efd88aee467 100644 --- a/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts +++ b/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts @@ -1,7 +1,7 @@ import { unref } from '@vue/composition-api' import qs from 'qs' -import { Resource } from 'files/src/helpers/resource' +import { Resource } from 'web-client' import { MaybeRef } from '../../utils' import { ClientService } from '../../services' import { DavProperties } from '../../constants' diff --git a/packages/web-pkg/src/composables/appDefaults/useAppFolderHandling.ts b/packages/web-pkg/src/composables/appDefaults/useAppFolderHandling.ts index 33084a39fab..fe8b433172f 100644 --- a/packages/web-pkg/src/composables/appDefaults/useAppFolderHandling.ts +++ b/packages/web-pkg/src/composables/appDefaults/useAppFolderHandling.ts @@ -7,7 +7,7 @@ import { MaybeRef } from '../../utils' import { DavProperties } from '../../constants' import { buildResource } from '../../../../web-app-files/src/helpers/resources' -import { Resource } from '../../../../web-app-files/src/helpers/resource' +import { Resource } from 'web-client' import { FileContext } from './types' import { authService } from 'web-runtime/src/services/auth' From ebdc3f61c28d5cbed28573074b631347c53d1f1f Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 27 Jul 2022 17:53:14 +0200 Subject: [PATCH 02/14] Add getFileResource helper to AppFileHandling composable --- .../composables/appDefaults/useAppFileHandling.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts b/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts index efd88aee467..8f050888663 100644 --- a/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts +++ b/packages/web-pkg/src/composables/appDefaults/useAppFileHandling.ts @@ -5,6 +5,8 @@ import { Resource } from 'web-client' import { MaybeRef } from '../../utils' import { ClientService } from '../../services' import { DavProperties } from '../../constants' +import { buildResource } from 'files/src/helpers/resources' + interface AppFileHandlingOptions { clientService: ClientService isPublicLinkContext: MaybeRef @@ -15,6 +17,7 @@ type QueryParameters = Record export interface AppFileHandlingResult { getUrlForResource(r: Resource, query?: QueryParameters): string getFileInfo(filePath: string, davProperties: DavProperties): Promise + getFileResource(filePath: string, davProperties: DavProperties): Promise getFileContents(filePath: string, options: Record): Promise putFileContents(filePath: string, content: string, options: Record): Promise } @@ -87,6 +90,14 @@ export function useAppFileHandling({ return client.files.fileInfo(filePath, davProperties) } + const getFileResource = async ( + filePath: string, + davProperties: DavProperties + ): Promise => { + const fileInfo = await getFileInfo(filePath, davProperties) + return buildResource(fileInfo) + } + const putFileContents = ( filePath: string, content: string, @@ -109,6 +120,7 @@ export function useAppFileHandling({ getFileContents, getUrlForResource, getFileInfo, + getFileResource, putFileContents } } From d9386133c9a79a9c050d27061e9af7e041588452 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 27 Jul 2022 17:53:42 +0200 Subject: [PATCH 03/14] web-app-external: use getFileResource helper --- packages/web-app-external/src/App.vue | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/web-app-external/src/App.vue b/packages/web-app-external/src/App.vue index de2486caf20..19f221356d5 100644 --- a/packages/web-app-external/src/App.vue +++ b/packages/web-app-external/src/App.vue @@ -36,8 +36,6 @@ import { mapGetters } from 'vuex' import ErrorScreen from './components/ErrorScreen.vue' import LoadingScreen from './components/LoadingScreen.vue' -import { DavProperties } from 'web-pkg/src/constants' -import { buildResource } from 'files/src/helpers/resources' import { computed, unref } from '@vue/composition-api' import { queryItemAsString, useAppDefaults, useRouteQuery } from 'web-pkg/src/composables' import { defineComponent } from '@vue/runtime-core' @@ -92,7 +90,7 @@ export default defineComponent({ this.loading = true try { const filePath = this.currentFileContext.path - const fileId = this.fileId || (await this.getFileInfoResource(filePath)).fileId + const fileId = this.fileId || (await this.getFileResource(filePath)).fileId // fetch iframe params for app and file const configUrl = this.configuration.server @@ -135,12 +133,6 @@ export default defineComponent({ this.loading = false this.loadingError = true } - }, - methods: { - async getFileInfoResource(path) { - const file = await this.getFileInfo(path, DavProperties.Default) - return buildResource(file) - } } }) From 39dda69b474b4b4b743bf22ada679dcff5e1f1c6 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 27 Jul 2022 17:54:19 +0200 Subject: [PATCH 04/14] Fix permissions type in Resource interface --- packages/web-app-files/src/helpers/resources.ts | 2 +- packages/web-client/src/helpers/resource/types.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web-app-files/src/helpers/resources.ts b/packages/web-app-files/src/helpers/resources.ts index 5009405ba1a..52d2b09e0f0 100644 --- a/packages/web-app-files/src/helpers/resources.ts +++ b/packages/web-app-files/src/helpers/resources.ts @@ -66,7 +66,7 @@ export function buildResource(resource): Resource { ? resource.fileInfo[DavProperty.ContentSize] : resource.fileInfo[DavProperty.ContentLength], indicators: [], - permissions: resource.fileInfo[DavProperty.Permissions] || '', + permissions: (resource.fileInfo[DavProperty.Permissions] as string) || '', starred: resource.fileInfo[DavProperty.IsFavorite] !== '0', etag: resource.fileInfo[DavProperty.ETag], sharePermissions: resource.fileInfo[DavProperty.SharePermissions], diff --git a/packages/web-client/src/helpers/resource/types.ts b/packages/web-client/src/helpers/resource/types.ts index 8445311d1e6..e11b4499dc6 100644 --- a/packages/web-client/src/helpers/resource/types.ts +++ b/packages/web-client/src/helpers/resource/types.ts @@ -18,7 +18,7 @@ export interface Resource { mdate?: string indicators?: any[] size?: number - permissions?: number + permissions?: string starred?: boolean etag?: string sharePermissions?: number From ec2f32642a918c9a3ada392cad41530e29f7e277 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 27 Jul 2022 17:55:23 +0200 Subject: [PATCH 05/14] web-app-pdf-viewer: make AppTopBar always visible --- packages/web-app-pdf-viewer/src/App.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-app-pdf-viewer/src/App.vue b/packages/web-app-pdf-viewer/src/App.vue index 97ae33afc4d..8668a292ff9 100644 --- a/packages/web-app-pdf-viewer/src/App.vue +++ b/packages/web-app-pdf-viewer/src/App.vue @@ -1,9 +1,9 @@ -