discourse/app/assets/javascripts/admin/addon/components/admin-backups-actions.gjs

101 lines
2.7 KiB
Plaintext

import Component from "@glimmer/component";
import { action } from "@ember/object";
import { service } from "@ember/service";
import routeAction from "discourse/helpers/route-action";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { i18n } from "discourse-i18n";
export default class AdminBackupsActions extends Component {
@service currentUser;
@service site;
@service dialog;
@action
toggleReadOnlyMode() {
if (!this.site.isReadOnly) {
this.dialog.yesNoConfirm({
message: i18n("admin.backups.read_only.enable.confirm"),
didConfirm: () => {
this.currentUser.set("hideReadOnlyAlert", true);
this.#toggleReadOnlyMode(true);
},
});
} else {
this.#toggleReadOnlyMode(false);
}
}
get rollbackDisabled() {
return !this.rollbackEnabled;
}
get rollbackEnabled() {
return (
this.args.backups.canRollback &&
this.args.backups.restoreEnabled &&
!this.args.backups.isOperationRunning
);
}
async #toggleReadOnlyMode(enable) {
try {
await ajax("/admin/backups/readonly", {
type: "PUT",
data: { enable },
});
this.site.set("isReadOnly", enable);
} catch (err) {
popupAjaxError(err);
}
}
<template>
{{#if @backups.isOperationRunning}}
<@actions.Danger
@action={{routeAction "cancelOperation"}}
@title="admin.backups.operations.cancel.title"
@label="admin.backups.operations.cancel.label"
@icon="xmark"
class="admin-backups__cancel"
/>
{{else}}
<@actions.Primary
@action={{routeAction "showStartBackupModal"}}
@title="admin.backups.operations.backup.title"
@label="admin.backups.operations.backup.label"
@icon="rocket"
class="admin-backups__start"
/>
{{/if}}
{{#if @backups.canRollback}}
<@actions.Default
@action={{routeAction "rollback"}}
@label="admin.backups.operations.rollback.label"
@title="admin.backups.operations.rollback.title"
@disabled={{this.rollbackDisabled}}
@icon="truck-medical"
class="admin-backups__rollback"
/>
{{/if}}
<@actions.Default
@action={{this.toggleReadOnlyMode}}
@disabled={{@backups.isOperationRunning}}
@title={{if
this.site.isReadOnly
"admin.backups.read_only.disable.title"
"admin.backups.read_only.enable.title"
}}
@label={{if
this.site.isReadOnly
"admin.backups.read_only.disable.label"
"admin.backups.read_only.enable.label"
}}
@icon={{if this.site.isReadOnly "far-eye-slash" "far-eye"}}
class="admin-backups__toggle-read-only"
/>
</template>
}