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);
}
};
}