Sha256: fe7587d40aa7172af45dcdde0bf145993f312302e6ef4a5578ce7fb7f4356201

Contents?: true

Size: 1.09 KB

Versions: 11

Compression:

Stored size: 1.09 KB

Contents

import { FileChecksum } from "./file_checksum"
import { BlobRecord } from "./blob_record"
import { BlobUpload } from "./blob_upload"

let id = 0

export class DirectUpload {
  constructor(file, url, delegate) {
    this.id = ++id
    this.file = file
    this.url = url
    this.delegate = delegate
  }

  create(callback) {
    FileChecksum.create(this.file, (error, checksum) => {
      const blob = new BlobRecord(this.file, checksum, this.url)
      notify(this.delegate, "directUploadWillCreateBlobWithXHR", blob.xhr)
      blob.create(error => {
        if (error) {
          callback(error)
        } else {
          const upload = new BlobUpload(blob)
          notify(this.delegate, "directUploadWillStoreFileWithXHR", upload.xhr)
          upload.create(error => {
            if (error) {
              callback(error)
            } else {
              callback(null, blob.toJSON())
            }
          })
        }
      })
    })
  }
}

function notify(object, methodName, ...messages) {
  if (object && typeof object[methodName] == "function") {
    return object[methodName](...messages)
  }
}

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
activestorage_legacy-0.2.1 app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.2.0 app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.1.3 app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.1.2 app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.1.1 app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.1.1.alpha app/javascript/activestorage/direct_upload.js
activestorage_legacy-0.1 app/javascript/activestorage/direct_upload.js
activestorage-5.2.0.rc1 app/javascript/activestorage/direct_upload.js
activestorage-5.2.0.beta2 app/javascript/activestorage/direct_upload.js
activestorage-5.2.0.beta1 app/javascript/activestorage/direct_upload.js
ruby-on-quails-0.1.0 activestorage/app/javascript/activestorage/direct_upload.js