@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,255 +1,255 @@
1
- import React from 'react'
2
- import get from 'lodash/get'
3
- import intl from '../i18n'
4
-
5
- import { USER_ROLE, BAN_TYPE, MESSAGE_ACTION, MESSAGE_TYPE } from '../constants'
6
- import bridge from '../sdk/bridge'
7
- import appConfig from '../config/app'
8
-
9
- import { getCurrentAccountId, isCurrentAccountId } from './account'
10
-
11
- const prefix = 'im-chat-room'
12
-
13
- export const setChatroom = (data) => {
14
- if (data) {
15
- sessionStorage.setItem(prefix, JSON.stringify(data))
16
- } else {
17
- sessionStorage.removeItem(prefix)
18
- }
19
- }
20
-
21
- export const getChatroom = () => {
22
- const value = sessionStorage.getItem(prefix)
23
- if (value) {
24
- try {
25
- return JSON.parse(value)
26
- } catch (e) { console.log('parse chatroom error') }
27
- }
28
- }
29
-
30
- export const setChatroomConversationId = (data) => {
31
- if (data) {
32
- sessionStorage.setItem(`${prefix}-id`, get(data, 'room.convid'))
33
- } else {
34
- sessionStorage.removeItem(`${prefix}-id`)
35
- }
36
- }
37
-
38
- export const getChatroomConversationId = () => {
39
- const value = sessionStorage.getItem(`${prefix}-id`)
40
- if (value) {
41
- return value
42
- }
43
- }
44
-
45
- export const setChatroomToken = (data) => {
46
- if (data) {
47
- sessionStorage.setItem(`${prefix}-token`, data.token)
48
- } else {
49
- sessionStorage.removeItem(`${prefix}-token`)
50
- }
51
- }
52
-
53
- export const getChatroomToken = () => {
54
- const value = sessionStorage.getItem(`${prefix}-token`)
55
- if (value) {
56
- return value
57
- }
58
- }
59
-
60
- export const isBaned = (uid, ban) => {
61
- const { type, items } = ban
62
- if (type === BAN_TYPE.BLACK) {
63
- return items.some((item) => item.user_id === uid)
64
- } else {
65
- return !items.some((item) => item.user_id === uid)
66
- }
67
- }
68
-
69
- export const getCurrentAccountBanedTip = (ban) => {
70
- if (!isBaned(getCurrentAccountId(), ban)) {
71
- return ''
72
- }
73
-
74
- const banedIconUrl = appConfig.get('messageEditor.banedIconUrl')
75
- if (!banedIconUrl) {
76
- return intl.get('editor.disabled.baned')
77
- }
78
-
79
- return (
80
- <div>
81
- <img src={banedIconUrl} />
82
- <div>{intl.get('editor.disabled.baned')}</div>
83
- </div>
84
- )
85
- }
86
-
87
- export const getOwnerActionRights = (options) => {
88
- const {
89
- uid,
90
- message,
91
- actionKeys,
92
- ban,
93
- stickedMessages,
94
- callback
95
- } = options
96
-
97
- const keys = [
98
- MESSAGE_ACTION.DELETE
99
- ]
100
-
101
- if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
102
- keys.push(MESSAGE_ACTION.COPY)
103
- }
104
-
105
- const messageId = message.id
106
- if (messageId && !stickedMessages.some((t) => t.conv_msg_id === messageId)) {
107
- keys.push(MESSAGE_ACTION.TOP_MESSAGE)
108
- }
109
-
110
- if (isCurrentAccountId(uid)) {
111
- keys.push(MESSAGE_ACTION.RECALL)
112
- } else {
113
- keys.push(MESSAGE_ACTION.KICK)
114
-
115
- const _isBaned = isBaned(uid, ban)
116
- if (ban.type === BAN_TYPE.BLACK) {
117
- if (_isBaned) {
118
- keys.push(MESSAGE_ACTION.CANCEL_FORBIDDEN)
119
- } else {
120
- keys.push(MESSAGE_ACTION.FORBIDDEN)
121
- }
122
- } else if (_isBaned) {
123
- keys.push(MESSAGE_ACTION.ALLOW_SPEECH)
124
- } else {
125
- keys.push(MESSAGE_ACTION.CANCEL_ALLOW_SPEECH)
126
- }
127
- }
128
- callback(
129
- keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
130
- )
131
- }
132
-
133
- export const getAdminActionRights = (options) => {
134
- const {
135
- uid,
136
- message,
137
- actionKeys,
138
- owner,
139
- admins,
140
- ban,
141
- callback
142
- } = options
143
-
144
- const keys = [
145
- MESSAGE_ACTION.DELETE
146
- ]
147
-
148
- if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
149
- keys.push(MESSAGE_ACTION.COPY)
150
- }
151
-
152
- if (isCurrentAccountId(uid)) {
153
- keys.push(MESSAGE_ACTION.RECALL)
154
- } else if (uid !== owner.uid && !admins.some((admin) => admin.user_id === uid)) {
155
- keys.push(MESSAGE_ACTION.KICK)
156
-
157
- const _isBaned = isBaned(uid, ban)
158
- if (ban.type === BAN_TYPE.BLACK) {
159
- if (_isBaned) {
160
- keys.push(MESSAGE_ACTION.CANCEL_FORBIDDEN)
161
- } else {
162
- keys.push(MESSAGE_ACTION.FORBIDDEN)
163
- }
164
- } else if (_isBaned) {
165
- keys.push(MESSAGE_ACTION.ALLOW_SPEECH)
166
- } else {
167
- keys.push(MESSAGE_ACTION.CANCEL_ALLOW_SPEECH)
168
- }
169
- }
170
-
171
- callback(
172
- keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
173
- )
174
- }
175
-
176
- export const getNormalActionRights = (options) => {
177
- const {
178
- uid,
179
- message,
180
- actionKeys,
181
- callback
182
- } = options
183
-
184
- const keys = [
185
- MESSAGE_ACTION.DELETE
186
- ]
187
-
188
- if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
189
- keys.push(MESSAGE_ACTION.COPY)
190
- }
191
-
192
- if (isCurrentAccountId(uid)) {
193
- keys.push(MESSAGE_ACTION.RECALL)
194
- }
195
-
196
- callback(
197
- keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
198
- )
199
- }
200
-
201
- export const getActionRights = (options, hasCustom) => {
202
- console.log('getActionRights', options)
203
- if (hasCustom) {
204
- const { callback, ...others } = options
205
- bridge.register('getActionRights', others).then((keys) => {
206
- callback(keys)
207
- })
208
- return
209
- }
210
-
211
- switch (options.userRole) {
212
- case USER_ROLE.OWNER:
213
- getOwnerActionRights(options)
214
- break
215
- case USER_ROLE.ADMIN:
216
- getAdminActionRights(options)
217
- break
218
- default:
219
- getNormalActionRights(options)
220
- break
221
- }
222
- }
223
-
224
- export const getTags = (options, hasCustom) => {
225
- if (hasCustom) {
226
- const { callback, ...others } = options
227
- bridge.register('getTags', others).then((tags) => {
228
- callback(tags)
229
- })
230
- return
231
- }
232
- const {
233
- uid,
234
- owner,
235
- admins,
236
- ban,
237
- callback
238
- } = options
239
-
240
- const tags = []
241
-
242
- if (isBaned(uid, ban)) {
243
- tags.push(intl.get('tag.baned'))
244
- }
245
-
246
- if (uid === owner.uid) {
247
- tags.push(intl.get(`tag.role.${USER_ROLE.OWNER}`))
248
- }
249
-
250
- if (admins.some((admin) => admin.user_id === uid)) {
251
- tags.push(intl.get(`tag.role.${USER_ROLE.ADMIN}`))
252
- }
253
-
254
- callback(tags)
255
- }
1
+ import React from 'react'
2
+ import get from 'lodash/get'
3
+ import intl from '../i18n'
4
+
5
+ import { USER_ROLE, BAN_TYPE, MESSAGE_ACTION, MESSAGE_TYPE } from '../constants'
6
+ import bridge from '../sdk/bridge'
7
+ import appConfig from '../config/app'
8
+
9
+ import { getCurrentAccountId, isCurrentAccountId } from './account'
10
+
11
+ const prefix = 'im-chat-room'
12
+
13
+ export const setChatroom = (data) => {
14
+ if (data) {
15
+ sessionStorage.setItem(prefix, JSON.stringify(data))
16
+ } else {
17
+ sessionStorage.removeItem(prefix)
18
+ }
19
+ }
20
+
21
+ export const getChatroom = () => {
22
+ const value = sessionStorage.getItem(prefix)
23
+ if (value) {
24
+ try {
25
+ return JSON.parse(value)
26
+ } catch (e) { console.log('parse chatroom error') }
27
+ }
28
+ }
29
+
30
+ export const setChatroomConversationId = (data) => {
31
+ if (data) {
32
+ sessionStorage.setItem(`${prefix}-id`, get(data, 'room.convid'))
33
+ } else {
34
+ sessionStorage.removeItem(`${prefix}-id`)
35
+ }
36
+ }
37
+
38
+ export const getChatroomConversationId = () => {
39
+ const value = sessionStorage.getItem(`${prefix}-id`)
40
+ if (value) {
41
+ return value
42
+ }
43
+ }
44
+
45
+ export const setChatroomToken = (data) => {
46
+ if (data) {
47
+ sessionStorage.setItem(`${prefix}-token`, data.token)
48
+ } else {
49
+ sessionStorage.removeItem(`${prefix}-token`)
50
+ }
51
+ }
52
+
53
+ export const getChatroomToken = () => {
54
+ const value = sessionStorage.getItem(`${prefix}-token`)
55
+ if (value) {
56
+ return value
57
+ }
58
+ }
59
+
60
+ export const isBaned = (uid, ban) => {
61
+ const { type, items } = ban
62
+ if (type === BAN_TYPE.BLACK) {
63
+ return items.some((item) => item.user_id === uid)
64
+ } else {
65
+ return !items.some((item) => item.user_id === uid)
66
+ }
67
+ }
68
+
69
+ export const getCurrentAccountBanedTip = (ban) => {
70
+ if (!isBaned(getCurrentAccountId(), ban)) {
71
+ return ''
72
+ }
73
+
74
+ const banedIconUrl = appConfig.get('messageEditor.banedIconUrl')
75
+ if (!banedIconUrl) {
76
+ return intl.get('editor.disabled.baned')
77
+ }
78
+
79
+ return (
80
+ <div>
81
+ <img src={banedIconUrl} />
82
+ <div>{intl.get('editor.disabled.baned')}</div>
83
+ </div>
84
+ )
85
+ }
86
+
87
+ export const getOwnerActionRights = (options) => {
88
+ const {
89
+ uid,
90
+ message,
91
+ actionKeys,
92
+ ban,
93
+ stickedMessages,
94
+ callback
95
+ } = options
96
+
97
+ const keys = [
98
+ MESSAGE_ACTION.DELETE
99
+ ]
100
+
101
+ if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
102
+ keys.push(MESSAGE_ACTION.COPY)
103
+ }
104
+
105
+ const messageId = message.id
106
+ if (messageId && !stickedMessages.some((t) => t.conv_msg_id === messageId)) {
107
+ keys.push(MESSAGE_ACTION.TOP_MESSAGE)
108
+ }
109
+
110
+ if (isCurrentAccountId(uid)) {
111
+ keys.push(MESSAGE_ACTION.RECALL)
112
+ } else {
113
+ keys.push(MESSAGE_ACTION.KICK)
114
+
115
+ const _isBaned = isBaned(uid, ban)
116
+ if (ban.type === BAN_TYPE.BLACK) {
117
+ if (_isBaned) {
118
+ keys.push(MESSAGE_ACTION.CANCEL_FORBIDDEN)
119
+ } else {
120
+ keys.push(MESSAGE_ACTION.FORBIDDEN)
121
+ }
122
+ } else if (_isBaned) {
123
+ keys.push(MESSAGE_ACTION.ALLOW_SPEECH)
124
+ } else {
125
+ keys.push(MESSAGE_ACTION.CANCEL_ALLOW_SPEECH)
126
+ }
127
+ }
128
+ callback(
129
+ keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
130
+ )
131
+ }
132
+
133
+ export const getAdminActionRights = (options) => {
134
+ const {
135
+ uid,
136
+ message,
137
+ actionKeys,
138
+ owner,
139
+ admins,
140
+ ban,
141
+ callback
142
+ } = options
143
+
144
+ const keys = [
145
+ MESSAGE_ACTION.DELETE
146
+ ]
147
+
148
+ if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
149
+ keys.push(MESSAGE_ACTION.COPY)
150
+ }
151
+
152
+ if (isCurrentAccountId(uid)) {
153
+ keys.push(MESSAGE_ACTION.RECALL)
154
+ } else if (uid !== owner.uid && !admins.some((admin) => admin.user_id === uid)) {
155
+ keys.push(MESSAGE_ACTION.KICK)
156
+
157
+ const _isBaned = isBaned(uid, ban)
158
+ if (ban.type === BAN_TYPE.BLACK) {
159
+ if (_isBaned) {
160
+ keys.push(MESSAGE_ACTION.CANCEL_FORBIDDEN)
161
+ } else {
162
+ keys.push(MESSAGE_ACTION.FORBIDDEN)
163
+ }
164
+ } else if (_isBaned) {
165
+ keys.push(MESSAGE_ACTION.ALLOW_SPEECH)
166
+ } else {
167
+ keys.push(MESSAGE_ACTION.CANCEL_ALLOW_SPEECH)
168
+ }
169
+ }
170
+
171
+ callback(
172
+ keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
173
+ )
174
+ }
175
+
176
+ export const getNormalActionRights = (options) => {
177
+ const {
178
+ uid,
179
+ message,
180
+ actionKeys,
181
+ callback
182
+ } = options
183
+
184
+ const keys = [
185
+ MESSAGE_ACTION.DELETE
186
+ ]
187
+
188
+ if (get(message, '_parsedContent.type') === MESSAGE_TYPE.TEXT) {
189
+ keys.push(MESSAGE_ACTION.COPY)
190
+ }
191
+
192
+ if (isCurrentAccountId(uid)) {
193
+ keys.push(MESSAGE_ACTION.RECALL)
194
+ }
195
+
196
+ callback(
197
+ keys.filter((key) => actionKeys.some((actionKey) => key === actionKey))
198
+ )
199
+ }
200
+
201
+ export const getActionRights = (options, hasCustom) => {
202
+ console.log('getActionRights', options)
203
+ if (hasCustom) {
204
+ const { callback, ...others } = options
205
+ bridge.register('getActionRights', others).then((keys) => {
206
+ callback(keys)
207
+ })
208
+ return
209
+ }
210
+
211
+ switch (options.userRole) {
212
+ case USER_ROLE.OWNER:
213
+ getOwnerActionRights(options)
214
+ break
215
+ case USER_ROLE.ADMIN:
216
+ getAdminActionRights(options)
217
+ break
218
+ default:
219
+ getNormalActionRights(options)
220
+ break
221
+ }
222
+ }
223
+
224
+ export const getTags = (options, hasCustom) => {
225
+ if (hasCustom) {
226
+ const { callback, ...others } = options
227
+ bridge.register('getTags', others).then((tags) => {
228
+ callback(tags)
229
+ })
230
+ return
231
+ }
232
+ const {
233
+ uid,
234
+ owner,
235
+ admins,
236
+ ban,
237
+ callback
238
+ } = options
239
+
240
+ const tags = []
241
+
242
+ if (isBaned(uid, ban)) {
243
+ tags.push(intl.get('tag.baned'))
244
+ }
245
+
246
+ if (uid === owner.uid) {
247
+ tags.push(intl.get(`tag.role.${USER_ROLE.OWNER}`))
248
+ }
249
+
250
+ if (admins.some((admin) => admin.user_id === uid)) {
251
+ tags.push(intl.get(`tag.role.${USER_ROLE.ADMIN}`))
252
+ }
253
+
254
+ callback(tags)
255
+ }
@@ -1,5 +1,5 @@
1
- import jsonBigInt from 'json-bigint'
2
-
3
- export default jsonBigInt({
4
- storeAsString: true
5
- })
1
+ import jsonBigInt from 'json-bigint'
2
+
3
+ export default jsonBigInt({
4
+ storeAsString: true
5
+ })
@@ -1,12 +1,12 @@
1
- import Url from 'browser-url'
2
-
3
- const requireSearchKeys = [
4
- 'sdp-app-id',
5
- 'room-id'
6
- ]
7
-
8
- // eslint-disable-next-line import/prefer-default-export
9
- export const validateLocationSearch = () => {
10
- const urlData = new Url(window.location.href)
11
- return requireSearchKeys.find((key) => !urlData.query[key])
12
- }
1
+ import Url from 'browser-url'
2
+
3
+ const requireSearchKeys = [
4
+ 'sdp-app-id',
5
+ 'room-id'
6
+ ]
7
+
8
+ // eslint-disable-next-line import/prefer-default-export
9
+ export const validateLocationSearch = () => {
10
+ const urlData = new Url(window.location.href)
11
+ return requireSearchKeys.find((key) => !urlData.query[key])
12
+ }
@@ -1,16 +1,16 @@
1
- import React from 'react'
2
- import classNames from 'classnames'
3
- import style from './index.module.less'
4
-
5
- export default function Icon({
6
- className,
7
- type
8
- }) {
9
- return (
10
- <svg
11
- className={classNames(style.icon, className)}
12
- >
13
- <use xlinkHref={`#${type}`} />
14
- </svg>
15
- )
16
- }
1
+ import React from 'react'
2
+ import classNames from 'classnames'
3
+ import style from './index.module.less'
4
+
5
+ export default function Icon({
6
+ className,
7
+ type
8
+ }) {
9
+ return (
10
+ <svg
11
+ className={classNames(style.icon, className)}
12
+ >
13
+ <use xlinkHref={`#${type}`} />
14
+ </svg>
15
+ )
16
+ }
@@ -1,3 +1,3 @@
1
- .icon {
2
- fill: currentColor;
1
+ .icon {
2
+ fill: currentColor;
3
3
  }
@@ -1,27 +1,27 @@
1
- import React, { useState } from 'react'
2
- import Pagination from './index'
3
-
4
- export default function LocalPagination({
5
- data,
6
- pageSize,
7
- defaultPage = 1,
8
- renderData,
9
- ...restProps
10
- }) {
11
- const [currentPage, setCurrentPage] = useState(defaultPage)
12
- const total = data.length
13
- const pageData = data.slice((currentPage - 1) * pageSize, currentPage * pageSize)
14
-
15
- return (
16
- <>
17
- {pageData.map((dataItem, index) => renderData(dataItem, index))}
18
- <Pagination
19
- total={total}
20
- current={currentPage}
21
- pageSize={pageSize}
22
- onChange={setCurrentPage}
23
- {...restProps}
24
- />
25
- </>
26
- )
27
- }
1
+ import React, { useState } from 'react'
2
+ import Pagination from './index'
3
+
4
+ export default function LocalPagination({
5
+ data,
6
+ pageSize,
7
+ defaultPage = 1,
8
+ renderData,
9
+ ...restProps
10
+ }) {
11
+ const [currentPage, setCurrentPage] = useState(defaultPage)
12
+ const total = data.length
13
+ const pageData = data.slice((currentPage - 1) * pageSize, currentPage * pageSize)
14
+
15
+ return (
16
+ <>
17
+ {pageData.map((dataItem, index) => renderData(dataItem, index))}
18
+ <Pagination
19
+ total={total}
20
+ current={currentPage}
21
+ pageSize={pageSize}
22
+ onChange={setCurrentPage}
23
+ {...restProps}
24
+ />
25
+ </>
26
+ )
27
+ }