chat.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import {
  2. defineStore
  3. } from 'pinia';
  4. import store from '../index'
  5. export const useChatStore = defineStore({
  6. id: ' chat',
  7. state: () => ({
  8. socket: null,
  9. badgeNum: 0,
  10. msgInfo: {},
  11. formUserId: ''
  12. }),
  13. getters: {
  14. getSocket() {
  15. return this.socket
  16. },
  17. getBadgeNum() {
  18. return this.badgeNum
  19. },
  20. getMsgInfo() {
  21. return this.msgInfo
  22. }
  23. },
  24. actions: {
  25. setSocket(socket) {
  26. this.socket = socket
  27. },
  28. setBadgeNum(badgeNum) {
  29. this.badgeNum = badgeNum
  30. },
  31. addBadgeNum(num) {
  32. this.badgeNum += num
  33. },
  34. reduceBadgeNum(num) {
  35. let badgeNum = this.badgeNum - num
  36. if (badgeNum < 0) badgeNum = 0
  37. this.badgeNum = badgeNum
  38. },
  39. setMsgInfo(msgInfo) {
  40. this.msgInfo = msgInfo
  41. },
  42. setMsgInfoNum(num) {
  43. if (num || num === 0) {
  44. this.msgInfo.messageCount = num
  45. this.msgInfo.count = num
  46. this.badgeNum = num
  47. return
  48. }
  49. this.msgInfo.messageCount -= 1
  50. this.msgInfo.count = this.msgInfo.messageCount
  51. let badgeNum = this.badgeNum - 1
  52. if (badgeNum < 0) badgeNum = 0
  53. this.badgeNum = badgeNum
  54. },
  55. setFormUserId(formUserId) {
  56. this.formUserId = formUserId
  57. },
  58. sendMessage(data) {
  59. const item = {
  60. account: data.toAccount,
  61. headIcon: data.toHeadIcon,
  62. id: data.toUserId,
  63. latestDate: data.latestDate,
  64. latestMessage: data.toMessage,
  65. messageType: data.messageType,
  66. realName: data.toRealName,
  67. unreadMessage: 0
  68. }
  69. const addItem = {
  70. sendUserId: data.UserId,
  71. contentType: data.messageType,
  72. content: data.toMessage,
  73. sendTime: data.dateTime,
  74. method: data.method
  75. }
  76. uni.$emit('addMsg', addItem)
  77. uni.$emit('updateList', item)
  78. },
  79. receiveMessage(data) {
  80. if (this.formUserId === data.formUserId) {
  81. data.unreadMessage = 0
  82. const item = {
  83. sendUserId: data.formUserId,
  84. contentType: data.messageType,
  85. content: data.formMessage,
  86. sendTime: data.dateTime,
  87. method: data.method
  88. }
  89. uni.$emit('addMsg', item)
  90. } else {
  91. data.unreadMessage = 1
  92. this.addBadgeNum(1)
  93. }
  94. data.id = data.formUserId
  95. data.latestMessage = data.formMessage
  96. uni.$emit('updateList', data)
  97. },
  98. getMessageList(data) {
  99. uni.$emit('getMessageList', data)
  100. },
  101. messagePush(data) {
  102. this.msgInfo.messageText = data.title;
  103. this.msgInfo.messageCount += data.unreadNoticeCount;
  104. this.msgInfo.messageDate = data.messageDefaultTime
  105. this.addBadgeNum(data.unreadNoticeCount || 1)
  106. }
  107. },
  108. });
  109. export function useChatStoreWithOut() {
  110. return useChatStore(store);
  111. }