socketReducer.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {createSlice } from '@reduxjs/toolkit';
  2. import {io} from 'socket.io-client';
  3. import { store } from '../store';
  4. import { removeToken } from './userDataReducer';
  5. import { privateMessage } from './userDataReducer';
  6. const initialState = {
  7. socketStatus: 'idle',
  8. socket: null,
  9. socketUserData: {},
  10. usersOnline: [],
  11. startMessages: [],
  12. allUsers: [],
  13. writing: false,
  14. usersWriting: [],
  15. newMessages : [],
  16. newPrivateMessages: {},
  17. friends: []
  18. }
  19. export const getUserSocketSlice = createSlice({
  20. name: 'userSocket',
  21. initialState,
  22. reducers: {
  23. removeSocket: state => {
  24. state.socket = null
  25. state.socketStatus = 'disconnected'},
  26. getSocket: (state, action) => {
  27. state.socket = action.payload
  28. state.socketStatus = 'connected';
  29. },
  30. getUser: (state, action) => {state.socketUserData = action.payload},
  31. getAllMessages: (state, action) => {state.startMessages = action.payload},
  32. getUsersOnline: (state, action) => {state.usersOnline = action.payload},
  33. getAllUsers: (state, action) => {state.allUsers = action.payload},
  34. addNewMessage: (state, action) => {state.newMessages.push(action.payload)},
  35. addNewPrivateMessage: (state, action) => {state.newPrivateMessages = action.payload},
  36. friendsFromSocket:(state, action) => {state.friends = action.payload}
  37. }
  38. }
  39. );
  40. const {actions, reducer} = getUserSocketSlice;
  41. const getUserSocketReducer = reducer;
  42. export default getUserSocketReducer;
  43. export const {
  44. removeSocket,
  45. getSocket,
  46. getUser,
  47. getAllMessages,
  48. getUsersOnline,
  49. addNewMessage,
  50. addNewPrivateMessage,
  51. getAllUsers,
  52. friendsFromSocket,
  53. writing
  54. } = actions;