DEV: Modernize uppy-backup-uploader component (#29342)
- remove uppy mixin - convert to glimmer component - use gjs authoring format - move to admin bundle
This commit is contained in:
parent
8f9b827d15
commit
51a32de45e
|
@ -0,0 +1,59 @@
|
|||
import Component from "@glimmer/component";
|
||||
import { getOwner } from "@ember/owner";
|
||||
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
|
||||
import { service } from "@ember/service";
|
||||
import UppyUpload from "discourse/lib/uppy/uppy-upload";
|
||||
import i18n from "discourse-common/helpers/i18n";
|
||||
|
||||
export default class UppyBackupUploader extends Component {
|
||||
@service siteSettings;
|
||||
|
||||
uppyUpload = new UppyUpload(getOwner(this), {
|
||||
id: "uppy-backup-uploader",
|
||||
type: "backup",
|
||||
uploadRootPath: "/admin/backups",
|
||||
uploadUrl: "/admin/backups/upload",
|
||||
|
||||
// local backups
|
||||
useChunkedUploads: this.args.localBackupStorage,
|
||||
|
||||
// direct s3 backups
|
||||
useMultipartUploadsIfAvailable:
|
||||
!this.args.localBackupStorage &&
|
||||
this.siteSettings.enable_direct_s3_uploads,
|
||||
|
||||
validateUploadedFilesOptions: { skipValidation: true },
|
||||
|
||||
uploadDone: (responseData) => {
|
||||
this.args.done(responseData.file_name);
|
||||
},
|
||||
});
|
||||
|
||||
get uploadButtonText() {
|
||||
return this.uppyUpload.uploading
|
||||
? i18n("admin.backups.upload.uploading_progress", {
|
||||
progress: this.uppyUpload.uploadProgress,
|
||||
})
|
||||
: i18n("admin.backups.upload.label");
|
||||
}
|
||||
|
||||
<template>
|
||||
<span>
|
||||
<label
|
||||
class="btn btn-small btn-primary admin-backups-upload"
|
||||
disabled={{this.uppyUpload.uploading}}
|
||||
title={{i18n "admin.backups.upload.title"}}
|
||||
...attributes
|
||||
>
|
||||
{{this.uploadButtonText}}
|
||||
<input
|
||||
{{didInsert this.uppyUpload.setup}}
|
||||
class="hidden-upload-field"
|
||||
disabled={{this.uppyUpload.uploading}}
|
||||
type="file"
|
||||
accept=".gz"
|
||||
/>
|
||||
</label>
|
||||
</span>
|
||||
</template>
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
<label
|
||||
class="btn btn-small btn-primary admin-backups-upload"
|
||||
disabled={{this.uploading}}
|
||||
title={{i18n "admin.backups.upload.title"}}
|
||||
...attributes
|
||||
>
|
||||
{{this.uploadButtonText}}
|
||||
<input
|
||||
class="hidden-upload-field"
|
||||
disabled={{this.uploading}}
|
||||
type="file"
|
||||
accept=".gz"
|
||||
/>
|
||||
</label>
|
|
@ -1,40 +0,0 @@
|
|||
import Component from "@ember/component";
|
||||
import { alias } from "@ember/object/computed";
|
||||
import { tagName } from "@ember-decorators/component";
|
||||
import UppyUploadMixin from "discourse/mixins/uppy-upload";
|
||||
import discourseComputed from "discourse-common/utils/decorators";
|
||||
import I18n from "discourse-i18n";
|
||||
|
||||
@tagName("span")
|
||||
export default class UppyBackupUploader extends Component.extend(
|
||||
UppyUploadMixin
|
||||
) {
|
||||
id = "uppy-backup-uploader";
|
||||
type = "backup";
|
||||
uploadRootPath = "/admin/backups";
|
||||
uploadUrl = "/admin/backups/upload";
|
||||
|
||||
// local backups
|
||||
@alias("localBackupStorage") useChunkedUploads;
|
||||
|
||||
// direct s3 backups
|
||||
@discourseComputed("localBackupStorage")
|
||||
useMultipartUploadsIfAvailable(localBackupStorage) {
|
||||
return !localBackupStorage && this.siteSettings.enable_direct_s3_uploads;
|
||||
}
|
||||
|
||||
@discourseComputed("uploading", "uploadProgress")
|
||||
uploadButtonText(uploading, progress) {
|
||||
return uploading
|
||||
? I18n.t("admin.backups.upload.uploading_progress", { progress })
|
||||
: I18n.t("admin.backups.upload.label");
|
||||
}
|
||||
|
||||
validateUploadedFilesOptions() {
|
||||
return { skipValidation: true };
|
||||
}
|
||||
|
||||
uploadDone(responseData) {
|
||||
this.done(responseData.file_name);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue