socketReducer.js 1.6 KB

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