DEV: Only support multipart for backup S3 uploads with Uppy (#15270)

In the composer, we already only allow for S3 multipart uploads
if enable_direct_s3_uploads is true, so in the backups uploader
that is based on Uppy we want to do the same thing. In future
if self-hosters need some way to not use S3 multipart in these
scenarios for whatever reason we can revisit this then (which
should be as simple as adding a enable_multipart_s3_uploads site
setting).
This commit is contained in:
Martin Brennan
2021-12-13 15:24:00 +10:00
committed by GitHub
parent 18a209bd0d
commit 40d13ce662
3 changed files with 6 additions and 12 deletions

View File

@ -12,7 +12,7 @@
class="btn-default"}}
{{/if}}
{{else}}
{{#if (and siteSettings.enable_direct_s3_uploads siteSettings.enable_experimental_backup_uploader)}}
{{#if siteSettings.enable_experimental_backup_uploader}}
{{uppy-backup-uploader done=(route-action "remoteUploadSuccess")}}
{{else}}
{{backup-uploader done=(route-action "remoteUploadSuccess")}}

View File

@ -1,5 +1,5 @@
import Component from "@ember/component";
import { alias, not } from "@ember/object/computed";
import { alias } from "@ember/object/computed";
import I18n from "I18n";
import UppyUploadMixin from "discourse/mixins/uppy-upload";
import discourseComputed from "discourse-common/utils/decorators";
@ -12,15 +12,11 @@ export default Component.extend(UppyUploadMixin, {
uploadRootPath: "/admin/backups",
uploadUrl: "/admin/backups/upload",
// TODO (martin) Add functionality to make this usable _without_ multipart
// uploads, direct to S3, which needs to call get-presigned-put on the
// BackupsController (which extends ExternalUploadHelpers) rather than
// the old create_upload_url route. The two are functionally equivalent;
// they both generate a presigned PUT url for the upload to S3, and do
// the whole thing in one request rather than multipart.
// direct s3 backups
useMultipartUploadsIfAvailable: not("localBackupStorage"),
@discourseComputed("localBackupStorage")
useMultipartUploadsIfAvailable(localBackupStorage) {
return !localBackupStorage && this.siteSettings.enable_direct_s3_uploads;
},
// local backups
useChunkedUploads: alias("localBackupStorage"),

View File

@ -205,8 +205,6 @@ export default Mixin.create(ExtendableUploader, UppyS3Multipart, {
this._useXHRUploads();
}
// TODO (martin) develop upload handler guidance and an API to use; will
// likely be using uppy plugins for this
this._uppyInstance.on("file-added", (file) => {
if (isPrivateMessage) {
file.meta.for_private_message = true;