mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-16 05:13:06 +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
|
||||
})
|
||||
|
||||
builder.mixin(drive.class.Folder, core.class.Class, view.mixin.ObjectTitle, {
|
||||
titleProvider: drive.function.FolderTitleProvider
|
||||
})
|
||||
|
||||
// Search
|
||||
|
||||
builder.createDoc(
|
||||
@ -608,6 +612,10 @@ function defineFile (builder: Builder): void {
|
||||
encode: drive.function.FileLinkProvider
|
||||
})
|
||||
|
||||
builder.mixin(drive.class.File, core.class.Class, view.mixin.ObjectTitle, {
|
||||
titleProvider: drive.function.FileTitleProvider
|
||||
})
|
||||
|
||||
// Activity
|
||||
|
||||
builder.mixin(drive.class.File, core.class.Class, activity.mixin.ActivityDoc, {})
|
||||
|
@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import type { Doc, Ref } from '@hcengineering/core'
|
||||
import type { Client, Doc, Ref } from '@hcengineering/core'
|
||||
import {} from '@hcengineering/core'
|
||||
import { driveId } from '@hcengineering/drive'
|
||||
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>>,
|
||||
CanRenameFile: '' 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: {
|
||||
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)
|
||||
}
|
||||
|
||||
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> => ({
|
||||
component: {
|
||||
CreateDrive,
|
||||
@ -212,7 +224,9 @@ export default async (): Promise<Resources> => ({
|
||||
FolderLinkProvider,
|
||||
CanRenameFile,
|
||||
CanRenameFolder,
|
||||
CanDeleteFileVersion
|
||||
CanDeleteFileVersion,
|
||||
FileTitleProvider,
|
||||
FolderTitleProvider
|
||||
},
|
||||
resolver: {
|
||||
Location: resolveLocation
|
||||
|
Loading…
Reference in New Issue
Block a user