Skip to content

Fix maxFiles issue when added files from server - #2003

Open
zalesak wants to merge 1 commit into
enyo:mainfrom
zalesak:main
Open

Fix maxFiles issue when added files from server#2003
zalesak wants to merge 1 commit into
enyo:mainfrom
zalesak:main

Conversation

@zalesak

@zalesak zalesak commented Jun 21, 2021

Copy link
Copy Markdown

Files added by displayExistingFiles are not counted to files limit when maxFiles is set.

@tubbynl

tubbynl commented Oct 21, 2021

Copy link
Copy Markdown

oe, nice; this would probably fix #2031 :)

@nathanraposo

nathanraposo commented Mar 17, 2022

Copy link
Copy Markdown

Olá boa tarde preciso exatamente dessa correção quando será realizado o merge ?

Obrigado!

@bobooon

bobooon commented May 31, 2023

Copy link
Copy Markdown

+1 - Works as expected. In the meantime, the method can be overridden in a custom JS file:

const instance = new Dropzone(element, settings);
const { displayExistingFile } = instance;
instance.displayExistingFile = function (mockFile, imageUrl, callback, crossOrigin, param) {
  displayExistingFile.call(this, mockFile, imageUrl, callback, crossOrigin, param);
  // @see https://github.com/dropzone/dropzone/pull/2003
  mockFile.accepted = true;
  mockFile.status = Dropzone.SUCCESS;
  this.files.push(mockFile);
  this._updateMaxFilesReachedClass();
};

@supairish

Copy link
Copy Markdown

@RobPhillips Maybe dumb question here but, where does the local variable "file" come from in your custom displayExistingFile function?

@bobooon

bobooon commented Jun 1, 2023

Copy link
Copy Markdown

Whoops! Typo. Updated.

dracos added a commit to mysociety/fixmystreet that referenced this pull request Jul 11, 2023
I used the Dropzone source code to come up with what was missing when
adding existing files (we were previously reducing maxFiles which had
much the same effect unless you tried to remove/add when it got quite
confused); after doing that, I then discovered a PR on Dropzone which
has the same fixes: enyo/dropzone#2003
dracos added a commit to mysociety/fixmystreet that referenced this pull request Jul 13, 2023
I used the Dropzone source code to come up with what was missing when
adding existing files (we were previously reducing maxFiles which had
much the same effect unless you tried to remove/add when it got quite
confused); after doing that, I then discovered a PR on Dropzone which
has the same fixes: enyo/dropzone#2003
dracos added a commit to mysociety/fixmystreet that referenced this pull request Jul 13, 2023
I used the Dropzone source code to come up with what was missing when
adding existing files (we were previously reducing maxFiles which had
much the same effect unless you tried to remove/add when it got quite
confused); after doing that, I then discovered a PR on Dropzone which
has the same fixes: enyo/dropzone#2003
dracos added a commit to mysociety/fixmystreet that referenced this pull request Jul 13, 2023
I used the Dropzone source code to come up with what was missing when
adding existing files (we were previously reducing maxFiles which had
much the same effect unless you tried to remove/add when it got quite
confused); after doing that, I then discovered a PR on Dropzone which
has the same fixes: enyo/dropzone#2003
dracos added a commit to mysociety/fixmystreet that referenced this pull request Aug 7, 2023
I used the Dropzone source code to come up with what was missing when
adding existing files (we were previously reducing maxFiles which had
much the same effect unless you tried to remove/add when it got quite
confused); after doing that, I then discovered a PR on Dropzone which
has the same fixes: enyo/dropzone#2003
@tomsvecak

Copy link
Copy Markdown

Any hope for this going live anytime soon? 👀 🙏

enyo added a commit that referenced this pull request Sep 12, 2026
Coverage went from 72.26% of statements to 79.84%, and from 80.47% of
functions to 92.85%. 61 tests, in four new files plus the emitter's.

The largest hole was drag and drop. The existing suite calls dropzone.drop()
directly, which skips the listeners the constructor binds, so every handler
on the element -- the whole point of the library -- ran in no test at all.
They are covered now through real DOM events, including the guard that leaves
a drag carrying anything other than files alone, and the dropEffect that
makes dragging out of Chrome's download bar work.

Also covered: paste, the transport failures (ontimeout, onerror and progress
forwarding, previously only the success path had tests), displayExistingFile,
the fallback form, the removal confirmations, renameFilename, handleFiles and
Dropzone.discover. emitter.js reaches 100%.

Three of these pin behaviour that is wrong rather than right, each pointing
at the roadmap entry that will change it: paste still does not emit
addedfiles, displayExistingFile still does not count towards maxFiles (#2003),
and constructing with forceFallback returns the fallback element rather than
a Dropzone, because fallback() ends in a return and a constructor returning
an object overrides this.

The emitter's tests sat behind `return describe(...)`, a CoffeeScript
conversion artefact that ends the enclosing callback, so anything appended
after it was never registered -- which is exactly what happened when the
first four tests here were added and silently did not run. The eleven other
occurrences in all.js hide nothing today, but they are the same trap, and are
removed too. The suite count is unchanged by that, which is the point.

The end-to-end suite already drives a real drop through a real DataTransfer
against the built bundle, so the gap there was failure: the test server only
ever answered 200. It can now reject an upload, and a test drives a real 500
through to the message in the preview.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants