Преглед на файлове

disallow removing individual files if `bundle: true` in XHRUpload

Artur Paikin преди 7 години
родител
ревизия
fa7557d01e

+ 10 - 9
src/plugins/AwsS3/Multipart.js

@@ -354,14 +354,6 @@ module.exports = class AwsS3Multipart extends Plugin {
     return Promise.all(promises)
     return Promise.all(promises)
   }
   }
 
 
-  addResumableUploadsCapabilityFlag () {
-    this.uppy.setState({
-      capabilities: Object.assign({}, this.uppy.getState().capabilities, {
-        resumableUploads: true
-      })
-    })
-  }
-
   onFileRemove (fileID, cb) {
   onFileRemove (fileID, cb) {
     this.uploaderEvents[fileID].on('file-removed', (file) => {
     this.uploaderEvents[fileID].on('file-removed', (file) => {
       if (fileID === file.id) cb(file.id)
       if (fileID === file.id) cb(file.id)
@@ -414,11 +406,20 @@ module.exports = class AwsS3Multipart extends Plugin {
   }
   }
 
 
   install () {
   install () {
-    this.addResumableUploadsCapabilityFlag()
+    this.uppy.setState({
+      capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+        resumableUploads: true
+      })
+    })
     this.uppy.addUploader(this.upload)
     this.uppy.addUploader(this.upload)
   }
   }
 
 
   uninstall () {
   uninstall () {
+    this.uppy.setState({
+      capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+        resumableUploads: false
+      })
+    })
     this.uppy.removeUploader(this.upload)
     this.uppy.removeUploader(this.upload)
   }
   }
 }
 }

+ 6 - 2
src/plugins/Dashboard/FileItem.js

@@ -14,12 +14,15 @@ const FileItemProgressWrapper = (props) => {
     return
     return
   }
   }
 
 
-  if (props.isUploaded || (props.hidePauseResumeCancelButtons && !props.error)) {
+  if (props.isUploaded ||
+      props.bundled ||
+      (props.hidePauseResumeCancelButtons && !props.error)) {
     return <div class="uppy-DashboardItem-progressIndicator">
     return <div class="uppy-DashboardItem-progressIndicator">
       <FileItemProgress
       <FileItemProgress
         progress={props.file.progress.percentage}
         progress={props.file.progress.percentage}
         fileID={props.file.id}
         fileID={props.file.id}
         hidePauseResumeCancelButtons={props.hidePauseResumeCancelButtons}
         hidePauseResumeCancelButtons={props.hidePauseResumeCancelButtons}
+        bundled={props.bundled}
       />
       />
     </div>
     </div>
   }
   }
@@ -81,7 +84,8 @@ module.exports = function fileItem (props) {
     { 'is-complete': isUploaded },
     { 'is-complete': isUploaded },
     { 'is-paused': isPaused },
     { 'is-paused': isPaused },
     { 'is-error': error },
     { 'is-error': error },
-    { 'is-resumable': props.resumableUploads }
+    { 'is-resumable': props.resumableUploads },
+    { 'is-bundled': props.bundledUpload }
   )
   )
 
 
   const progressIndicatorTitle = isUploaded
   const progressIndicatorTitle = isUploaded

+ 1 - 1
src/plugins/Dashboard/FileItemProgress.js

