mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-23 08:48:01 +00:00
QFix: (drive) add title providers for files and folders (#8224)
Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>
This commit is contained in:
parent
448d6239ce
commit
783d794d56
@ -447,6 +447,10 @@ function defineFolder (builder: Builder): void {
|
|||||||
encode: drive.function.FolderLinkProvider
|
encode: drive.function.FolderLinkProvider
|
||||||
})
|
})
|
||||||
|
|
||||||
|
builder.mixin(drive.class.Folder, core.class.Class, view.mixin.ObjectTitle, {
|
||||||
|
titleProvider: drive.function.FolderTitleProvider
|
||||||
|
})
|
||||||
|
|
||||||
// Search
|
// Search
|
||||||
|
|
||||||
builder.createDoc(
|
builder.createDoc(
|
||||||
@ -608,6 +612,10 @@ function defineFile (builder: Builder): void {
|
|||||||
encode: drive.function.FileLinkProvider
|
encode: drive.function.FileLinkProvider
|
||||||
})
|
})
|
||||||
|
|
||||||
|
builder.mixin(drive.class.File, core.class.Class, view.mixin.ObjectTitle, {
|
||||||
|
titleProvider: drive.function.FileTitleProvider
|
||||||
|
})
|
||||||
|
|
||||||
// Activity
|
// Activity
|
||||||
|
|
||||||
builder.mixin(drive.class.File, core.class.Class, activity.mixin.ActivityDoc, {})
|
builder.mixin(drive.class.File, core.class.Class, activity.mixin.ActivityDoc, {})
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
//
|
//
|
||||||
|
|
||||||
import type { Doc, Ref } from '@hcengineering/core'
|
import type { Client, Doc, Ref } from '@hcengineering/core'
|
||||||
import {} from '@hcengineering/core'
|
import {} from '@hcengineering/core'
|
||||||
import { driveId } from '@hcengineering/drive'
|
import { driveId } from '@hcengineering/drive'
|
||||||
import drive from '@hcengineering/drive-resources/src/plugin'
|
import drive from '@hcengineering/drive-resources/src/plugin'
|
||||||
@ -55,7 +55,9 @@ export default mergeIds(driveId, drive, {
|
|||||||
FileLinkProvider: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<Location>>,
|
FileLinkProvider: '' as Resource<(doc: Doc, props: Record<string, any>) => Promise<Location>>,
|
||||||
CanRenameFile: '' as Resource<ViewActionAvailabilityFunction>,
|
CanRenameFile: '' as Resource<ViewActionAvailabilityFunction>,
|
||||||
CanRenameFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
CanRenameFolder: '' as Resource<ViewActionAvailabilityFunction>,
|
||||||
CanDeleteFileVersion: '' as Resource<ViewActionAvailabilityFunction>
|
CanDeleteFileVersion: '' as Resource<ViewActionAvailabilityFunction>,
|
||||||
|
FileTitleProvider: '' as Resource<(client: Client, ref: Ref<Doc>, doc?: Doc) => Promise<string>>,
|
||||||
|
FolderTitleProvider: '' as Resource<(client: Client, ref: Ref<Doc>, doc?: Doc) => Promise<string>>
|
||||||
},
|
},
|
||||||
completion: {
|
completion: {
|
||||||
FileQuery: '' as Resource<ObjectSearchFactory>,
|
FileQuery: '' as Resource<ObjectSearchFactory>,
|
||||||
|
@ -171,6 +171,18 @@ export async function CanDeleteFileVersion (
|
|||||||
return docs.every((p) => p.$lookup?.attachedTo !== undefined && p.$lookup?.attachedTo.file !== p._id)
|
return docs.every((p) => p.$lookup?.attachedTo !== undefined && p.$lookup?.attachedTo.file !== p._id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function FileTitleProvider (client: Client, ref: Ref<File>, doc?: File): Promise<string> {
|
||||||
|
const object = doc ?? (await client.findOne(drive.class.File, { _id: ref }))
|
||||||
|
if (object === undefined) throw new Error(`File not found, _id: ${ref}`)
|
||||||
|
return object.title
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function FolderTitleProvider (client: Client, ref: Ref<Folder>, doc?: Folder): Promise<string> {
|
||||||
|
const object = doc ?? (await client.findOne(drive.class.Folder, { _id: ref }))
|
||||||
|
if (object === undefined) throw new Error(`Folder not found, _id: ${ref}`)
|
||||||
|
return object.title
|
||||||
|
}
|
||||||
|
|
||||||
export default async (): Promise<Resources> => ({
|
export default async (): Promise<Resources> => ({
|
||||||
component: {
|
component: {
|
||||||
CreateDrive,
|
CreateDrive,
|
||||||
@ -212,7 +224,9 @@ export default async (): Promise<Resources> => ({
|
|||||||
FolderLinkProvider,
|
FolderLinkProvider,
|
||||||
CanRenameFile,
|
CanRenameFile,
|
||||||
CanRenameFolder,
|
CanRenameFolder,
|
||||||
CanDeleteFileVersion
|
CanDeleteFileVersion,
|
||||||
|
FileTitleProvider,
|
||||||
|
FolderTitleProvider
|
||||||
},
|
},
|
||||||
resolver: {
|
resolver: {
|
||||||
Location: resolveLocation
|
Location: resolveLocation
|
||||||
|
Loading…
Reference in New Issue
Block a user