@uppy/provider-views
Version:
View library for Uppy remote provider plugins.
48 lines (43 loc) • 1.4 kB
text/typescript
import type { UnknownPlugin } from '@uppy/core'
import type {
CompanionClientProvider,
CompanionClientSearchProvider,
} from '@uppy/utils/lib/CompanionClientProvider'
import type { CompanionFile } from '@uppy/utils/lib/CompanionFile'
import type { Meta, Body, TagFile } from '@uppy/utils/lib/UppyFile'
import { getSafeFileId } from '@uppy/utils/lib/generateFileID'
import getTagFile from './getTagFile.js'
const addFiles = <M extends Meta, B extends Body>(
companionFiles: CompanionFile[],
plugin: UnknownPlugin<M, B>,
provider: CompanionClientProvider | CompanionClientSearchProvider,
): void => {
const tagFiles: TagFile<M>[] = companionFiles.map((f) =>
getTagFile<M, B>(f, plugin, provider),
)
const filesToAdd: TagFile<M>[] = []
const filesAlreadyAdded: TagFile<M>[] = []
tagFiles.forEach((tagFile) => {
if (
plugin.uppy.checkIfFileAlreadyExists(
getSafeFileId(tagFile, plugin.uppy.getID()),
)
) {
filesAlreadyAdded.push(tagFile)
} else {
filesToAdd.push(tagFile)
}
})
if (filesToAdd.length > 0) {
plugin.uppy.info(
plugin.uppy.i18n('addedNumFiles', { numFiles: filesToAdd.length }),
)
}
if (filesAlreadyAdded.length > 0) {
plugin.uppy.info(
`Not adding ${filesAlreadyAdded.length} files because they already exist`,
)
}
plugin.uppy.addFiles(filesToAdd)
}
export default addFiles