@@ -19,7 +19,7 @@ module.exports = (props) => {
           stroke-dashoffset={circleLength - (circleLength / 100 * props.progress)}
           stroke-dashoffset={circleLength - (circleLength / 100 * props.progress)}
         />
         />
       </g>
       </g>
-      {!props.hidePauseResumeCancelButtons ? (
+      {!props.hidePauseResumeCancelButtons && !props.bundled ? (
         <g>
         <g>
           <polygon class="play" transform="translate(3, 3)" points="12 20 12 10 20 15" />
           <polygon class="play" transform="translate(3, 3)" points="12 20 12 10 20 15" />
           <g class="pause" transform="translate(14.5, 13)">
           <g class="pause" transform="translate(14.5, 13)">

+ 1 - 0
src/plugins/Dashboard/FileList.js

@@ -43,6 +43,7 @@ module.exports = (props) => {
         hidePauseResumeCancelButtons={props.hidePauseResumeCancelButtons}
         hidePauseResumeCancelButtons={props.hidePauseResumeCancelButtons}
         hideRetryButton={props.hideRetryButton}
         hideRetryButton={props.hideRetryButton}
         resumableUploads={props.resumableUploads}
         resumableUploads={props.resumableUploads}
+        bundled={props.bundled}
         isWide={props.isWide}
         isWide={props.isWide}
         showLinkToFileUploadResult={props.showLinkToFileUploadResult}
         showLinkToFileUploadResult={props.showLinkToFileUploadResult}
         metaFields={props.metaFields}
         metaFields={props.metaFields}

+ 1 - 0
src/plugins/Dashboard/index.js

@@ -479,6 +479,7 @@ module.exports = class Dashboard extends Plugin {
       note: this.opts.note,
       note: this.opts.note,
       metaFields: pluginState.metaFields,
       metaFields: pluginState.metaFields,
       resumableUploads: this.uppy.state.capabilities.resumableUploads || false,
       resumableUploads: this.uppy.state.capabilities.resumableUploads || false,
+      bundled: this.uppy.state.capabilities.bundled || false,
       startUpload: startUpload,
       startUpload: startUpload,
       pauseUpload: this.uppy.pauseResume,
       pauseUpload: this.uppy.pauseResume,
       retryUpload: this.uppy.retryUpload,
       retryUpload: this.uppy.retryUpload,

+ 9 - 8
src/plugins/Tus.js

@@ -459,16 +459,12 @@ module.exports = class Tus extends Plugin {
       .then(() => null)
       .then(() => null)
   }
   }
 
 
-  addResumableUploadsCapabilityFlag () {
-    const newCapabilities = Object.assign({}, this.uppy.getState().capabilities)
-    newCapabilities.resumableUploads = true
+  install () {
     this.uppy.setState({
     this.uppy.setState({
-      capabilities: newCapabilities
+      capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+        resumableUploads: true
+      })
     })
     })
-  }
-
-  install () {
-    this.addResumableUploadsCapabilityFlag()
     this.uppy.addUploader(this.handleUpload)
     this.uppy.addUploader(this.handleUpload)
 
 
     this.uppy.on('reset-progress', this.handleResetProgress)
     this.uppy.on('reset-progress', this.handleResetProgress)
@@ -479,6 +475,11 @@ module.exports = class Tus extends Plugin {
   }
   }
 
 
   uninstall () {
   uninstall () {
+    this.uppy.setState({
+      capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+        resumableUploads: false
+      })
+    })
     this.uppy.removeUploader(this.handleUpload)
     this.uppy.removeUploader(this.handleUpload)
 
 
     if (this.opts.autoRetry) {
     if (this.opts.autoRetry) {

+ 16 - 0
src/plugins/XHRUpload.js

@@ -479,10 +479,26 @@ module.exports = class XHRUpload extends Plugin {
   }
   }
 
 
   install () {
   install () {
+    if (this.opts.bundle) {
+      this.uppy.setState({
+        capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+          bundled: true
+        })
+      })
+    }
+
     this.uppy.addUploader(this.handleUpload)
     this.uppy.addUploader(this.handleUpload)
   }
   }
 
 
   uninstall () {
   uninstall () {
+    if (this.opts.bundle) {
+      this.uppy.setState({
+        capabilities: Object.assign({}, this.uppy.getState().capabilities, {
+          bundled: true
+        })
+      })
+    }
+
     this.uppy.removeUploader(this.handleUpload)
     this.uppy.removeUploader(this.handleUpload)
   }
   }
 }
 }