import { addErrorMessage, addLoadingMessage, addSuccessMessage, clearIndicators, } from 'sentry/actionCreators/indicator'; import type {Client} from 'sentry/api'; import {t} from 'sentry/locale'; import type {SentryApp, SentryAppInstallation} from 'sentry/types/integrations'; /** * Install a sentry application * * @param {Object} client ApiClient * @param {String} orgId Organization Slug * @param {Object} app SentryApp */ export function installSentryApp( client: Client, orgId: string, app: SentryApp ): Promise { addLoadingMessage(); const promise = client.requestPromise( `/organizations/${orgId}/sentry-app-installations/`, { method: 'POST', data: {slug: app.slug}, } ); promise.then( () => clearIndicators(), () => addErrorMessage(t('Unable to install %s', app.name)) ); return promise; } /** * Uninstall a sentry application * * @param {Object} client ApiClient * @param {Object} install SentryAppInstallation */ export function uninstallSentryApp( client: Client, install: SentryAppInstallation ): Promise { addLoadingMessage(); const promise = client.requestPromise(`/sentry-app-installations/${install.uuid}/`, { method: 'DELETE', }); const capitalizedAppSlug = install.app.slug.charAt(0).toUpperCase() + install.app.slug.slice(1); promise.then( () => { addSuccessMessage(t('%s successfully uninstalled.', capitalizedAppSlug)); }, () => clearIndicators() ); return promise; }