DEV: Convert start-backup modal to component-based API (#22812)

This commit is contained in:
Isaac Janzen 2023-08-01 08:40:25 -05:00 committed by GitHub
parent 106a0498f1
commit 6c8af90f5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 58 deletions

View File

@ -0,0 +1,23 @@
<DModal
@title={{i18n "admin.backups.operations.backup.confirm"}}
@closeModal={{@closeModal}}
>
<:body>
{{#if this.warningMessage}}
<div class="alert alert-warning">{{html-safe this.warningMessage}}</div>
{{/if}}
</:body>
<:footer>
<DButton
class="btn-primary backup-with-uploads"
@action={{this.startBackupWithUploads}}
@label={{or this.yesLabel "yes_value"}}
/>
<DButton
class="backup-no-uploads"
@action={{this.startBackupWithoutUploads}}
@label="admin.backups.operations.backup.without_uploads"
/>
<DButton class="btn-default" @action={{@closeModal}} @label="no_value" />
</:footer>
</DModal>

View File

@ -0,0 +1,16 @@
import Component from "@glimmer/component";
import { action } from "@ember/object";
export default class StartBackup extends Component {
@action
startBackupWithUploads() {
this.args.model.startBackup(true);
this.args.closeModal();
}
@action
startBackupWithoutUploads() {
this.args.model.startBackup(false);
this.args.closeModal();
}
}

View File

@ -1,39 +0,0 @@
import { action } from "@ember/object";
import Controller, { inject as controller } from "@ember/controller";
import discourseComputed from "discourse-common/utils/decorators";
import ModalFunctionality from "discourse/mixins/modal-functionality";
export default class AdminStartBackupController extends Controller.extend(
ModalFunctionality
) {
@controller adminBackupsLogs;
@discourseComputed
warningMessage() {
// this is never shown here, but we may want to show different
// messages in plugins
return "";
}
@discourseComputed
yesLabel() {
return "yes_value";
}
@action
startBackupWithUploads() {
this.send("closeModal");
this.send("startBackup", true);
}
@action
startBackupWithoutUploads() {
this.send("closeModal");
this.send("startBackup", false);
}
@action
cancel() {
this.send("closeModal");
}
}

View File

@ -9,14 +9,16 @@ import User from "discourse/models/user";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
import getURL from "discourse-common/lib/get-url";
import showModal from "discourse/lib/show-modal";
import { bind } from "discourse-common/utils/decorators";
import StartBackupModal from "admin/components/modal/start-backup";
const LOG_CHANNEL = "/admin/backups/logs";
export default class AdminBackupsRoute extends DiscourseRoute {
@service dialog;
@service router;
@service messageBus;
@service modal;
activate() {
this.messageBus.subscribe(LOG_CHANNEL, this.onMessage);
@ -67,7 +69,9 @@ export default class AdminBackupsRoute extends DiscourseRoute {
@action
showStartBackupModal() {
showModal("admin-start-backup", { admin: true });
this.modal.show(StartBackupModal, {
model: { startBackup: this.startBackup },
});
}
@action

View File

@ -1,16 +0,0 @@
<DModalBody @title="admin.backups.operations.backup.confirm">
{{#if this.warningMessage}}
<div class="alert alert-warning">{{html-safe this.warningMessage}}</div>
{{/if}}
<DButton
@class="btn-primary backup-with-uploads"
@action={{action "startBackupWithUploads"}}
@label={{this.yesLabel}}
/>
<DButton
@class="backup-no-uploads"
@action={{action "startBackupWithoutUploads"}}
@label="admin.backups.operations.backup.without_uploads"
/>
<DButton @class="btn-default" @action={{action "cancel"}} @label="no_value" />
</DModalBody>

View File

@ -51,7 +51,6 @@ const KNOWN_LEGACY_MODALS = [
"topic-summary",
"user-status",
"admin-merge-users-prompt",
"admin-start-backup",
"admin-watched-word-test",
"admin-api-key-urls",
"admin-delete-user-posts-progress",