celeri-dev-engine
Version:
Fleetbase Developers extension provides a module for managing developer resources such as API keys, webhooks, sockets, events and logs.
159 lines (144 loc) • 4.66 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 'celeri-ember-core/utils/group-api-events';
import fromStore from 'celeri-ember-core/decorators/from-store';
import fetchFrom from 'celeri-ember-core/decorators/fetch-from';
export default class WebhooksViewController extends BaseController {
/**
* Inject the `webhooks.index` controller
*
* @var {Controller}
*/
index;
/**
* Inject the `modalsManager` service
*
* @var {Service}
*/
modalsManager;
/**
* Inject the `intl` service
*
* @var {Service}
*/
intl;
/**
* Inject the `notifications` service
*
* @var {Service}
*/
notifications;
/**
* Inject the `fetch` service
*
* @var {Service}
*/
fetch;
/**
* Inject the `universe` service
*
* @var {Service}
*/
universe;
/**
* 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.index.deleteWebhook(webhook, {
onConfirm: () => {
this.notifications.success(this.intl.t('developers.webhooks.view.webhook-deleted-success-message'));
return this.transitionToRoute('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: (modal) => {
modal.startLoading();
webhook.set('status', 'disabled');
return webhook.save().then(() => {
this.notifications.success(this.intl.t('developers.webhooks.view.disable-webhook-success-message'));
});
},
});
}
/**
* 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: (modal) => {
modal.startLoading();
webhook.set('status', 'enabled');
return webhook.save().then(() => {
this.notifications.success(this.intl.t('developers.webhooks.view.enable-webhook-success-message'));
});
},
});
}
/**
* Toggles modal to update webhook details
*
* @param {WebhookEndpointModel} webhook
* @void
*/
updateWebhookDetails(webhook) {
this.index.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'));
});
},
});
}
}