in src/views/create-issue/create-issue-reducers.ts [131:210]
function createAttachmentReducers() {
return {
[attachmentTypes.ATTACH_START_ADDING](
state: CreateIssueState,
action: {
attachingImage: Attachment;
}
): CreateIssueState {
const {attachingImage} = action;
return {
...state,
issue: {
...state.issue,
attachments: [...state.issue.attachments, attachingImage],
},
attachingImage,
};
},
[attachmentTypes.ATTACH_CANCEL_ADDING](
state: CreateIssueState,
action: {
attachingImage: Record<string, any>;
}
): CreateIssueState {
const {attachingImage} = action;
return {
...state,
issue: {
...state.issue,
attachments: state.issue.attachments.filter(attachment => attachment !== attachingImage),
},
attachingImage: null,
};
},
[attachmentTypes.ATTACH_REMOVE](
state: CreateIssueState,
action: {
attachmentId: string;
}
): CreateIssueState {
return {
...state,
issue: {
...state.issue,
attachments: state.issue.attachments.filter(attach => attach.id !== action.attachmentId),
},
};
},
[attachmentTypes.ATTACH_STOP_ADDING](state: CreateIssueState): CreateIssueState {
return {...state, attachingImage: null};
},
[attachmentTypes.ATTACH_TOGGLE_ADD_FILE_DIALOG](
state: CreateIssueState,
action: {
isAttachFileDialogVisible: boolean;
}
): CreateIssueState {
return {
...state,
isAttachFileDialogVisible: action.isAttachFileDialogVisible,
};
},
[attachmentTypes.ATTACH_RECEIVE_ALL_ATTACHMENTS](
state: CreateIssueState,
action: {
attachments: Attachment[];
}
): CreateIssueState {
return {
...state,
issue: {...state.issue, attachments: action.attachments},
};
},
};
}