1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { createSlice} from '@reduxjs/toolkit';
- import axios from 'axios';
- import { createAsyncThunk } from '@reduxjs/toolkit';
- import { sendMessageToSocket } from '../utils/messagesSocketEvents';
- import { deleteMessageHandler } from '../utils/messagesSocketEvents';
- import { editMessageHandler } from '../utils/messagesSocketEvents';
- const initialState = {
- message:'',
- editMessage: '',
- messageId: '',
- files: [],
- isLoading: false,
- loadingPercentage: 0,
- ref: null
- }
- const POST_FILES_URL = process.env.REACT_APP_SERVER_URL + `/files`;
- export const fileMessage = createAsyncThunk(
- 'messageReducer/fileMessageStatus',
- async (payload) => {
- const {files, axiosConfig} = payload;
- const token = localStorage.getItem('token')
- try {
- const formData = new FormData();
- if(files?.length) {
- for (let i = 0; i < files?.length; i++) {
- formData.append('files', files[i])
- }
- } else {
- formData.append('files', files)
- }
- formData.append('token', token)
- const response = await axios.post(POST_FILES_URL, formData,axiosConfig);
- return await response;
-
- } catch (err) {
- console.log('Error messageReducer thunk', err)
- return err?.message
-
- }
- })
-
- const messageReducerSlice = createSlice({
- name: 'messageReducer',
- initialState,
- reducers: {
- storeMessage: (state, action) => {state.message = action.payload.message},
- editMessage: (state, action) => {
- editMessageHandler(state, action.payload)
- state.editMessage = action.payload.editMessage;
- state.messageId = action.payload.messageId;
- state.ref = action.payload.ref;
- },
- deleteMessage: (state, action) => {
- deleteMessageHandler(state, action.payload)
- },
- sendMessage: (state, action) => sendMessageToSocket(state, action.payload),
- clearMessage: (state) => {state.message = ''}
- },
- extraReducers: (bilder) => {
- bilder
- .addCase(fileMessage.fulfilled, (state, action) => {
- state.files = action.payload.data?.files
- })
- .addCase(fileMessage.pending, (state, action) => {
- console.log('pending', fileMessage.pending())
- })
- .addCase(fileMessage.rejected, (state, action) => {
- console.log('post file rejected', action.payload)
- })}
- });
- const {actions, reducer} = messageReducerSlice;
- const messageReducer = reducer;
- export default messageReducer;
- export const {
- storeMessage,
- sendMessage,
- sendPrivateMessage,
- clearMessage,
- editMessage,
- deleteMessage
- } = actions;
|