-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
@uppy/core: add instance ID to generated IDs #5080
Conversation
Diff output filesdiff --git a/packages/@uppy/core/lib/Uppy.js b/packages/@uppy/core/lib/Uppy.js
index 000d498..6dd129b 100644
--- a/packages/@uppy/core/lib/Uppy.js
+++ b/packages/@uppy/core/lib/Uppy.js
@@ -1100,7 +1100,7 @@ function _transformFile2(fileDescriptorOrFile) {
const fileType = getFileType(file);
const fileName = getFileName(fileType, file);
const fileExtension = getFileNameAndExtension(fileName).extension;
- const id = getSafeFileId(file);
+ const id = getSafeFileId(file, this.getID());
const meta = file.meta || {};
meta.name = fileName;
meta.type = fileType;
diff --git a/packages/@uppy/provider-views/lib/ProviderView/ProviderView.js b/packages/@uppy/provider-views/lib/ProviderView/ProviderView.js
index 8f626fd..1e150f0 100644
--- a/packages/@uppy/provider-views/lib/ProviderView/ProviderView.js
+++ b/packages/@uppy/provider-views/lib/ProviderView/ProviderView.js
@@ -281,7 +281,7 @@ export default class ProviderView extends View {
const onFiles = files => {
for (const newFile of files) {
const tagFile = this.getTagFile(newFile);
- const id = getSafeFileId(tagFile);
+ const id = getSafeFileId(tagFile, this.plugin.uppy.getID());
if (!this.plugin.uppy.checkIfFileAlreadyExists(id)) {
newFiles.push(withRelDirPath(newFile));
numNewFiles++;
diff --git a/packages/@uppy/utils/lib/generateFileID.js b/packages/@uppy/utils/lib/generateFileID.js
index f8b9c24..ffbdf14 100644
--- a/packages/@uppy/utils/lib/generateFileID.js
+++ b/packages/@uppy/utils/lib/generateFileID.js
@@ -9,8 +9,8 @@ function encodeFilename(name) {
return "/";
}) + suffix;
}
-export default function generateFileID(file) {
- let id = "uppy";
+export default function generateFileID(file, instanceId) {
+ let id = instanceId || "uppy";
if (typeof file.name === "string") {
id += `-${encodeFilename(file.name.toLowerCase())}`;
}
@@ -33,11 +33,11 @@ function hasFileStableId(file) {
const stableIdProviders = new Set(["box", "dropbox", "drive", "facebook", "unsplash"]);
return stableIdProviders.has(file.remote.provider);
}
-export function getSafeFileId(file) {
+export function getSafeFileId(file, instanceId) {
if (hasFileStableId(file)) return file.id;
const fileType = getFileType(file);
return generateFileID({
...file,
type: fileType,
- });
+ }, instanceId);
} |
Breaking change if someone relies on fileId being consistent in their app? Maybe a very niche possibility, but maybe enough to wait for a major just in case. |
It remains consistent in everyone's app in the case of using one Uppy instance. This is a fix for the edge case of when people use two instances in order to do a duplicate upload on the client. That's quite rare and discouraged, you generally want to handle duplicate destinations on the server, but sometimes you have to. |
| Package | Version | Package | Version | | ---------------------- | ------- | ---------------------- | ------- | | @uppy/audio | 1.1.9 | @uppy/instagram | 3.3.1 | | @uppy/aws-s3-multipart | 3.11.1 | @uppy/onedrive | 3.3.1 | | @uppy/box | 2.3.1 | @uppy/provider-views | 3.12.0 | | @uppy/companion-client | 3.8.1 | @uppy/react | 3.3.1 | | @uppy/compressor | 1.1.3 | @uppy/status-bar | 3.3.2 | | @uppy/core | 3.11.0 | @uppy/svelte | 3.1.4 | | @uppy/dashboard | 3.8.2 | @uppy/transloadit | 3.6.1 | | @uppy/drop-target | 2.1.0 | @uppy/unsplash | 3.3.1 | | @uppy/dropbox | 3.3.1 | @uppy/url | 3.6.1 | | @uppy/facebook | 3.3.1 | @uppy/utils | 5.9.0 | | @uppy/file-input | 3.1.2 | @uppy/webcam | 3.4.1 | | @uppy/form | 3.2.1 | @uppy/xhr-upload | 3.6.5 | | @uppy/google-drive | 3.5.1 | @uppy/zoom | 2.3.1 | | @uppy/image-editor | 2.4.5 | uppy | 3.25.0 | - meta: enforce use of `.js` extension in `import type` declarations (Antoine du Hamel / #5126) - @uppy/core: add instance ID to generated IDs (Merlijn Vos / #5080) - @uppy/core: reference updated i18n in Restricter (Merlijn Vos / #5118) - @uppy/xhr-upload: refactor to use `fetcher` (Merlijn Vos / #5074) - meta: docs: use StackBlitz for all examples/issue template (Merlijn Vos / #5125) - meta: Update yarn.lock (Murderlon) - @uppy/svelte: Add svelte 5 as peer dep (frederikhors / #5122) - meta: Bump docker/setup-buildx-action from 2 to 3 (dependabot[bot] / #5124) - meta: Bump actions/checkout from 3 to 4 (dependabot[bot] / #5123) - @uppy/dashboard,@uppy/provider-views: Remove JSX global type everywhere (Merlijn Vos / #5117) - @uppy/utils: improve return type of `dataURItoFile` (Antoine du Hamel / #5112) - @uppy/drop-target: change drop event type to DragEvent (Alireza Heydari / #5107) - @uppy/image-editor: fix label definitions (Antoine du Hamel / #5111) - meta: bump Prettier version (Antoine du Hamel / #5114) - @uppy/provider-views: bring back "loaded X files..." (Mikael Finstad / #5097) - @uppy/dashboard: fix type of trigger option (Merlijn Vos / #5106) - meta: fix linter (Antoine du Hamel) - @uppy/form: fix `submitOnSuccess` and `triggerUploadOnSubmit` combination (Merlijn Vos / #5058) - meta: Bump docker/build-push-action from 3 to 5 (dependabot[bot] / #5105) - meta: Bump akhileshns/heroku-deploy from 3.12.12 to 3.13.15 (dependabot[bot] / #5102) - meta: Bump docker/login-action from 2 to 3 (dependabot[bot] / #5101) - meta: Bump actions/download-artifact from 3 to 4 (dependabot[bot]) - meta: Bump actions/upload-artifact from 3 to 4 (dependabot[bot])
| Package | Version | Package | Version | | ---------------------- | ------------ | ---------------------- | ------------ | | @uppy/angular | 0.7.0-beta.4 | @uppy/instagram | 4.0.0-beta.4 | | @uppy/audio | 2.0.0-beta.4 | @uppy/onedrive | 4.0.0-beta.4 | | @uppy/aws-s3-multipart | 4.0.0-beta.4 | @uppy/provider-views | 4.0.0-beta.4 | | @uppy/box | 3.0.0-beta.4 | @uppy/react | 4.0.0-beta.4 | | @uppy/companion | 5.0.0-beta.4 | @uppy/status-bar | 4.0.0-beta.4 | | @uppy/companion-client | 4.0.0-beta.4 | @uppy/store-redux | 4.0.0-beta.2 | | @uppy/compressor | 2.0.0-beta.4 | @uppy/svelte | 4.0.0-beta.2 | | @uppy/core | 4.0.0-beta.4 | @uppy/transloadit | 4.0.0-beta.4 | | @uppy/dashboard | 4.0.0-beta.4 | @uppy/unsplash | 4.0.0-beta.4 | | @uppy/drop-target | 3.0.0-beta.4 | @uppy/url | 4.0.0-beta.4 | | @uppy/dropbox | 4.0.0-beta.4 | @uppy/utils | 6.0.0-beta.4 | | @uppy/facebook | 4.0.0-beta.4 | @uppy/webcam | 4.0.0-beta.4 | | @uppy/file-input | 4.0.0-beta.4 | @uppy/xhr-upload | 4.0.0-beta.2 | | @uppy/form | 4.0.0-beta.2 | @uppy/zoom | 3.0.0-beta.4 | | @uppy/google-drive | 4.0.0-beta.4 | uppy | 4.0.0-beta.4 | | @uppy/image-editor | 3.0.0-beta.2 | | | - meta: Upgrade Yarn to 4.x (Merlijn Vos / #4849) - @uppy/utils: fix fetcher export (Murderlon) - @uppy/xhr-upload: refactor to use `fetcher` (Merlijn Vos / #5074) - docs: use StackBlitz for all examples/issue template (Merlijn Vos / #5125) - meta: Update yarn.lock (Murderlon) - @uppy/svelte: Add svelte 5 as peer dep (frederikhors / #5122) - meta: Bump docker/setup-buildx-action from 2 to 3 (dependabot[bot] / #5124) - meta: Bump actions/checkout from 3 to 4 (dependabot[bot] / #5123) - @uppy/dashboard,@uppy/provider-views: Remove JSX global type everywhere (Merlijn Vos / #5117) - @uppy/utils: improve return type of `dataURItoFile` (Antoine du Hamel / #5112) - @uppy/drop-target: change drop event type to DragEvent (Alireza Heydari / #5107) - @uppy/image-editor: fix label definitions (Antoine du Hamel / #5111) - meta: bump Prettier version (Antoine du Hamel / #5114) - @uppy/provider-views: bring back "loaded X files..." (Mikael Finstad / #5097) - @uppy/dashboard: fix type of trigger option (Merlijn Vos / #5106) - meta: fix linter (Antoine du Hamel) - @uppy/companion: bump Node.js version support matrix (Antoine du Hamel / #5035) - @uppy/form: fix `submitOnSuccess` and `triggerUploadOnSubmit` combination (Merlijn Vos / #5058) - meta: Bump docker/build-push-action from 3 to 5 (dependabot[bot] / #5105) - meta: Bump akhileshns/heroku-deploy from 3.12.12 to 3.13.15 (dependabot[bot] / #5102) - meta: Bump docker/login-action from 2 to 3 (dependabot[bot] / #5101) - meta: Bump actions/download-artifact from 3 to 4 (dependabot[bot]) - meta: Bump actions/upload-artifact from 3 to 4 (dependabot[bot]) - @uppy/react: remove `useUppy` & reintroduce `useUppyState` (Merlijn Vos / #5059) - meta: docs: add back markdown files (Antoine du Hamel / #5064) - meta: fix custom provider example (Merlijn Vos / #5079) - @uppy/utils: add fetcher (Merlijn Vos / #5073) - meta: Fix prettier (Murderlon) - @uppy/dashboard: add missing `x-zip-compress` archive type (Younes / #5081) - meta: Bump docker/metadata-action from 4 to 5 (dependabot[bot] / #5086) - meta: Bump actions/setup-node from 3 to 4 (dependabot[bot] / #5087) - meta: Bump docker/setup-qemu-action from 2 to 3 (dependabot[bot] / #5089) - meta: bump supercharge/redis-github-action from 1.4.0 to 1.8.0 (dependabot[bot] / #5090) - meta: bump actions/cache from 3 to 4 (dependabot[bot] / #5088) - meta: add `dependabot.yml` to keep GHA up-to-date (Antoine du Hamel / #5083) - @uppy/core: Release: uppy@3.24.2 (github-actions[bot] / #5084) - @uppy/core: fix `setOptions` not re-rendereing plugin UI (Antoine du Hamel / #5082) - meta: bump vite from 5.0.12 to 5.0.13 (dependabot[bot] / #5060) - meta: bump tar from 6.1.11 to 6.2.1 (dependabot[bot] / #5068) - @uppy/companion,@uppy/file-input: Release: uppy@3.24.1 (github-actions[bot] / #5069) - @uppy/companion: upgrade redis (Mikael Finstad / #5065) - meta: fix `watch:*` scripts (Antoine du Hamel / #5046) - meta: include more packages in `compare_diff` CI (Antoine du Hamel / #5044) - @uppy/file-input: add missing export (Antoine du Hamel / #5045) - meta: Bump express from 4.18.1 to 4.19.2 in /packages/@uppy/companion (dependabot[bot] / #5036) - @uppy/companion: Bump express from 4.18.1 to 4.19.2 (dependabot[bot] / #5037) | Package | Version | Package | Version | | ---------------------- | ------- | ---------------------- | ------- | | @uppy/audio | 1.1.9 | @uppy/instagram | 3.3.1 | | @uppy/aws-s3-multipart | 3.11.1 | @uppy/onedrive | 3.3.1 | | @uppy/box | 2.3.1 | @uppy/provider-views | 3.12.0 | | @uppy/companion-client | 3.8.1 | @uppy/react | 3.3.1 | | @uppy/compressor | 1.1.3 | @uppy/status-bar | 3.3.2 | | @uppy/core | 3.11.0 | @uppy/svelte | 3.1.4 | | @uppy/dashboard | 3.8.2 | @uppy/transloadit | 3.6.1 | | @uppy/drop-target | 2.1.0 | @uppy/unsplash | 3.3.1 | | @uppy/dropbox | 3.3.1 | @uppy/url | 3.6.1 | | @uppy/facebook | 3.3.1 | @uppy/utils | 5.9.0 | | @uppy/file-input | 3.1.2 | @uppy/webcam | 3.4.1 | | @uppy/form | 3.2.1 | @uppy/xhr-upload | 3.6.5 | | @uppy/google-drive | 3.5.1 | @uppy/zoom | 2.3.1 | | @uppy/image-editor | 2.4.5 | uppy | 3.25.0 | - meta: enforce use of `.js` extension in `import type` declarations (Antoine du Hamel / #5126) - @uppy/core: add instance ID to generated IDs (Merlijn Vos / #5080) - @uppy/core: reference updated i18n in Restricter (Merlijn Vos / #5118) - @uppy/xhr-upload: refactor to use `fetcher` (Merlijn Vos / #5074) - meta: docs: use StackBlitz for all examples/issue template (Merlijn Vos / #5125) - meta: Update yarn.lock (Murderlon) - @uppy/svelte: Add svelte 5 as peer dep (frederikhors / #5122) - meta: Bump docker/setup-buildx-action from 2 to 3 (dependabot[bot] / #5124) - meta: Bump actions/checkout from 3 to 4 (dependabot[bot] / #5123) - @uppy/dashboard,@uppy/provider-views: Remove JSX global type everywhere (Merlijn Vos / #5117) - @uppy/utils: improve return type of `dataURItoFile` (Antoine du Hamel / #5112) - @uppy/drop-target: change drop event type to DragEvent (Alireza Heydari / #5107) - @uppy/image-editor: fix label definitions (Antoine du Hamel / #5111) - meta: bump Prettier version (Antoine du Hamel / #5114) - @uppy/provider-views: bring back "loaded X files..." (Mikael Finstad / #5097) - @uppy/dashboard: fix type of trigger option (Merlijn Vos / #5106) - meta: fix linter (Antoine du Hamel) - @uppy/form: fix `submitOnSuccess` and `triggerUploadOnSubmit` combination (Merlijn Vos / #5058) - meta: Bump docker/build-push-action from 3 to 5 (dependabot[bot] / #5105) - meta: Bump akhileshns/heroku-deploy from 3.12.12 to 3.13.15 (dependabot[bot] / #5102) - meta: Bump docker/login-action from 2 to 3 (dependabot[bot] / #5101) - meta: Bump actions/download-artifact from 3 to 4 (dependabot[bot]) - meta: Bump actions/upload-artifact from 3 to 4 (dependabot[bot])
* main: meta: enable prettier for markdown (#5133) @uppy/xhr-upload: do not throw when res is missing url (#5132) @uppy/companion: coerce `requestUrl` to a string (#5128) Release: uppy@3.25.0 (#5127) meta: enforce use of `.js` extension in `import type` declarations (#5126) @uppy/core: add instance ID to generated IDs (#5080) @uppy/core: reference updated i18n in Restricter (#5118)
* 4.x: meta: enable prettier for markdown (#5133) @uppy/xhr-upload: do not throw when res is missing url (#5132) Release: uppy@4.0.0-beta.4 (#5130) meta: fix release script Upgrade Yarn to 4.x (#4849) @uppy/companion: coerce `requestUrl` to a string (#5128) Release: uppy@3.25.0 (#5127) meta: enforce use of `.js` extension in `import type` declarations (#5126) @uppy/core: add instance ID to generated IDs (#5080) @uppy/core: reference updated i18n in Restricter (#5118)
| Package | Version | Package | Version | | ------------------------- | ------------ | ------------------------- | ------------ | | @uppy/audio | 2.0.0-beta.5 | @uppy/progress-bar | 4.0.0-beta.4 | | @uppy/aws-s3 | 4.0.0-beta.3 | @uppy/provider-views | 4.0.0-beta.5 | | @uppy/aws-s3-multipart | 4.0.0-beta.5 | @uppy/react | 4.0.0-beta.5 | | @uppy/box | 3.0.0-beta.5 | @uppy/redux-dev-tools | 4.0.0-beta.2 | | @uppy/companion | 5.0.0-beta.5 | @uppy/remote-sources | 2.0.0-beta.4 | | @uppy/companion-client | 4.0.0-beta.5 | @uppy/screen-capture | 4.0.0-beta.4 | | @uppy/compressor | 2.0.0-beta.5 | @uppy/status-bar | 4.0.0-beta.5 | | @uppy/core | 4.0.0-beta.5 | @uppy/store-default | 4.0.0-beta.2 | | @uppy/dashboard | 4.0.0-beta.5 | @uppy/store-redux | 4.0.0-beta.3 | | @uppy/drag-drop | 4.0.0-beta.4 | @uppy/svelte | 4.0.0-beta.3 | | @uppy/dropbox | 4.0.0-beta.5 | @uppy/thumbnail-generator | 4.0.0-beta.4 | | @uppy/facebook | 4.0.0-beta.5 | @uppy/transloadit | 4.0.0-beta.5 | | @uppy/file-input | 4.0.0-beta.5 | @uppy/tus | 4.0.0-beta.4 | | @uppy/form | 4.0.0-beta.3 | @uppy/unsplash | 4.0.0-beta.5 | | @uppy/golden-retriever | 4.0.0-beta.4 | @uppy/url | 4.0.0-beta.5 | | @uppy/google-drive | 4.0.0-beta.5 | @uppy/utils | 6.0.0-beta.5 | | @uppy/image-editor | 3.0.0-beta.3 | @uppy/vue | 2.0.0-beta.2 | | @uppy/informer | 4.0.0-beta.2 | @uppy/webcam | 4.0.0-beta.5 | | @uppy/instagram | 4.0.0-beta.5 | @uppy/xhr-upload | 4.0.0-beta.3 | | @uppy/locales | 4.0.0-beta.1 | @uppy/zoom | 3.0.0-beta.5 | | @uppy/onedrive | 4.0.0-beta.5 | uppy | 4.0.0-beta.5 | - @uppy/core: make UppyEventMap more readable (Murderlon) - @uppy/audio,@uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/remote-sources,@uppy/tus,@uppy/utils: Format (Murderlon) - @uppy/aws-s3-multipart: Format (Murderlon) - meta: enable prettier for markdown (Merlijn Vos / #5133) - @uppy/xhr-upload: do not throw when res is missing url (Merlijn Vos / #5132) - @uppy/companion: coerce `requestUrl` to a string (Antoine du Hamel / #5128) - meta: enforce use of `.js` extension in `import type` declarations (Antoine du Hamel / #5126) - @uppy/core: add instance ID to generated IDs (Merlijn Vos / #5080) - @uppy/core: reference updated i18n in Restricter (Merlijn Vos / #5118)
Fixes #5019