@x-edu/live-player 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/.browserslistrc +10 -10
  2. package/.eslintignore +8 -8
  3. package/.eslintrc.js +26 -26
  4. package/.gem-mine +11 -11
  5. package/.postcssrc.js +6 -6
  6. package/README.md +145 -145
  7. package/babel.config.js +33 -33
  8. package/dist/XEduLivePlayer.common.js +12161 -1154
  9. package/dist/XEduLivePlayerPre.common.js +12369 -1358
  10. package/doc/develop.md +23 -23
  11. package/gem-mine.config.js +86 -86
  12. package/jest.config.js +9 -9
  13. package/jsconfig.json +15 -15
  14. package/mock/helper.js +8 -8
  15. package/mock/index.js +34 -34
  16. package/package.json +99 -99
  17. package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
  18. package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
  19. package/public/3rd/ali-player/aliplayer-min.js +1 -1
  20. package/public/3rd/im-web-push/index.umd.js +14 -14
  21. package/public/JsBridge.js +1602 -1602
  22. package/public/fish/editor/themes/default/css/ueditor.css +1905 -1905
  23. package/public/fish/editor/third-party/codemirror/codemirror.css +104 -104
  24. package/public/fish/editor/third-party/codemirror/codemirror.js +3581 -3581
  25. package/public/fish/editor/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
  26. package/public/fish/editor/ueditor.all.min.js +16 -16
  27. package/public/fish/editor/ueditor.config.js +467 -467
  28. package/public/fish/icon/umd-4.1.2.js +1 -1
  29. package/public/fish/video/videoplayer.min.css +6 -6
  30. package/public/fish/video/videoplayer.min.js +31 -31
  31. package/public/fish/video/zh-CN.js +82 -82
  32. package/public/icon/demo.css +539 -539
  33. package/public/icon/demo_index.html +2189 -2189
  34. package/public/icon/iconfont.css +363 -363
  35. package/public/icon/iconfont.json +618 -618
  36. package/public/index.html +50 -50
  37. package/script/image/readme.md +77 -77
  38. package/script/postcss.js +48 -48
  39. package/src/App.jsx +24 -24
  40. package/src/asset/img/course/playing.svg +21 -21
  41. package/src/asset/img/icon-course-white.svg +3 -3
  42. package/src/asset/img/icon-course.svg +3 -3
  43. package/src/asset/img/icon-eye-white.svg +4 -4
  44. package/src/asset/img/icon-eye.svg +4 -4
  45. package/src/asset/img/icon-school-white.svg +3 -3
  46. package/src/asset/img/icon-school.svg +3 -3
  47. package/src/asset/img/loading.svg +52 -52
  48. package/src/asset/img/video-play.svg +6 -6
  49. package/src/asset/style/background.less +19 -19
  50. package/src/asset/style/banner.less +36 -36
  51. package/src/asset/style/base.less +74 -74
  52. package/src/asset/style/index.less +114 -114
  53. package/src/asset/style/reset-theme.less +141 -141
  54. package/src/asset/style/theme/index.less +55 -55
  55. package/src/asset/style/theme/party/global.less +20 -20
  56. package/src/asset/style/theme/party/override.less +57 -57
  57. package/src/asset/style/theme/test/global.less +18 -18
  58. package/src/asset/style/theme/test/override.less +45 -45
  59. package/src/asset/style/variable.less +12 -12
  60. package/src/component/AliPlayer/index.jsx +49 -49
  61. package/src/component/Avatar/index.jsx +50 -50
  62. package/src/component/Empty/index.jsx +34 -34
  63. package/src/component/Empty/index.module.less +37 -37
  64. package/src/component/IMChatroom/component/status/403.jsx +13 -13
  65. package/src/component/IMChatroom/component/status/404.jsx +13 -13
  66. package/src/component/IMChatroom/component/status/Error.jsx +23 -23
  67. package/src/component/IMChatroom/component/status/Loading.jsx +5 -5
  68. package/src/component/IMChatroom/config/app/config.js +118 -118
  69. package/src/component/IMChatroom/config/app/index.js +60 -60
  70. package/src/component/IMChatroom/config/env.js +5 -5
  71. package/src/component/IMChatroom/config/index.js +3 -3
  72. package/src/component/IMChatroom/config/request/config/base.js +124 -124
  73. package/src/component/IMChatroom/config/request/config/chatroom.js +26 -26
  74. package/src/component/IMChatroom/config/request/config/imCoreApi.js +21 -21
  75. package/src/component/IMChatroom/config/request/index.js +21 -21
  76. package/src/component/IMChatroom/config/request/proxy.js +39 -39
  77. package/src/component/IMChatroom/config/url.js +7 -7
  78. package/src/component/IMChatroom/constants/errorCode.js +9 -9
  79. package/src/component/IMChatroom/constants/index.js +84 -84
  80. package/src/component/IMChatroom/constants/origin.js +27 -27
  81. package/src/component/IMChatroom/context/chatroom.js +154 -154
  82. package/src/component/IMChatroom/context/connect.js +28 -28
  83. package/src/component/IMChatroom/i18n/en/index.json +73 -73
  84. package/src/component/IMChatroom/i18n/index.jsx +14 -14
  85. package/src/component/IMChatroom/i18n/language.js +9 -9
  86. package/src/component/IMChatroom/i18n/zh-CN/index.json +73 -73
  87. package/src/component/IMChatroom/index.jsx +49 -49
  88. package/src/component/IMChatroom/page/chat/index.jsx +27 -27
  89. package/src/component/IMChatroom/page/chat/messageEditor/index.jsx +375 -375
  90. package/src/component/IMChatroom/page/chat/messageList/index.jsx +354 -354
  91. package/src/component/IMChatroom/page/chat/stickedMessage/index.jsx +59 -59
  92. package/src/component/IMChatroom/page/chat/stickedMessage/style/index.module.less +7 -7
  93. package/src/component/IMChatroom/page/chat/style/index.module.less +51 -51
  94. package/src/component/IMChatroom/page/home/connect/index.jsx +188 -188
  95. package/src/component/IMChatroom/page/home/connect/status.jsx +124 -124
  96. package/src/component/IMChatroom/page/home/context/cmd.jsx +37 -37
  97. package/src/component/IMChatroom/page/home/context/index.jsx +67 -67
  98. package/src/component/IMChatroom/page/home/index.jsx +164 -164
  99. package/src/component/IMChatroom/page/home/notice/index.jsx +123 -123
  100. package/src/component/IMChatroom/page/home/notice/style/index.module.less +49 -49
  101. package/src/component/IMChatroom/page/home/style/index.module.less +110 -110
  102. package/src/component/IMChatroom/page/member/index.jsx +15 -15
  103. package/src/component/IMChatroom/page/member/memberCount/index.jsx +44 -44
  104. package/src/component/IMChatroom/page/member/memberList/index.jsx +121 -121
  105. package/src/component/IMChatroom/page/member/style/index.module.less +2 -2
  106. package/src/component/IMChatroom/sdk/bridge.js +39 -39
  107. package/src/component/IMChatroom/sdk/cs/constants.js +20 -20
  108. package/src/component/IMChatroom/sdk/cs/index.js +101 -101
  109. package/src/component/IMChatroom/sdk/imChatroom.js +15 -15
  110. package/src/component/IMChatroom/sdk/imcore/constants.js +128 -128
  111. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomDestroyed.js +5 -5
  112. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomInfoGetFail.js +5 -5
  113. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedByAdmin.js +5 -5
  114. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedBySelf.js +5 -5
  115. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginFail.js +5 -5
  116. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginSuccess.js +5 -5
  117. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogin.js +5 -5
  118. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogout.js +5 -5
  119. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnected.js +5 -5
  120. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnecting.js +5 -5
  121. package/src/component/IMChatroom/sdk/imcore/emitters/connectionDisconnect.js +5 -5
  122. package/src/component/IMChatroom/sdk/imcore/emitters/index.js +57 -57
  123. package/src/component/IMChatroom/sdk/imcore/emitters/messageReceive.js +36 -36
  124. package/src/component/IMChatroom/sdk/imcore/index.js +178 -178
  125. package/src/component/IMChatroom/sdk/imcore/interceptors/request.js +7 -7
  126. package/src/component/IMChatroom/sdk/imcore/interceptors/response.js +5 -5
  127. package/src/component/IMChatroom/sdk/imcore/plugins/getAuth.js +64 -64
  128. package/src/component/IMChatroom/sdk/imcore/plugins/getConversationId.js +20 -20
  129. package/src/component/IMChatroom/sdk/imcore/plugins/getExtInfo.js +10 -10
  130. package/src/component/IMChatroom/sdk/imcore/plugins/getLoginInfo.js +48 -48
  131. package/src/component/IMChatroom/sdk/imcore/plugins/getPlatformType.js +12 -12
  132. package/src/component/IMChatroom/sdk/imcore/plugins/index.js +22 -22
  133. package/src/component/IMChatroom/sdk/imcore/util/format.js +177 -177
  134. package/src/component/IMChatroom/sdk/imcore/util/parser.js +35 -35
  135. package/src/component/IMChatroom/sdk/oms.js +18 -18
  136. package/src/component/IMChatroom/sdk/uc.js +3 -3
  137. package/src/component/IMChatroom/subscription/channel/app.js +5 -5
  138. package/src/component/IMChatroom/subscription/channel/ctl.js +22 -22
  139. package/src/component/IMChatroom/subscription/channel/member.js +40 -40
  140. package/src/component/IMChatroom/subscription/channel/message.js +13 -13
  141. package/src/component/IMChatroom/subscription/channel/ntf.js +86 -86
  142. package/src/component/IMChatroom/subscription/channel/tel.js +5 -5
  143. package/src/component/IMChatroom/subscription/channel/websocket.js +5 -5
  144. package/src/component/IMChatroom/subscription/event.js +37 -37
  145. package/src/component/IMChatroom/subscription/index.js +19 -19
  146. package/src/component/IMChatroom/util/account.js +8 -8
  147. package/src/component/IMChatroom/util/chatroom.js +255 -255
  148. package/src/component/IMChatroom/util/jsonBigInt.js +5 -5
  149. package/src/component/IMChatroom/util/location.js +12 -12
  150. package/src/component/Icon/index.jsx +16 -16
  151. package/src/component/Icon/index.module.less +2 -2
  152. package/src/component/Pagination/LocalPagination.jsx +27 -27
  153. package/src/component/Pagination/RemotePagination.jsx +32 -32
  154. package/src/component/Pagination/index.jsx +31 -31
  155. package/src/component/Pagination/index.module.less +110 -110
  156. package/src/component/PlayerTip/index.jsx +34 -34
  157. package/src/component/VideoBase/index.jsx +242 -242
  158. package/src/component/VideoBase/style.less +65 -65
  159. package/src/component/VideoBase/utils.js +81 -81
  160. package/src/component/mixin.less +9 -9
  161. package/src/component/status/403.jsx +15 -15
  162. package/src/component/status/404/index.jsx +73 -73
  163. package/src/component/status/404/index.module.less +36 -36
  164. package/src/component/status/Error/error.module.less +13 -13
  165. package/src/component/status/Error/index.jsx +47 -47
  166. package/src/component/status/Loading/img/loading.svg +52 -52
  167. package/src/component/status/Loading/index.jsx +31 -31
  168. package/src/component/status/Loading/index.less +56 -56
  169. package/src/component/status/None/index.jsx +20 -20
  170. package/src/component/status/None/index.module.less +35 -35
  171. package/src/component/status/Status/index.jsx +26 -26
  172. package/src/component/status/Status/index.module.less +8 -8
  173. package/src/config/constant/commonUrl.js +2 -2
  174. package/src/config/constant/user.js +6 -6
  175. package/src/config/context/site-config.js +48 -48
  176. package/src/config/env/index.js +5 -5
  177. package/src/config/env/local/index.js +13 -13
  178. package/src/config/env/ncet-xedu/api.js +175 -175
  179. package/src/config/env/ncet-xedu/app.js +12 -12
  180. package/src/config/env/ncet-xedu/cs.js +8 -8
  181. package/src/config/env/ncet-xedu/index.js +14 -14
  182. package/src/config/env/ncet-xedu/push.js +5 -5
  183. package/src/config/env/preproduction/api.js +144 -144
  184. package/src/config/env/preproduction/app.js +12 -12
  185. package/src/config/env/preproduction/cs.js +8 -8
  186. package/src/config/env/preproduction/index.js +14 -14
  187. package/src/config/env/preproduction/push.js +5 -5
  188. package/src/config/env/product/api.js +113 -113
  189. package/src/config/env/product/app.js +12 -12
  190. package/src/config/env/product/cs.js +5 -5
  191. package/src/config/env/product/index.js +14 -14
  192. package/src/config/env/product/push.js +5 -5
  193. package/src/config/live.js +80 -80
  194. package/src/config/publicLive.js +53 -53
  195. package/src/config/request/assessments.js +24 -24
  196. package/src/config/request/config-center.js +8 -8
  197. package/src/config/request/helper.js +166 -166
  198. package/src/config/request/im-broadcasts.js +12 -12
  199. package/src/config/request/live-activity-gateway.js +8 -8
  200. package/src/config/request/live-activity.js +13 -13
  201. package/src/config/request/raw.js +6 -6
  202. package/src/config/request/x-cloud-web.js +13 -13
  203. package/src/config/request/x-proxy.js +34 -34
  204. package/src/demo/Detail.jsx +11 -11
  205. package/src/demo/List.jsx +64 -64
  206. package/src/demo/index.jsx +17 -17
  207. package/src/detail/LineSwitch/index.jsx +71 -71
  208. package/src/detail/LiveCountDown/index.jsx +44 -44
  209. package/src/detail/LiveCountDown/index.module.less +31 -31
  210. package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
  211. package/src/detail/LiveOnlineCount/index.jsx +68 -68
  212. package/src/detail/LiveOnlineCount/index.module.less +34 -34
  213. package/src/detail/LiveOnlineCount/util.js +74 -74
  214. package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
  215. package/src/detail/LiveStatus/index.jsx +202 -202
  216. package/src/detail/LiveStatus/index.module.less +192 -192
  217. package/src/detail/LiveVideo/config.js +37 -37
  218. package/src/detail/LiveVideo/index.jsx +188 -188
  219. package/src/detail/LiveVideo/index.module.less +41 -41
  220. package/src/detail/NotLoginChatroom/index.jsx +37 -37
  221. package/src/detail/NotLoginChatroom/index.module.less +46 -46
  222. package/src/detail/RecordVideo/index.jsx +150 -150
  223. package/src/detail/RecordVideo/index.module.less +31 -31
  224. package/src/detail/ReplayVideo/index.jsx +93 -93
  225. package/src/detail/ReplayVideo/index.module.less +65 -65
  226. package/src/detail/const.js +20 -20
  227. package/src/detail/hook/usePullSource.js +82 -82
  228. package/src/detail/hook/usePullState.js +51 -51
  229. package/src/detail/index.jsx +482 -482
  230. package/src/detail/index.module.less +188 -188
  231. package/src/hook/useAsync.js +84 -84
  232. package/src/hook/useGoToPage.js +83 -83
  233. package/src/hook/useInterval.js +28 -28
  234. package/src/hook/useIsMounted.js +17 -17
  235. package/src/hook/useModuleByRole.js +53 -53
  236. package/src/hook/usePageScrollable.js +52 -52
  237. package/src/hook/usePortal.js +83 -83
  238. package/src/hook/useScrollRestore/index.js +32 -32
  239. package/src/hook/useScrollRestore/scrollContext.js +20 -20
  240. package/src/hook/useTrackRef.js +11 -11
  241. package/src/hook/useWindowSize.js +28 -28
  242. package/src/hook/useZoom.js +47 -47
  243. package/src/index.js +10 -10
  244. package/src/lib/getLiveOnlineCount.js +10 -10
  245. package/src/lib/getServiceConfig.js +102 -102
  246. package/src/list/Empty/index.jsx +20 -20
  247. package/src/list/Empty/index.module.less +23 -23
  248. package/src/list/ListItem/Action/index.jsx +98 -98
  249. package/src/list/ListItem/Action/index.module.less +21 -21
  250. package/src/list/ListItem/img/dianzan.svg +4 -0
  251. package/src/list/ListItem/img/play.svg +15 -15
  252. package/src/list/ListItem/img/yiguankan.svg +3 -0
  253. package/src/list/ListItem/index.jsx +24 -1
  254. package/src/list/ListItem/index.module.less +146 -123
  255. package/src/list/index.jsx +80 -0
  256. package/src/list/index.module.less +35 -35
  257. package/src/service/common.js +73 -73
  258. package/src/service/content-mgr.js +73 -73
  259. package/src/service/im-group.js +12 -12
  260. package/src/service/im.js +7 -7
  261. package/src/service/imBroadcasts.js +33 -33
  262. package/src/service/like.js +134 -134
  263. package/src/service/manageApi.js +7 -7
  264. package/src/service/managePortal.js +6 -6
  265. package/src/service/myStudyRecord.js +93 -93
  266. package/src/service/navigation.js +47 -47
  267. package/src/service/ndMeeting.js +10 -10
  268. package/src/service/ndr.js +122 -122
  269. package/src/service/news.js +93 -93
  270. package/src/service/personalCenter.js +270 -270
  271. package/src/service/qualityCourse.js +31 -31
  272. package/src/service/recommend.js +81 -81
  273. package/src/service/school.js +323 -323
  274. package/src/service/search.js +170 -170
  275. package/src/service/site-config.js +7 -7
  276. package/src/service/socialCensor.js +45 -45
  277. package/src/service/specialEdu.js +31 -31
  278. package/src/service/suggestion.js +85 -85
  279. package/src/service/syncClassroom.js +321 -321
  280. package/src/service/tCourse.js +204 -204
  281. package/src/service/tchTraining.js +37 -37
  282. package/src/service/uc.js +45 -45
  283. package/src/util/app.js +1 -1
  284. package/src/util/array.js +3 -3
  285. package/src/util/auth/func.js +57 -57
  286. package/src/util/date.js +53 -53
  287. package/src/util/env.js +9 -9
  288. package/src/util/getTimestamp.js +10 -10
  289. package/src/util/hof.js +105 -105
  290. package/src/util/live/index.js +42 -42
  291. package/src/util/liveCountUtil.js +52 -0
  292. package/src/util/netUrl.js +35 -35
  293. package/src/util/object.js +13 -13
  294. package/src/util/push/index.js +58 -58
  295. package/src/util/request.js +227 -227
  296. package/src/util/type.js +17 -17
  297. package/src/util/url.js +203 -203
  298. package/src/util/video.js +26 -26
  299. package/test/setup.js +21 -21
  300. package/test/unit/component/header/logo.spec.jsx +8 -8
  301. package/test/unit/helper.jsx +25 -25
  302. package/test/unit/util/date.spec.js +40 -40
