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:
David Taylor 2024-10-23 10:07:24 +01:00 committed by GitHub
parent 8f9b827d15
commit 51a32de45e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 59 additions and 54 deletions

View File

@ -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>
}

View File

@ -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>

View File

@ -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);
}
}