123456789101112131415161718192021222324252627282930313233343536373839 |
- import CommitterActions from 'sentry/actions/committerActions';
- import {Client} from 'sentry/api';
- import CommitterStore, {getCommitterStoreKey} from 'sentry/stores/committerStore';
- import {Committer} from 'sentry/types';
- type ParamsGet = {
- eventId: string;
- orgSlug: string;
- projectSlug: string;
- };
- export function getCommitters(api: Client, params: ParamsGet) {
- const {orgSlug, projectSlug, eventId} = params;
- const path = `/projects/${orgSlug}/${projectSlug}/events/${eventId}/committers/`;
- // HACK(leedongwei): Actions fired by the ActionCreators are queued to
- // the back of the event loop, allowing another getRepo for the same
- // repo to be fired before the loading state is updated in store.
- // This hack short-circuits that and update the state immediately.
- const storeKey = getCommitterStoreKey(orgSlug, projectSlug, eventId);
- CommitterStore.state[storeKey] = {
- ...CommitterStore.state[storeKey],
- committersLoading: true,
- };
- CommitterActions.load(orgSlug, projectSlug, eventId);
- return api
- .requestPromise(path, {
- method: 'GET',
- })
- .then((res: {committers: Committer[]}) => {
- CommitterActions.loadSuccess(orgSlug, projectSlug, eventId, res.committers);
- })
- .catch(err => {
- // NOTE: Do not captureException here as EventFileCommittersEndpoint returns
- // 404 Not Found if the project did not setup Releases or Commits
- CommitterActions.loadError(orgSlug, projectSlug, eventId, err);
- });
- }
|