Skip to content

Commit

Permalink
Properly fix it this time
Browse files Browse the repository at this point in the history
  • Loading branch information
Murderlon committed Apr 3, 2024
1 parent 9c0bcbf commit 2251324
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions packages/@uppy/form/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ export default class Form<M extends Meta, B extends Body> extends BasePlugin<

form: HTMLFormElement // TODO: make this private (or at least, mark it as readonly)

/**
* Unfortunately Uppy isn't a state machine in which we can guarantee it's
* currently in one state and one state only so we use this completed property which is set on `upload-success'.
*/
#completed = false

constructor(uppy: Uppy<M, B>, opts?: FormOptions) {
super(uppy, { ...defaultOptions, ...opts })
this.type = 'acquirer'
Expand All @@ -65,12 +71,14 @@ export default class Form<M extends Meta, B extends Body> extends BasePlugin<
}

handleUploadStart(): void {
this.#completed = false
if (this.opts.getMetaFromForm) {
this.getMetaFromForm()
}
}

handleSuccess(result: Result<M, B>): void {
this.#completed = true
if (this.opts.addResultToForm) {
this.addResultToForm(result)
}
Expand All @@ -81,11 +89,7 @@ export default class Form<M extends Meta, B extends Body> extends BasePlugin<
}

handleFormSubmit(ev: Event): void {
// If `submitOnSuccess` is enabled, Uppy already uploaded the files
// and then calls `form.requestSubmit()`. In that case we don’t want to upload the files again.
const allowUpload = this.uppy.getState().allowNewUpload

if (this.opts.triggerUploadOnSubmit && allowUpload) {
if (this.opts.triggerUploadOnSubmit && !this.#completed) {
ev.preventDefault()
const elements = toArray((ev.target as HTMLFormElement).elements)
const disabledByUppy: HTMLButtonElement[] = []
Expand Down

0 comments on commit 2251324

Please sign in to comment.