@x-edu/live-player 0.0.21 → 0.0.23

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 (299) 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/doc/develop.md +23 -23
  9. package/gem-mine.config.js +86 -86
  10. package/jest.config.js +9 -9
  11. package/jsconfig.json +15 -15
  12. package/mock/helper.js +8 -8
  13. package/mock/index.js +34 -34
  14. package/package.json +99 -99
  15. package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
  16. package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
  17. package/public/3rd/ali-player/aliplayer-min.js +1 -1
  18. package/public/3rd/im-web-push/index.umd.js +14 -14
  19. package/public/JsBridge.js +1602 -1602
  20. package/public/fish/editor/themes/default/css/ueditor.css +1905 -1905
  21. package/public/fish/editor/third-party/codemirror/codemirror.css +104 -104
  22. package/public/fish/editor/third-party/codemirror/codemirror.js +3581 -3581
  23. package/public/fish/editor/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
  24. package/public/fish/editor/ueditor.all.min.js +16 -16
  25. package/public/fish/editor/ueditor.config.js +467 -467
  26. package/public/fish/icon/umd-4.1.2.js +1 -1
  27. package/public/fish/video/videoplayer.min.css +6 -6
  28. package/public/fish/video/videoplayer.min.js +31 -31
  29. package/public/fish/video/zh-CN.js +82 -82
  30. package/public/icon/demo.css +539 -539
  31. package/public/icon/demo_index.html +2189 -2189
  32. package/public/icon/iconfont.css +363 -363
  33. package/public/icon/iconfont.json +618 -618
  34. package/public/index.html +50 -50
  35. package/script/image/readme.md +77 -77
  36. package/script/postcss.js +48 -48
  37. package/src/App.jsx +24 -24
  38. package/src/asset/img/course/playing.svg +21 -21
  39. package/src/asset/img/icon-course-white.svg +3 -3
  40. package/src/asset/img/icon-course.svg +3 -3
  41. package/src/asset/img/icon-eye-white.svg +4 -4
  42. package/src/asset/img/icon-eye.svg +4 -4
  43. package/src/asset/img/icon-school-white.svg +3 -3
  44. package/src/asset/img/icon-school.svg +3 -3
  45. package/src/asset/img/loading.svg +52 -52
  46. package/src/asset/img/video-play.svg +6 -6
  47. package/src/asset/style/background.less +19 -19
  48. package/src/asset/style/banner.less +36 -36
  49. package/src/asset/style/base.less +74 -74
  50. package/src/asset/style/index.less +114 -114
  51. package/src/asset/style/reset-theme.less +141 -141
  52. package/src/asset/style/theme/index.less +55 -55
  53. package/src/asset/style/theme/party/global.less +20 -20
  54. package/src/asset/style/theme/party/override.less +57 -57
  55. package/src/asset/style/theme/test/global.less +18 -18
  56. package/src/asset/style/theme/test/override.less +45 -45
  57. package/src/asset/style/variable.less +12 -12
  58. package/src/component/AliPlayer/index.jsx +49 -49
  59. package/src/component/Avatar/index.jsx +50 -50
  60. package/src/component/Empty/index.jsx +34 -34
  61. package/src/component/Empty/index.module.less +37 -37
  62. package/src/component/IMChatroom/component/status/403.jsx +13 -13
  63. package/src/component/IMChatroom/component/status/404.jsx +13 -13
  64. package/src/component/IMChatroom/component/status/Error.jsx +23 -23
  65. package/src/component/IMChatroom/component/status/Loading.jsx +5 -5
  66. package/src/component/IMChatroom/config/app/config.js +118 -118
  67. package/src/component/IMChatroom/config/app/index.js +60 -60
  68. package/src/component/IMChatroom/config/env.js +5 -5
  69. package/src/component/IMChatroom/config/index.js +3 -3
  70. package/src/component/IMChatroom/config/request/config/base.js +124 -124
  71. package/src/component/IMChatroom/config/request/config/chatroom.js +26 -26
  72. package/src/component/IMChatroom/config/request/config/imCoreApi.js +21 -21
  73. package/src/component/IMChatroom/config/request/index.js +21 -21
  74. package/src/component/IMChatroom/config/request/proxy.js +39 -39
  75. package/src/component/IMChatroom/config/url.js +7 -7
  76. package/src/component/IMChatroom/constants/errorCode.js +9 -9
  77. package/src/component/IMChatroom/constants/index.js +84 -84
  78. package/src/component/IMChatroom/constants/origin.js +27 -27
  79. package/src/component/IMChatroom/context/chatroom.js +154 -154
  80. package/src/component/IMChatroom/context/connect.js +28 -28
  81. package/src/component/IMChatroom/i18n/en/index.json +73 -73
  82. package/src/component/IMChatroom/i18n/index.jsx +14 -14
  83. package/src/component/IMChatroom/i18n/language.js +9 -9
  84. package/src/component/IMChatroom/i18n/zh-CN/index.json +73 -73
  85. package/src/component/IMChatroom/index.jsx +49 -49
  86. package/src/component/IMChatroom/page/chat/index.jsx +27 -27
  87. package/src/component/IMChatroom/page/chat/messageEditor/index.jsx +375 -375
  88. package/src/component/IMChatroom/page/chat/messageList/index.jsx +354 -354
  89. package/src/component/IMChatroom/page/chat/stickedMessage/index.jsx +59 -59
  90. package/src/component/IMChatroom/page/chat/stickedMessage/style/index.module.less +7 -7
  91. package/src/component/IMChatroom/page/chat/style/index.module.less +51 -51
  92. package/src/component/IMChatroom/page/home/connect/index.jsx +188 -188
  93. package/src/component/IMChatroom/page/home/connect/status.jsx +124 -124
  94. package/src/component/IMChatroom/page/home/context/cmd.jsx +37 -37
  95. package/src/component/IMChatroom/page/home/context/index.jsx +67 -67
  96. package/src/component/IMChatroom/page/home/index.jsx +164 -164
  97. package/src/component/IMChatroom/page/home/notice/index.jsx +123 -123
  98. package/src/component/IMChatroom/page/home/notice/style/index.module.less +49 -49
  99. package/src/component/IMChatroom/page/home/style/index.module.less +110 -110
  100. package/src/component/IMChatroom/page/member/index.jsx +15 -15
  101. package/src/component/IMChatroom/page/member/memberCount/index.jsx +44 -44
  102. package/src/component/IMChatroom/page/member/memberList/index.jsx +121 -121
  103. package/src/component/IMChatroom/page/member/style/index.module.less +2 -2
  104. package/src/component/IMChatroom/sdk/bridge.js +39 -39
  105. package/src/component/IMChatroom/sdk/cs/constants.js +20 -20
  106. package/src/component/IMChatroom/sdk/cs/index.js +101 -101
  107. package/src/component/IMChatroom/sdk/imChatroom.js +15 -15
  108. package/src/component/IMChatroom/sdk/imcore/constants.js +128 -128
  109. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomDestroyed.js +5 -5
  110. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomInfoGetFail.js +5 -5
  111. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedByAdmin.js +5 -5
  112. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedBySelf.js +5 -5
  113. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginFail.js +5 -5
  114. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginSuccess.js +5 -5
  115. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogin.js +5 -5
  116. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogout.js +5 -5
  117. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnected.js +5 -5
  118. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnecting.js +5 -5
  119. package/src/component/IMChatroom/sdk/imcore/emitters/connectionDisconnect.js +5 -5
  120. package/src/component/IMChatroom/sdk/imcore/emitters/index.js +57 -57
  121. package/src/component/IMChatroom/sdk/imcore/emitters/messageReceive.js +36 -36
  122. package/src/component/IMChatroom/sdk/imcore/index.js +178 -178
  123. package/src/component/IMChatroom/sdk/imcore/interceptors/request.js +7 -7
  124. package/src/component/IMChatroom/sdk/imcore/interceptors/response.js +5 -5
  125. package/src/component/IMChatroom/sdk/imcore/plugins/getAuth.js +64 -64
  126. package/src/component/IMChatroom/sdk/imcore/plugins/getConversationId.js +20 -20
  127. package/src/component/IMChatroom/sdk/imcore/plugins/getExtInfo.js +10 -10
  128. package/src/component/IMChatroom/sdk/imcore/plugins/getLoginInfo.js +48 -48
  129. package/src/component/IMChatroom/sdk/imcore/plugins/getPlatformType.js +12 -12
  130. package/src/component/IMChatroom/sdk/imcore/plugins/index.js +22 -22
  131. package/src/component/IMChatroom/sdk/imcore/util/format.js +177 -177
  132. package/src/component/IMChatroom/sdk/imcore/util/parser.js +35 -35
  133. package/src/component/IMChatroom/sdk/oms.js +18 -18
  134. package/src/component/IMChatroom/sdk/uc.js +3 -3
  135. package/src/component/IMChatroom/subscription/channel/app.js +5 -5
  136. package/src/component/IMChatroom/subscription/channel/ctl.js +22 -22
  137. package/src/component/IMChatroom/subscription/channel/member.js +40 -40
  138. package/src/component/IMChatroom/subscription/channel/message.js +13 -13
  139. package/src/component/IMChatroom/subscription/channel/ntf.js +86 -86
  140. package/src/component/IMChatroom/subscription/channel/tel.js +5 -5
  141. package/src/component/IMChatroom/subscription/channel/websocket.js +5 -5
  142. package/src/component/IMChatroom/subscription/event.js +37 -37
  143. package/src/component/IMChatroom/subscription/index.js +19 -19
  144. package/src/component/IMChatroom/util/account.js +8 -8
  145. package/src/component/IMChatroom/util/chatroom.js +255 -255
  146. package/src/component/IMChatroom/util/jsonBigInt.js +5 -5
  147. package/src/component/IMChatroom/util/location.js +12 -12
  148. package/src/component/Icon/index.jsx +16 -16
  149. package/src/component/Icon/index.module.less +2 -2
  150. package/src/component/Pagination/LocalPagination.jsx +27 -27
  151. package/src/component/Pagination/RemotePagination.jsx +32 -32
  152. package/src/component/Pagination/index.jsx +32 -31
  153. package/src/component/Pagination/index.module.less +117 -110
  154. package/src/component/PlayerTip/index.jsx +34 -34
  155. package/src/component/VideoBase/index.jsx +242 -242
  156. package/src/component/VideoBase/style.less +65 -65
  157. package/src/component/VideoBase/utils.js +81 -81
  158. package/src/component/mixin.less +9 -9
  159. package/src/component/status/403.jsx +15 -15
  160. package/src/component/status/404/index.jsx +73 -73
  161. package/src/component/status/404/index.module.less +36 -36
  162. package/src/component/status/Error/error.module.less +13 -13
  163. package/src/component/status/Error/index.jsx +47 -47
  164. package/src/component/status/Loading/img/loading.svg +52 -52
  165. package/src/component/status/Loading/index.jsx +31 -31
  166. package/src/component/status/Loading/index.less +56 -56
  167. package/src/component/status/None/index.jsx +20 -20
  168. package/src/component/status/None/index.module.less +35 -35
  169. package/src/component/status/Status/index.jsx +26 -26
  170. package/src/component/status/Status/index.module.less +8 -8
  171. package/src/config/constant/commonUrl.js +2 -2
  172. package/src/config/constant/user.js +6 -6
  173. package/src/config/context/site-config.js +48 -48
  174. package/src/config/env/index.js +5 -5
  175. package/src/config/env/local/index.js +13 -13
  176. package/src/config/env/ncet-xedu/api.js +175 -175
  177. package/src/config/env/ncet-xedu/app.js +12 -12
  178. package/src/config/env/ncet-xedu/cs.js +8 -8
  179. package/src/config/env/ncet-xedu/index.js +14 -14
  180. package/src/config/env/ncet-xedu/push.js +5 -5
  181. package/src/config/env/preproduction/api.js +144 -144
  182. package/src/config/env/preproduction/app.js +12 -12
  183. package/src/config/env/preproduction/cs.js +8 -8
  184. package/src/config/env/preproduction/index.js +14 -14
  185. package/src/config/env/preproduction/push.js +5 -5
  186. package/src/config/env/product/api.js +113 -113
  187. package/src/config/env/product/app.js +12 -12
  188. package/src/config/env/product/cs.js +5 -5
  189. package/src/config/env/product/index.js +14 -14
  190. package/src/config/env/product/push.js +5 -5
  191. package/src/config/live.js +80 -80
  192. package/src/config/publicLive.js +53 -53
  193. package/src/config/request/assessments.js +24 -24
  194. package/src/config/request/config-center.js +8 -8
  195. package/src/config/request/helper.js +166 -166
  196. package/src/config/request/im-broadcasts.js +12 -12
  197. package/src/config/request/live-activity-gateway.js +8 -8
  198. package/src/config/request/live-activity.js +13 -13
  199. package/src/config/request/raw.js +6 -6
  200. package/src/config/request/x-cloud-web.js +13 -13
  201. package/src/config/request/x-proxy.js +34 -34
  202. package/src/demo/Detail.jsx +11 -11
  203. package/src/demo/List.jsx +66 -64
  204. package/src/demo/index.jsx +17 -17
  205. package/src/detail/LineSwitch/index.jsx +71 -71
  206. package/src/detail/LiveCountDown/index.jsx +44 -44
  207. package/src/detail/LiveCountDown/index.module.less +31 -31
  208. package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
  209. package/src/detail/LiveOnlineCount/index.jsx +68 -68
  210. package/src/detail/LiveOnlineCount/index.module.less +34 -34
  211. package/src/detail/LiveOnlineCount/util.js +74 -74
  212. package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
  213. package/src/detail/LiveStatus/index.jsx +202 -202
  214. package/src/detail/LiveStatus/index.module.less +192 -192
  215. package/src/detail/LiveVideo/config.js +37 -37
  216. package/src/detail/LiveVideo/index.jsx +188 -188
  217. package/src/detail/LiveVideo/index.module.less +41 -41
  218. package/src/detail/NotLoginChatroom/index.jsx +37 -37
  219. package/src/detail/NotLoginChatroom/index.module.less +46 -46
  220. package/src/detail/RecordVideo/index.jsx +150 -150
  221. package/src/detail/RecordVideo/index.module.less +31 -31
  222. package/src/detail/ReplayVideo/index.jsx +93 -93
  223. package/src/detail/ReplayVideo/index.module.less +65 -65
  224. package/src/detail/const.js +20 -20
  225. package/src/detail/hook/usePullSource.js +82 -82
  226. package/src/detail/hook/usePullState.js +51 -51
  227. package/src/detail/index.jsx +482 -482
  228. package/src/detail/index.module.less +188 -188
  229. package/src/hook/useAsync.js +84 -84
  230. package/src/hook/useGoToPage.js +83 -83
  231. package/src/hook/useInterval.js +28 -28
  232. package/src/hook/useIsMounted.js +17 -17
  233. package/src/hook/useModuleByRole.js +53 -53
  234. package/src/hook/usePageScrollable.js +52 -52
  235. package/src/hook/usePortal.js +83 -83
  236. package/src/hook/useScrollRestore/index.js +32 -32
  237. package/src/hook/useScrollRestore/scrollContext.js +20 -20
  238. package/src/hook/useTrackRef.js +11 -11
  239. package/src/hook/useWindowSize.js +28 -28
  240. package/src/hook/useZoom.js +47 -47
  241. package/src/index.js +10 -10
  242. package/src/lib/getLiveOnlineCount.js +10 -10
  243. package/src/lib/getServiceConfig.js +102 -102
  244. package/src/list/Empty/index.jsx +20 -20
  245. package/src/list/Empty/index.module.less +23 -23
  246. package/src/list/ListItem/Action/index.jsx +100 -98
  247. package/src/list/ListItem/Action/index.module.less +19 -21
  248. package/src/list/ListItem/img/play.svg +15 -15
  249. package/src/list/ListItem/img/video.svg +3 -0
  250. package/src/list/ListItem/index.jsx +46 -28
  251. package/src/list/ListItem/index.module.less +152 -146
  252. package/src/list/index.module.less +35 -35
  253. package/src/service/common.js +73 -73
  254. package/src/service/content-mgr.js +73 -73
  255. package/src/service/im-group.js +12 -12
  256. package/src/service/im.js +7 -7
  257. package/src/service/imBroadcasts.js +33 -33
  258. package/src/service/like.js +134 -134
  259. package/src/service/manageApi.js +7 -7
  260. package/src/service/managePortal.js +6 -6
  261. package/src/service/myStudyRecord.js +93 -93
  262. package/src/service/navigation.js +47 -47
  263. package/src/service/ndMeeting.js +10 -10
  264. package/src/service/ndr.js +122 -122
  265. package/src/service/news.js +93 -93
  266. package/src/service/personalCenter.js +270 -270
  267. package/src/service/qualityCourse.js +31 -31
  268. package/src/service/recommend.js +81 -81
  269. package/src/service/school.js +323 -323
  270. package/src/service/search.js +170 -170
  271. package/src/service/site-config.js +7 -7
  272. package/src/service/socialCensor.js +45 -45
  273. package/src/service/specialEdu.js +31 -31
  274. package/src/service/suggestion.js +85 -85
  275. package/src/service/syncClassroom.js +321 -321
  276. package/src/service/tCourse.js +204 -204
  277. package/src/service/tchTraining.js +37 -37
  278. package/src/service/uc.js +45 -45
  279. package/src/util/app.js +1 -1
  280. package/src/util/array.js +3 -3
  281. package/src/util/auth/func.js +57 -57
  282. package/src/util/date.js +53 -53
  283. package/src/util/env.js +9 -9
  284. package/src/util/getTimestamp.js +10 -10
  285. package/src/util/hof.js +105 -105
  286. package/src/util/live/index.js +42 -42
  287. package/src/util/netUrl.js +35 -35
  288. package/src/util/object.js +13 -13
  289. package/src/util/push/index.js +58 -58
  290. package/src/util/request.js +227 -227
  291. package/src/util/type.js +17 -17
  292. package/src/util/url.js +203 -203
  293. package/src/util/video.js +26 -26
  294. package/test/setup.js +21 -21
  295. package/test/unit/component/header/logo.spec.jsx +8 -8
  296. package/test/unit/helper.jsx +25 -25
  297. package/test/unit/util/date.spec.js +40 -40
  298. package/dist/XEduLivePlayer.common.js +0 -72605
  299. package/dist/XEduLivePlayerPre.common.js +0 -72625
@@ -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
+ }