export function updateIssueDraft()

in src/views/create-issue/create-issue-actions.ts [142:191]


export function updateIssueDraft(ignoreFields: boolean = false, draftData?: Record<string, any>): ReduxAction {
  return async (dispatch: ReduxThunkDispatch, getState: ReduxStateGetter, getApi: ReduxAPIGetter) => {
    const api: Api = getApi();
    const {issue} = getState().creation;

    if (!issue || !issue.project || !issue.project.id) {
      return;
    }

    const draftIssue = {
      id: issue.id,
      summary: issue.summary,
      description: issue.description,
      project: issue.project,
      fields: ignoreFields ? undefined : issue.fields,
      ...draftData,
    } as unknown as IssueCreate;

    try {
      const updatedDraftIssue = await api.issue.updateIssueDraft(draftIssue);

      if (ignoreFields) {
        delete updatedDraftIssue.fields;
      }

      log.info('Create Issue Actions: Issue draft updated');
      dispatch(actions.setIssueDraft({issue: updatedDraftIssue}));

      if (!getState().creation.predefinedDraftId) {
        await storeIssueDraftId(updatedDraftIssue.id);
      }
    } catch (err) {
      const e = err as AnyError;
      const error = (await resolveError(e)) || new Error(DEFAULT_ERROR_MESSAGE);
      const {error_description} = error;

      if (
        (error_description && error_description.indexOf(CUSTOM_ERROR_MESSAGE.NO_ENTITY_FOUND) !== -1) ||
        (error && (error.error === 'bad_request' || error.error === CUSTOM_ERROR_MESSAGE.BAD_REQUEST))
      ) {
        flushStoragePart({
          projectId: null,
        });
        dispatch(actions.clearDraftProject());
      }

      notifyError(error);
    }
  };
}