import {Component, Fragment} from 'react'; import Panel from 'sentry/components/panels/panel'; import PanelBody from 'sentry/components/panels/panelBody'; import PanelHeader from 'sentry/components/panels/panelHeader'; import {t} from 'sentry/locale'; import {Permissions, Scope, WebhookEvent} from 'sentry/types'; import {toResourcePermissions} from 'sentry/utils/consolidatedScopes'; import PermissionSelection from 'sentry/views/settings/organizationDeveloperSettings/permissionSelection'; import Subscriptions from 'sentry/views/settings/organizationDeveloperSettings/resourceSubscriptions'; type DefaultProps = { appPublished: boolean; webhookDisabled: boolean; }; type Props = DefaultProps & { events: WebhookEvent[]; scopes: Scope[]; }; type State = { events: WebhookEvent[]; permissions: Permissions; }; export default class PermissionsObserver extends Component { static defaultProps: DefaultProps = { webhookDisabled: false, appPublished: false, }; constructor(props: Props) { super(props); this.state = { permissions: this.scopeListToPermissionState(), events: this.props.events, }; } /** * Converts the list of raw API scopes passed in to an object that can * before stored and used via `state`. This object is structured by * resource and holds "Permission" values. For example: * * { * 'Project': 'read', * ..., * } * */ scopeListToPermissionState() { return toResourcePermissions(this.props.scopes); } onPermissionChange = (permissions: Permissions) => { this.setState({permissions}); }; onEventChange = (events: WebhookEvent[]) => { this.setState({events}); }; render() { const {permissions, events} = this.state; return ( {t('Permissions')} {t('Webhooks')} ); } }