@@ -1,177 +1,177 @@
1
- import Long from 'long'
2
- import get from 'lodash/get'
3
-
4
- import jsonBigInt from '../../../util/jsonBigInt'
5
- import { getCurrentAccountId } from '../../../util/account'
6
-
7
- import { MessageType, MessageHeader } from '../constants'
8
- import parser from './parser'
9
-
10
- export const transferStringToLong = (value) => Long.fromString(value, true)
11
-
12
- export const transferLongToString = (value) => {
13
- if (typeof value === 'object') {
14
- const message = {
15
- ...value
16
- }
17
- Object.keys(message).forEach((key) => {
18
- if (Long.isLong(message[key])) {
19
- message[key] = message[key].toString()
20
- }
21
- })
22
- return message
23
- }
24
-
25
- return value.toString()
26
- }
27
-
28
- const getMessageSender = (_parsedContent) => {
29
- try {
30
- return JSON.parse(get(_parsedContent, `headers.${MessageHeader.ContentSender}`))
31
- } catch (e) {
32
- return null
33
- }
34
- }
35
-
36
- const parseContent = (content) => {
37
- const _parsedContent = parser.parse(content)
38
-
39
- const contentSender = getMessageSender(_parsedContent)
40
- if (contentSender) {
41
- _parsedContent.contentSender = contentSender
42
- }
43
-
44
- return _parsedContent
45
- }
46
-
47
- // 解析消息内容,返回解析结果
48
- export const parseMessageContent = (content) => {
49
- let _parsedContent
50
- if (content) {
51
- _parsedContent = typeof content === 'string' ? parseContent(content) : content
52
- } else {
53
- _parsedContent = {
54
- type: MessageType.Error,
55
- data: null
56
- }
57
- }
58
- return _parsedContent
59
- }
60
-
61
- export const parseMessage = (message, reserveMessage) => {
62
- const { content } = message
63
- let _parsedContent
64
- let _content = content
65
- if (content) {
66
- _parsedContent = typeof content === 'string' ? parseContent(content) : content
67
-
68
- if (_parsedContent.type === MessageType.Error && reserveMessage) {
69
- const reserveContent = reserveMessage.content
70
- if (reserveContent) {
71
- _content = reserveContent
72
- _parsedContent = parseContent(reserveContent)
73
- }
74
- }
75
- } else {
76
- _parsedContent = {
77
- type: MessageType.Error,
78
- data: null
79
- }
80
- }
81
-
82
- const parsedMessage = {
83
- ...message,
84
- _parsedContent,
85
- content: _content
86
- }
87
-
88
- if (_parsedContent.type === MessageType.FlexBox) {
89
- return transformFlexBoxMessage(parsedMessage)
90
- }
91
-
92
- console.log('parseMessage:', parsedMessage)
93
- return parsedMessage
94
- }
95
-
96
- export const parseMessages = (messages) => messages.map((message) => parseMessage(message))
97
-
98
- export const formatMessages = (messages) => parseMessages(messages.map((message) => ({
99
- ...message,
100
- _localInfo: {
101
- id: message.id,
102
- index: 0
103
- },
104
- _direction: message.from === getCurrentAccountId() ? 'up' : 'down'
105
- })))
106
-
107
- // flexbox/json 消息转换
108
- function transformFlexBoxMessage(message) {
109
- const headers = get(message, '_parsedContent.headers')
110
-
111
- // 改变消息类型
112
- headers[MessageHeader.ContentType] = `${MessageType.CustomFlexBox}/xml`
113
-
114
- // 移除消息头上设置的模板信息 - 坚决不认消息头的模板信息!!!
115
- delete headers[MessageHeader.LanguageTemplate]
116
- delete headers[MessageHeader.SupportLanguages]
117
- delete headers[MessageHeader.LanguageParameter]
118
-
119
- let flexbox = get(message, '_parsedContent.data.json.flexbox')
120
-
121
- // 将消息中的flexbox信息更新到模板信息中
122
- const attrs = get(message, 'attrs', [])
123
- const flexboxAttr = attrs.find((attr) => attr.key === 'flexbox')
124
- if (flexboxAttr && flexboxAttr.value) {
125
- const flexboxData = jsonBigInt.parse(flexboxAttr.value)
126
- const { state, ...others } = flexboxData
127
- flexbox = {
128
- ...flexbox,
129
- ...others,
130
- _flexBoxState: String(state || 0)
131
- }
132
- }
133
-
134
- const {
135
- templateId,
136
- 'support-languages': supportLanguages,
137
- 'parameter-value': parameterValue,
138
- 'default-template': defaultTemplate,
139
- _flexBoxState,
140
- ...data
141
- } = flexbox
142
-
143
- // 重新设置模板信息
144
- if (templateId) {
145
- headers[MessageHeader.LanguageTemplate] = templateId
146
- }
147
- if (supportLanguages) {
148
- headers[MessageHeader.SupportLanguages] = supportLanguages
149
- }
150
- if (parameterValue) {
151
- try {
152
- headers[MessageHeader.LanguageParameter] = JSON.stringify(parameterValue)
153
- } catch (e) {
154
- console.log('parse language parameter error: ', e)
155
- }
156
- }
157
-
158
- // 存储flexbox/json解析完后除去模板消息字段外的数据
159
- headers['flexbox-json-data'] = JSON.stringify(data)
160
-
161
- const headerString = Object.keys(headers).reduce((acc, key) => {
162
- const result = `${acc}${key}:${headers[key]}\r\n`
163
- return result
164
- }, '')
165
-
166
- // 转换成新的消息内容
167
- const content = `${headerString}\r\n${defaultTemplate || ''}`
168
-
169
- return {
170
- ...message,
171
- _flexBoxState, // 保存消息 state
172
- _flexBoxContent: message.content,
173
- _defaultContent: defaultTemplate ? content : '', // 有defaultTemplate时需要直接设置_defaultContent,这样翻译的时候没有找到语言时也能正确解析消息
174
- content,
175
- _parsedContent: parseMessageContent(content)
176
- }
177
- }
1
+ import Long from 'long'
2
+ import get from 'lodash/get'
3
+
4
+ import jsonBigInt from '../../../util/jsonBigInt'
5
+ import { getCurrentAccountId } from '../../../util/account'
6
+
7
+ import { MessageType, MessageHeader } from '../constants'
8
+ import parser from './parser'
9
+
10
+ export const transferStringToLong = (value) => Long.fromString(value, true)
11
+
12
+ export const transferLongToString = (value) => {
13
+ if (typeof value === 'object') {
14
+ const message = {
15
+ ...value
16
+ }
17
+ Object.keys(message).forEach((key) => {
18
+ if (Long.isLong(message[key])) {
19
+ message[key] = message[key].toString()
20
+ }
21
+ })
22
+ return message
23
+ }
24
+
25
+ return value.toString()
26
+ }
27
+
28
+ const getMessageSender = (_parsedContent) => {
29
+ try {
30
+ return JSON.parse(get(_parsedContent, `headers.${MessageHeader.ContentSender}`))
31
+ } catch (e) {
32
+ return null
33
+ }
34
+ }
35
+
36
+ const parseContent = (content) => {
37
+ const _parsedContent = parser.parse(content)
38
+
39
+ const contentSender = getMessageSender(_parsedContent)
40
+ if (contentSender) {
41
+ _parsedContent.contentSender = contentSender
42
+ }
43
+
44
+ return _parsedContent
45
+ }
46
+
47
+ // 解析消息内容,返回解析结果
48
+ export const parseMessageContent = (content) => {
49
+ let _parsedContent
50
+ if (content) {
51
+ _parsedContent = typeof content === 'string' ? parseContent(content) : content
52
+ } else {
53
+ _parsedContent = {
54
+ type: MessageType.Error,
55
+ data: null
56
+ }
57
+ }
58
+ return _parsedContent
59
+ }
60
+
61
+ export const parseMessage = (message, reserveMessage) => {
62
+ const { content } = message
63
+ let _parsedContent
64
+ let _content = content
65
+ if (content) {
66
+ _parsedContent = typeof content === 'string' ? parseContent(content) : content
67
+
68
+ if (_parsedContent.type === MessageType.Error && reserveMessage) {
69
+ const reserveContent = reserveMessage.content
70
+ if (reserveContent) {
71
+ _content = reserveContent
72
+ _parsedContent = parseContent(reserveContent)
73
+ }
74
+ }
75
+ } else {
76
+ _parsedContent = {
77
+ type: MessageType.Error,
78
+ data: null
79
+ }
80
+ }
81
+
82
+ const parsedMessage = {
83
+ ...message,
84
+ _parsedContent,
85
+ content: _content
86
+ }
87
+
88
+ if (_parsedContent.type === MessageType.FlexBox) {
89
+ return transformFlexBoxMessage(parsedMessage)
90
+ }
91
+
92
+ console.log('parseMessage:', parsedMessage)
93
+ return parsedMessage
94
+ }
95
+
96
+ export const parseMessages = (messages) => messages.map((message) => parseMessage(message))
97
+
98
+ export const formatMessages = (messages) => parseMessages(messages.map((message) => ({
99
+ ...message,
100
+ _localInfo: {
101
+ id: message.id,
102
+ index: 0
103
+ },
104
+ _direction: message.from === getCurrentAccountId() ? 'up' : 'down'
105
+ })))
106
+
107
+ // flexbox/json 消息转换
108
+ function transformFlexBoxMessage(message) {
109
+ const headers = get(message, '_parsedContent.headers')
110
+
111
+ // 改变消息类型
112
+ headers[MessageHeader.ContentType] = `${MessageType.CustomFlexBox}/xml`
113
+
114
+ // 移除消息头上设置的模板信息 - 坚决不认消息头的模板信息!!!
115
+ delete headers[MessageHeader.LanguageTemplate]
116
+ delete headers[MessageHeader.SupportLanguages]
117
+ delete headers[MessageHeader.LanguageParameter]
118
+
119
+ let flexbox = get(message, '_parsedContent.data.json.flexbox')
120
+
121
+ // 将消息中的flexbox信息更新到模板信息中
122
+ const attrs = get(message, 'attrs', [])
123
+ const flexboxAttr = attrs.find((attr) => attr.key === 'flexbox')
124
+ if (flexboxAttr && flexboxAttr.value) {
125
+ const flexboxData = jsonBigInt.parse(flexboxAttr.value)
126
+ const { state, ...others } = flexboxData
127
+ flexbox = {
128
+ ...flexbox,
129
+ ...others,
130
+ _flexBoxState: String(state || 0)
131
+ }
132
+ }
133
+
134
+ const {
135
+ templateId,
136
+ 'support-languages': supportLanguages,
137
+ 'parameter-value': parameterValue,
138
+ 'default-template': defaultTemplate,
139
+ _flexBoxState,
140
+ ...data
141
+ } = flexbox
142
+
143
+ // 重新设置模板信息
144
+ if (templateId) {
145
+ headers[MessageHeader.LanguageTemplate] = templateId
146
+ }
147
+ if (supportLanguages) {
148
+ headers[MessageHeader.SupportLanguages] = supportLanguages
149
+ }
150
+ if (parameterValue) {
151
+ try {
152
+ headers[MessageHeader.LanguageParameter] = JSON.stringify(parameterValue)
153
+ } catch (e) {
154
+ console.log('parse language parameter error: ', e)
155
+ }
156
+ }
157
+
158
+ // 存储flexbox/json解析完后除去模板消息字段外的数据
159
+ headers['flexbox-json-data'] = JSON.stringify(data)
160
+
161
+ const headerString = Object.keys(headers).reduce((acc, key) => {
162
+ const result = `${acc}${key}:${headers[key]}\r\n`
163
+ return result
164
+ }, '')
165
+
166
+ // 转换成新的消息内容
167
+ const content = `${headerString}\r\n${defaultTemplate || ''}`
168
+
169
+ return {
170
+ ...message,
171
+ _flexBoxState, // 保存消息 state
172
+ _flexBoxContent: message.content,
173
+ _defaultContent: defaultTemplate ? content : '', // 有defaultTemplate时需要直接设置_defaultContent,这样翻译的时候没有找到语言时也能正确解析消息
174
+ content,
175
+ _parsedContent: parseMessageContent(content)
176
+ }
177
+ }
@@ -1,35 +1,35 @@
1
- import MessageParser from '@sdp.nd/im-sdk-commons/lib/msg-parser'
2
-
3
- import getUCInstance from '../../uc'
4
- import cs from '../../cs'
5
- import { chatroomServiceName } from '../../cs/constants'
6
-
7
- export default new MessageParser({
8
- base: {
9
- getDefaultEmotionUrl: (
10
- smileyData
11
- ) => {
12
- const { filename } = smileyData.data
13
- return `/im-chatroom/smiley/sys/${filename}.gif`
14
- },
15
- getPublicEmojiURL: ({
16
- filename
17
- }) => `/im-chatroom/smiley/emoji/${filename}`,
18
- getPublicDownloadURL: (data) => {
19
- const { id: dentryId, ...other } = data
20
- return cs.getPublicDownloadURL({
21
- serviceName: chatroomServiceName,
22
- dentryId,
23
- ...other
24
- })
25
- },
26
- getUserAvatarUrl: (uri) => `${getUCInstance().getAvatarURL({
27
- userId: uri,
28
- size: 80
29
- })}&_=${Date.now()}`
30
- },
31
- highlight: {
32
- keyword: '',
33
- className: ''
34
- }
35
- })
1
+ import MessageParser from '@sdp.nd/im-sdk-commons/lib/msg-parser'
2
+
3
+ import getUCInstance from '../../uc'
4
+ import cs from '../../cs'
5
+ import { chatroomServiceName } from '../../cs/constants'
6
+
7
+ export default new MessageParser({
8
+ base: {
9
+ getDefaultEmotionUrl: (
10
+ smileyData
11
+ ) => {
12
+ const { filename } = smileyData.data
13
+ return `/im-chatroom/smiley/sys/${filename}.gif`
14
+ },
15
+ getPublicEmojiURL: ({
16
+ filename
17
+ }) => `/im-chatroom/smiley/emoji/${filename}`,
18
+ getPublicDownloadURL: (data) => {
19
+ const { id: dentryId, ...other } = data
20
+ return cs.getPublicDownloadURL({
21
+ serviceName: chatroomServiceName,
22
+ dentryId,
23
+ ...other
24
+ })
25
+ },
26
+ getUserAvatarUrl: (uri) => `${getUCInstance().getAvatarURL({
27
+ userId: uri,
28
+ size: 80
29
+ })}&_=${Date.now()}`
30
+ },
31
+ highlight: {
32
+ keyword: '',
33
+ className: ''
34
+ }
35
+ })
@@ -1,18 +1,18 @@
1
- import { getUserInfo } from '@/service/im'
2
-
3
- const prefix = '__user_info'
4
-
5
- export default async function getUserInfoWithCache(userId) {
6
- let cacheUser = sessionStorage.getItem(`${prefix}-${userId}`)
7
- if (cacheUser) {
8
- cacheUser = JSON.parse(cacheUser)
9
- return cacheUser
10
- }
11
-
12
- return getUserInfo(userId).then((user) => {
13
- if (user) {
14
- sessionStorage.setItem(`${prefix}-${userId}`, JSON.stringify(user))
15
- }
16
- return user
17
- })
18
- }
1
+ import { getUserInfo } from '@/service/im'
2
+
3
+ const prefix = '__user_info'
4
+
5
+ export default async function getUserInfoWithCache(userId) {
6
+ let cacheUser = sessionStorage.getItem(`${prefix}-${userId}`)
7
+ if (cacheUser) {
8
+ cacheUser = JSON.parse(cacheUser)
9
+ return cacheUser
10
+ }
11
+
12
+ return getUserInfo(userId).then((user) => {
13
+ if (user) {
14
+ sessionStorage.setItem(`${prefix}-${userId}`, JSON.stringify(user))
15
+ }
16
+ return user
17
+ })
18
+ }
@@ -1,3 +1,3 @@
1
- import { getUCInstance } from '@/util/auth/func'
2
-
3
- export default getUCInstance
1
+ import { getUCInstance } from '@/util/auth/func'
2
+
3
+ export default getUCInstance
@@ -1,5 +1,5 @@
1
- import postal from 'postal'
2
-
3
- const appChannel = postal.channel('app')
4
-
5
- export default appChannel
1
+ import postal from 'postal'
2
+
3
+ const appChannel = postal.channel('app')
4
+
5
+ export default appChannel
@@ -1,22 +1,22 @@
1
- import postal from 'postal'
2
- import get from 'lodash/get'
3
- import { actions } from '../../context/chatroom'
4
-
5
- import { CTL_CMD } from '../../constants'
6
-
7
- const ctlChannel = postal.channel('ctl')
8
-
9
- // 置顶聊天室消息
10
- ctlChannel.subscribe(CTL_CMD.LIVE_TOP_MESSAGES, (message) => {
11
- const messages = get(message, '_parsedContent.data.json.ctl.message.items', [])
12
- if (messages.length) {
13
- actions.setChatroomStickedMessages(messages)
14
- }
15
- })
16
-
17
- // 删除聊天室置顶消息
18
- ctlChannel.subscribe(CTL_CMD.TOP_MESSAGES, () => {
19
- actions.setChatroomStickedMessages()
20
- })
21
-
22
- export default ctlChannel
1
+ import postal from 'postal'
2
+ import get from 'lodash/get'
3
+ import { actions } from '../../context/chatroom'
4
+
5
+ import { CTL_CMD } from '../../constants'
6
+
7
+ const ctlChannel = postal.channel('ctl')
8
+
9
+ // 置顶聊天室消息
10
+ ctlChannel.subscribe(CTL_CMD.LIVE_TOP_MESSAGES, (message) => {
11
+ const messages = get(message, '_parsedContent.data.json.ctl.message.items', [])
12
+ if (messages.length) {
13
+ actions.setChatroomStickedMessages(messages)
14
+ }
15
+ })
16
+
17
+ // 删除聊天室置顶消息
18
+ ctlChannel.subscribe(CTL_CMD.TOP_MESSAGES, () => {
19
+ actions.setChatroomStickedMessages()
20
+ })
21
+
22
+ export default ctlChannel
@@ -1,40 +1,40 @@
1
- import postal from 'postal'
2
- import { COMMON_LIST_UPDATE_ACTION } from '@sdp.nd/im-web-components'
3
-
4
- import EVENT from '../event'
5
-
6
- const memberChannel = postal.channel('member')
7
-
8
- // 聊天室成员登录
9
- memberChannel.subscribe(EVENT.MEMBER_LOGIN, (message) => {
10
- const { members = [], membercount } = message
11
-
12
- if (members.length) {
13
- memberChannel.publish(EVENT.COMMON_LIST_UPDATE, {
14
- action: COMMON_LIST_UPDATE_ACTION.ADD,
15
- items: members.map(({ uid }) => ({
16
- user_id: uid
17
- }))
18
- })
19
- }
20
-
21
- memberChannel.publish(EVENT.CHATROOM_MEMBER_COUNT_UPDATE, membercount)
22
- })
23
-
24
- // 聊天室成员登出
25
- memberChannel.subscribe(EVENT.MEMBER_LOGOUT, (message) => {
26
- const { members = [], membercount } = message
27
-
28
- if (members.length) {
29
- memberChannel.publish(EVENT.COMMON_LIST_UPDATE, {
30
- action: COMMON_LIST_UPDATE_ACTION.DELETE,
31
- items: members.map(({ uid }) => ({
32
- user_id: uid
33
- }))
34
- })
35
- }
36
-
37
- memberChannel.publish(EVENT.CHATROOM_MEMBER_COUNT_UPDATE, membercount)
38
- })
39
-
40
- export default memberChannel
1
+ import postal from 'postal'
2
+ import { COMMON_LIST_UPDATE_ACTION } from '@sdp.nd/im-web-components'
3
+
4
+ import EVENT from '../event'
5
+
6
+ const memberChannel = postal.channel('member')
7
+
8
+ // 聊天室成员登录
9
+ memberChannel.subscribe(EVENT.MEMBER_LOGIN, (message) => {
10
+ const { members = [], membercount } = message
11
+
12
+ if (members.length) {
13
+ memberChannel.publish(EVENT.COMMON_LIST_UPDATE, {
14
+ action: COMMON_LIST_UPDATE_ACTION.ADD,
15
+ items: members.map(({ uid }) => ({
16
+ user_id: uid
17
+ }))
18
+ })
19
+ }
20
+
21
+ memberChannel.publish(EVENT.CHATROOM_MEMBER_COUNT_UPDATE, membercount)
22
+ })
23
+
24
+ // 聊天室成员登出
25
+ memberChannel.subscribe(EVENT.MEMBER_LOGOUT, (message) => {
26
+ const { members = [], membercount } = message
27
+
28
+ if (members.length) {
29
+ memberChannel.publish(EVENT.COMMON_LIST_UPDATE, {
30
+ action: COMMON_LIST_UPDATE_ACTION.DELETE,
31
+ items: members.map(({ uid }) => ({
32
+ user_id: uid
33
+ }))
34
+ })
35
+ }
36
+
37
+ memberChannel.publish(EVENT.CHATROOM_MEMBER_COUNT_UPDATE, membercount)
38
+ })
39
+
40
+ export default memberChannel
@@ -1,13 +1,13 @@
1
- import postal from 'postal'
2
- import { message as messageTip } from 'fish'
3
-
4
- import EVENT from '../event'
5
-
6
- const messageChannel = postal.channel('message')
7
-
8
- messageChannel.subscribe(EVENT.COMMON_TOAST_TIP_MAKE, (data) => {
9
- const { type, message } = data
10
- messageTip[type](message)
11
- })
12
-
13
- export default messageChannel
1
+ import postal from 'postal'
2
+ import { message as messageTip } from 'fish'
3
+
4
+ import EVENT from '../event'
5
+
6
+ const messageChannel = postal.channel('message')
7
+
8
+ messageChannel.subscribe(EVENT.COMMON_TOAST_TIP_MAKE, (data) => {
9
+ const { type, message } = data
10
+ messageTip[type](message)
11
+ })
12
+
13
+ export default messageChannel