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