chatReducer.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. export function chatReducer (state={}, {type, data, id}){
  2. if(type === 'CHATS'){
  3. let chats ////new chats
  4. for(const value of data){
  5. chats = {
  6. ...chats,
  7. [value._id]:{...value}
  8. }
  9. }
  10. let newState
  11. // if(Object.values(state).length == 1 && Object.values(state)[0].title === 'loading'){
  12. // newState = {
  13. // ...chats, [Object.keys(state)[0]] : {...chats[Object.keys(state)[0]],
  14. // messages:{...chats[Object.keys(state)[0]]?.messages, ...Object.values(state)[0].messages }}
  15. // }
  16. // }
  17. for (let prop in chats){
  18. newState = {
  19. ...newState, ...state, [prop] : {...state[prop], ...chats[prop]}
  20. }
  21. }
  22. // newState = {...state, ...chats}
  23. let arr = Object.entries(newState);
  24. arr.sort((a,b) => a[1].lastModified > b[1].lastModified ? -1 : 1)
  25. return {
  26. ...Object.fromEntries(arr)
  27. }
  28. }
  29. if(type === 'MSG'){
  30. let newMessages
  31. for(const value of data){
  32. newMessages = {
  33. ...newMessages,
  34. [value._id]:{...value}
  35. }
  36. }
  37. // console.log(newState)
  38. return {
  39. ...state, [id] : {...(state[id] || {_id: id, title: "loading"}),
  40. messages: Object.fromEntries(Object.entries({...(state[id]?.messages || {}), ...newMessages}).sort((a,b) => a[0] < b[0] ? 1 : -1))}
  41. }
  42. }
  43. // if(type === 'CHATS'){
  44. // return [...state, ...data].sort((a,b) => a.lastModified > b.lastModified ? -1 : 1)
  45. // }
  46. // if(type === 'CHATS'){
  47. // let chats
  48. // for(const value of data){
  49. // chats = {
  50. // ...chats,
  51. // [value._id]:{...value}
  52. // }
  53. // }
  54. // let newState = {...state, ...chats}
  55. // let arr = Object.entries(newState);
  56. // arr.sort((a,b) => a[1].lastModified > b[1].lastModified ? -1 : 1)
  57. // return {
  58. // ...Object.fromEntries(arr)
  59. // }
  60. // }
  61. if(type === 'LEFTCHAT'){
  62. let newState = {...state};
  63. let arr = Object.entries(newState);
  64. return {
  65. ...Object.fromEntries(arr.filter((chat) => chat[0] != data._id))
  66. }
  67. // // console.log(data);
  68. // // console.log(data._id);
  69. // return [...state].filter((chat) => chat._id !== data._id)
  70. }
  71. // if (type === 'LASTMSG'){
  72. // let newState = [...state].filter((item) => item._id != data[0]._id);
  73. // return [...newState, ...data].sort((a,b) => a.lastModified > b.lastModified ? -1 : 1)
  74. // }
  75. // if(type === 'MSG'){
  76. // let newState = [...state];
  77. // let currindex = newState.findIndex((item) => item._id === id)
  78. // const arr = newState.map((obj, index) =>{
  79. // if(index == currindex){
  80. // return ({...obj, messages: data})
  81. // }
  82. // return obj
  83. // })
  84. // return arr
  85. return state
  86. }