socketReducer.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. newPrivateMessagesArray: [],
  18. friends: []
  19. }
  20. export const getUserSocketSlice = createSlice({
  21. name: 'userSocket',
  22. initialState,
  23. reducers: {
  24. removeSocket: state => {
  25. state.socket = null
  26. state.socketStatus = 'disconnected'},
  27. getSocket: (state, action) => {
  28. state.socket = action.payload
  29. state.socketStatus = 'connected';
  30. },
  31. getUser: (state, action) => {state.socketUserData = action.payload},
  32. getAllMessages: (state, action) => {state.startMessages = action.payload},
  33. getUsersOnline: (state, action) => {state.usersOnline = action.payload},
  34. getAllUsers: (state, action) => {state.allUsers = action.payload},
  35. addNewMessage: (state, action) => {state.newMessages.push(action.payload)},
  36. addNewPrivateMessage: (state, action) => {
  37. state.newPrivateMessages = action.payload
  38. state.newPrivateMessagesArray.push(action.payload)
  39. },
  40. // addNewPrivateMessage: (state, action) => {state.newPrivateMessages = action.payload},
  41. // friendsFromSocket:(state, action) => {state.friends = action.payload}
  42. }
  43. });
  44. const {actions, reducer} = getUserSocketSlice;
  45. const getUserSocketReducer = reducer;
  46. export default getUserSocketReducer;
  47. export const {
  48. removeSocket,
  49. getSocket,
  50. getUser,
  51. getAllMessages,
  52. getUsersOnline,
  53. addNewMessage,
  54. addNewPrivateMessage,
  55. getAllUsers,
  56. friendsFromSocket,
  57. writing
  58. } = actions;