@fleetbase/dev-engine
Version:
Fleetbase Developers extension provides a module for managing developer resources such as API keys, webhooks, sockets, events and logs.
145 lines (132 loc) • 4.58 kB
JavaScript
import BaseController from '../base-controller';
import { inject as controller } from '@ember/controller';
import { inject as service } from '@ember/service';
import { action, computed } from '@ember/object';
import groupApiEvents from '@fleetbase/ember-core/utils/group-api-events';
import fromStore from '@fleetbase/ember-core/decorators/legacy-from-store';
import fetchFrom from '@fleetbase/ember-core/decorators/legacy-fetch-from';
export default class WebhooksViewController extends BaseController {
webhooksIndexController;
modalsManager;
intl;
notifications;
fetch;
universe;
hostRouter;
abilities;
/**
* All webhook events
*
* @memberof WebhooksIndexController
* @var {Array}
*/
webhookEvents;
/**
* All api versions
*
* @memberof WebhooksIndexController
* @var {Array}
*/
apiVersions;
/**
* All api credentials.
*
* @memberof WebhooksIndexController
* @var {Array}
*/
apiCredentials;
/**
* Group api events by resource
*
* @var {Object}
*/
get groupedApiEvents() {
return groupApiEvents(this.webhookEvents);
}
/**
* Toggles dialog to delete webhook
*
* @void
*/
deleteWebhook(webhook) {
this.webhooksIndexController.deleteWebhook(webhook, {
onConfirm: () => {
this.notifications.success(this.intl.t('developers.webhooks.view.webhook-deleted-success-message'));
return this.hostRouter.transitionTo('console.developers.webhooks.index');
},
});
}
/**
* Toggles dialog to disable webhook
*
* @void
*/
disableWebhook(webhook) {
this.modalsManager.confirm({
title: this.intl.t('developers.webhooks.view.disable-webhook-title'),
body: this.intl.t('developers.webhooks.view.disable-webhook-body'),
acceptButtonText: this.intl.t('developers.webhooks.view.disable-webhook-button-text'),
confirm: async (modal) => {
modal.startLoading();
try {
await webhook.disable();
this.notifications.success(this.intl.t('developers.webhooks.view.disable-webhook-success-message'));
modal.done();
} catch (error) {
this.notifications.serverError(error);
modal.stopLoading();
}
},
});
}
/**
* Toggles dialog to enable webhook
*
* @void
*/
enableWebhook(webhook) {
this.modalsManager.confirm({
title: this.intl.t('developers.webhooks.view.enable-webhook-title'),
body: this.intl.t('developers.webhooks.view.enable-webhook-body'),
acceptButtonText: this.intl.t('developers.webhooks.view.enable-webhook-button-text'),
confirm: async (modal) => {
modal.startLoading();
try {
await webhook.enable();
this.notifications.success(this.intl.t('developers.webhooks.view.enable-webhook-success-message'));
modal.done();
} catch (error) {
this.notifications.serverError(error);
modal.stopLoading();
}
},
});
}
/**
* Toggles modal to update webhook details
*
* @param {WebhookEndpointModel} webhook
* @void
*/
updateWebhookDetails(webhook) {
this.webhooksIndexController.editWebhook(webhook, {
acceptButtonText: this.intl.t('developers.webhooks.view.update-endpoint-button-text'),
eventOptions: this.groupedApiEvents,
versionOptions: this.apiVersions,
apiCredentialOptions: this.apiCredentials,
confirm: () => {
return webhook.save().then(() => {
this.notifications.success(this.intl.t('developers.webhooks.view.update-endpoint-success-message'));
});
},
});
}
/**
* Reloads the view data.
*
* @memberof WebhooksViewController
*/
reload() {
this.hostRouter.refresh();
}
}