UNPKG

communication-react-19

Version:

React library for building modern communication user experiences utilizing Azure Communication Services (React 19 compatible fork)

48 lines 2.66 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. /* @conditional-compile-remove(rich-text-editor-image-upload) */ import { AttachmentUploadActionType } from '../file-sharing/AttachmentUpload'; /* @conditional-compile-remove(rich-text-editor-image-upload) */ /** * @internal */ export const ImageUploadReducer = (state, action) => { const messageId = action.messageId; const messageState = state && state[messageId]; switch (action.type) { case AttachmentUploadActionType.Set: if (!messageState || messageState.length === 0) { return Object.assign(Object.assign({}, state), { [messageId]: action.newUploads }); } return Object.assign(Object.assign({}, state), { [messageId]: messageState.filter((v) => !v.metadata.error).concat(action.newUploads) }); case AttachmentUploadActionType.Completed: if (!messageState) { return state; } return Object.assign(Object.assign({}, state), { [messageId]: messageState.map((v) => v.taskId === action.taskId ? Object.assign(Object.assign({}, v), { metadata: Object.assign(Object.assign({}, v.metadata), { id: action.id, url: action.url, progress: 1 }) }) : v) }); case AttachmentUploadActionType.Failed: if (!messageState) { return state; } return Object.assign(Object.assign({}, state), { [messageId]: messageState.map((v) => v.taskId === action.taskId ? Object.assign(Object.assign({}, v), { metadata: Object.assign(Object.assign({}, v.metadata), { error: { message: action.message } }) }) : v) }); case AttachmentUploadActionType.Remove: if (!messageState) { return state; } return Object.assign(Object.assign({}, state), { [messageId]: messageState.filter((v) => !v.metadata.error).filter((v) => v.metadata.id !== action.id) }); case AttachmentUploadActionType.Progress: if (!messageState) { return state; } return Object.assign(Object.assign({}, state), { [messageId]: messageState.map((v) => v.taskId === action.taskId ? Object.assign(Object.assign({}, v), { metadata: Object.assign(Object.assign({}, v.metadata), { progress: action.progress }) }) : v) }); case AttachmentUploadActionType.Clear: return Object.assign(Object.assign({}, state), { [messageId]: [] }); default: return state; } }; //# sourceMappingURL=ImageUploadReducer.js.map