Skip to content

Commit 11a4a20

Browse files
authored
perf: folder views download only images and get best fit from image sizes (#12514)
1 parent bc43982 commit 11a4a20

File tree

6 files changed

+19
-11
lines changed

6 files changed

+19
-11
lines changed

packages/payload/src/exports/shared.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,9 @@ export { formatFolderOrDocumentItem } from '../folders/utils/formatFolderOrDocum
5555
export { validOperators, validOperatorSet } from '../types/constants.js'
5656

5757
export { formatFilesize } from '../uploads/formatFilesize.js'
58-
5958
export { isImage } from '../uploads/isImage.js'
60-
export { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'
6159

60+
export { combineWhereConstraints } from '../utilities/combineWhereConstraints.js'
6261
export {
6362
deepCopyObject,
6463
deepCopyObjectComplex,
@@ -74,12 +73,14 @@ export {
7473
} from '../utilities/deepMerge.js'
7574

7675
export { extractID } from '../utilities/extractID.js'
76+
7777
export { fieldSchemaToJSON } from '../utilities/fieldSchemaToJSON.js'
7878
export { flattenAllFields } from '../utilities/flattenAllFields.js'
79-
8079
export { default as flattenTopLevelFields } from '../utilities/flattenTopLevelFields.js'
80+
8181
export { formatAdminURL } from '../utilities/formatAdminURL.js'
8282
export { formatLabels, toWords } from '../utilities/formatLabels.js'
83+
export { getBestFitFromSizes } from '../utilities/getBestFitFromSizes.js'
8384
export { getDataByPath } from '../utilities/getDataByPath.js'
8485

8586
export { getFieldPermissions } from '../utilities/getFieldPermissions.js'

packages/payload/src/folders/utils/formatFolderOrDocumentItem.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import type { CollectionSlug, Document } from '../../index.js'
22
import type { FolderOrDocument } from '../types.js'
33

4+
import { isImage } from '../../uploads/isImage.js'
5+
import { getBestFitFromSizes } from '../../utilities/getBestFitFromSizes.js'
6+
47
type Args = {
58
folderFieldName: string
69
isUpload: boolean
@@ -26,7 +29,15 @@ export function formatFolderOrDocumentItem({
2629
if (isUpload) {
2730
itemValue.filename = value.filename
2831
itemValue.mimeType = value.mimeType
29-
itemValue.url = value.url
32+
itemValue.url = isImage(value.mimeType)
33+
? getBestFitFromSizes({
34+
sizes: value.sizes,
35+
targetSizeMax: 520,
36+
targetSizeMin: 300,
37+
url: value.url,
38+
width: value.width,
39+
})
40+
: undefined
3041
}
3142

3243
return {
File renamed without changes.

packages/ui/src/elements/Table/DefaultCell/fields/File/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ import type {
66
UploadFieldClient,
77
} from 'payload'
88

9-
import { isImage } from 'payload/shared'
9+
import { getBestFitFromSizes, isImage } from 'payload/shared'
1010
import React from 'react'
1111

1212
import './index.scss'
13-
import { getBestFitFromSizes } from '../../../../../utilities/getBestFitFromSizes.js'
1413
import { Thumbnail } from '../../../../Thumbnail/index.js'
1514

1615
const baseClass = 'file'

packages/ui/src/fields/Upload/HasMany/index.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@ import { UploadCard } from '../UploadCard/index.js'
1111

1212
const baseClass = 'upload upload--has-many'
1313

14-
import { isImage } from 'payload/shared'
14+
import { getBestFitFromSizes, isImage } from 'payload/shared'
1515

1616
import './index.scss'
1717

1818
import type { ReloadDoc } from '../types.js'
1919

20-
import { getBestFitFromSizes } from '../../../utilities/getBestFitFromSizes.js'
21-
2220
type Props = {
2321
readonly className?: string
2422
readonly displayPreview?: boolean

packages/ui/src/fields/Upload/HasOne/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22

33
import type { JsonObject } from 'payload'
44

5-
import { isImage } from 'payload/shared'
5+
import { getBestFitFromSizes, isImage } from 'payload/shared'
66
import React from 'react'
77

88
import type { ReloadDoc } from '../types.js'
99

10-
import { getBestFitFromSizes } from '../../../utilities/getBestFitFromSizes.js'
1110
import './index.scss'
1211
import { RelationshipContent } from '../RelationshipContent/index.js'
1312
import { UploadCard } from '../UploadCard/index.js'

0 commit comments

Comments
 (0)