discourse/app/assets/javascripts/admin/addon/controllers/admin-api-keys-show.js
2023-08-01 14:51:18 -05:00

78 lines
1.7 KiB
JavaScript

import { action } from "@ember/object";
import { empty } from "@ember/object/computed";
import Controller from "@ember/controller";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import { isEmpty } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { inject as service } from "@ember/service";
import ApiKeyUrlsModal from "../components/modal/api-key-urls";
export default class AdminApiKeysShowController extends Controller.extend(
bufferedProperty("model")
) {
@service router;
@service modal;
@empty("model.id") isNew;
@action
saveDescription() {
const buffered = this.buffered;
const attrs = buffered.getProperties("description");
this.model
.save(attrs)
.then(() => {
this.set("editingDescription", false);
this.rollbackBuffer();
})
.catch(popupAjaxError);
}
@action
cancel() {
const id = this.get("userField.id");
if (isEmpty(id)) {
this.destroyAction(this.userField);
} else {
this.rollbackBuffer();
this.set("editing", false);
}
}
@action
editDescription() {
this.toggleProperty("editingDescription");
if (!this.editingDescription) {
this.rollbackBuffer();
}
}
@action
revokeKey(key) {
key.revoke().catch(popupAjaxError);
}
@action
deleteKey(key) {
key
.destroyRecord()
.then(() => this.router.transitionTo("adminApiKeys.index"))
.catch(popupAjaxError);
}
@action
undoRevokeKey(key) {
key.undoRevoke().catch(popupAjaxError);
}
@action
showURLs(urls) {
this.modal.show(ApiKeyUrlsModal, {
model: {
urls,
},
});
}
}