@x-edu/live-player 0.0.32 → 0.0.34

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 (307) hide show
  1. package/.browserslistrc +10 -10
  2. package/.eslintignore +8 -8
  3. package/.eslintrc.js +26 -26
  4. package/.postcssrc.js +6 -6
  5. package/README.md +145 -145
  6. package/babel.config.js +33 -33
  7. package/dist/XEduLivePlayer.common.js +11436 -973
  8. package/dist/XEduLivePlayerPre.common.js +11281 -818
  9. package/doc/develop.md +23 -23
  10. package/gem-mine.config.js +86 -86
  11. package/jest.config.js +9 -9
  12. package/jsconfig.json +15 -15
  13. package/mock/helper.js +8 -8
  14. package/mock/index.js +34 -34
  15. package/package.json +99 -99
  16. package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
  17. package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
  18. package/public/3rd/ali-player/aliplayer-min.js +1 -1
  19. package/public/3rd/im-web-push/index.umd.js +14 -14
  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 +22 -15
  108. package/src/component/IMChatroom/sdk/imcore/constants.js +130 -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 -32
  153. package/src/component/Pagination/index.module.less +117 -117
  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/ncet-xedu-beta/api.js +175 -0
  182. package/src/config/env/ncet-xedu-beta/app.js +12 -0
  183. package/src/config/env/ncet-xedu-beta/cs.js +8 -0
  184. package/src/config/env/ncet-xedu-beta/index.js +14 -0
  185. package/src/config/env/ncet-xedu-beta/push.js +5 -0
  186. package/src/config/env/preproduction/api.js +144 -144
  187. package/src/config/env/preproduction/app.js +12 -12
  188. package/src/config/env/preproduction/cs.js +8 -8
  189. package/src/config/env/preproduction/index.js +14 -14
  190. package/src/config/env/preproduction/push.js +5 -5
  191. package/src/config/env/product/api.js +113 -113
  192. package/src/config/env/product/app.js +12 -12
  193. package/src/config/env/product/cs.js +5 -5
  194. package/src/config/env/product/index.js +14 -14
  195. package/src/config/env/product/push.js +5 -5
  196. package/src/config/live.js +80 -80
  197. package/src/config/publicLive.js +53 -53
  198. package/src/config/request/assessments.js +24 -24
  199. package/src/config/request/config-center.js +8 -8
  200. package/src/config/request/helper.js +190 -166
  201. package/src/config/request/im-broadcasts.js +12 -12
  202. package/src/config/request/live-activity-gateway.js +8 -8
  203. package/src/config/request/live-activity.js +13 -13
  204. package/src/config/request/raw.js +6 -6
  205. package/src/config/request/x-cloud-web.js +13 -13
  206. package/src/config/request/x-proxy.js +34 -34
  207. package/src/demo/Detail.jsx +11 -11
  208. package/src/demo/List.jsx +68 -68
  209. package/src/demo/index.jsx +17 -17
  210. package/src/detail/LineSwitch/index.jsx +71 -71
  211. package/src/detail/LiveCountDown/index.jsx +44 -44
  212. package/src/detail/LiveCountDown/index.module.less +31 -31
  213. package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
  214. package/src/detail/LiveOnlineCount/index.jsx +68 -68
  215. package/src/detail/LiveOnlineCount/index.module.less +34 -34
  216. package/src/detail/LiveOnlineCount/util.js +74 -74
  217. package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
  218. package/src/detail/LiveStatus/index.jsx +202 -202
  219. package/src/detail/LiveStatus/index.module.less +192 -192
  220. package/src/detail/LiveVideo/config.js +37 -37
  221. package/src/detail/LiveVideo/index.jsx +188 -188
  222. package/src/detail/LiveVideo/index.module.less +41 -41
  223. package/src/detail/NotLoginChatroom/index.jsx +37 -37
  224. package/src/detail/NotLoginChatroom/index.module.less +46 -46
  225. package/src/detail/RecordVideo/index.jsx +150 -150
  226. package/src/detail/RecordVideo/index.module.less +31 -31
  227. package/src/detail/ReplayVideo/index.jsx +93 -93
  228. package/src/detail/ReplayVideo/index.module.less +65 -65
  229. package/src/detail/const.js +20 -20
  230. package/src/detail/hook/usePullSource.js +82 -82
  231. package/src/detail/hook/usePullState.js +51 -51
  232. package/src/detail/index.jsx +483 -482
  233. package/src/detail/index.module.less +188 -188
  234. package/src/hook/useAsync.js +84 -84
  235. package/src/hook/useGoToPage.js +83 -83
  236. package/src/hook/useInterval.js +28 -28
  237. package/src/hook/useIsMounted.js +17 -17
  238. package/src/hook/useModuleByRole.js +53 -53
  239. package/src/hook/usePageScrollable.js +52 -52
  240. package/src/hook/usePortal.js +83 -83
  241. package/src/hook/useScrollRestore/index.js +32 -32
  242. package/src/hook/useScrollRestore/scrollContext.js +20 -20
  243. package/src/hook/useTrackRef.js +11 -11
  244. package/src/hook/useWindowSize.js +28 -28
  245. package/src/hook/useZoom.js +47 -47
  246. package/src/index.js +10 -10
  247. package/src/lib/getLiveOnlineCount.js +10 -10
  248. package/src/lib/getServiceConfig.js +102 -102
  249. package/src/list/Empty/index.jsx +20 -20
  250. package/src/list/Empty/index.module.less +23 -23
  251. package/src/list/ListItem/Action/index.jsx +109 -109
  252. package/src/list/ListItem/Action/index.module.less +25 -25
  253. package/src/list/ListItem/img/dianzan.svg +4 -4
  254. package/src/list/ListItem/img/like-fill.svg +8 -8
  255. package/src/list/ListItem/img/play.svg +15 -15
  256. package/src/list/ListItem/img/view-fill.svg +8 -8
  257. package/src/list/ListItem/img/yiguankan.svg +3 -3
  258. package/src/list/ListItem/index.module.less +158 -158
  259. package/src/list/index.jsx +241 -240
  260. package/src/list/index.module.less +38 -38
  261. package/src/service/common.js +73 -73
  262. package/src/service/content-mgr.js +73 -73
  263. package/src/service/im-group.js +12 -12
  264. package/src/service/im.js +7 -7
  265. package/src/service/imBroadcasts.js +33 -33
  266. package/src/service/like.js +134 -134
  267. package/src/service/live.js +293 -293
  268. package/src/service/manageApi.js +7 -7
  269. package/src/service/managePortal.js +6 -6
  270. package/src/service/myStudyRecord.js +93 -93
  271. package/src/service/navigation.js +47 -47
  272. package/src/service/ndMeeting.js +10 -10
  273. package/src/service/ndr.js +122 -122
  274. package/src/service/news.js +93 -93
  275. package/src/service/personalCenter.js +270 -270
  276. package/src/service/qualityCourse.js +31 -31
  277. package/src/service/recommend.js +81 -81
  278. package/src/service/school.js +323 -323
  279. package/src/service/search.js +170 -170
  280. package/src/service/site-config.js +7 -7
  281. package/src/service/socialCensor.js +45 -45
  282. package/src/service/specialEdu.js +31 -31
  283. package/src/service/suggestion.js +85 -85
  284. package/src/service/syncClassroom.js +321 -321
  285. package/src/service/tCourse.js +204 -204
  286. package/src/service/tchTraining.js +37 -37
  287. package/src/service/uc.js +45 -45
  288. package/src/util/app.js +1 -1
  289. package/src/util/array.js +3 -3
  290. package/src/util/auth/func.js +57 -57
  291. package/src/util/date.js +53 -53
  292. package/src/util/env.js +9 -9
  293. package/src/util/getTimestamp.js +10 -10
  294. package/src/util/hof.js +105 -105
  295. package/src/util/live/index.js +42 -42
  296. package/src/util/liveCountUtil.js +52 -52
  297. package/src/util/netUrl.js +35 -35
  298. package/src/util/object.js +13 -13
  299. package/src/util/push/index.js +58 -58
  300. package/src/util/request.js +227 -227
  301. package/src/util/type.js +17 -17
  302. package/src/util/url.js +203 -203
  303. package/src/util/video.js +26 -26
  304. package/test/setup.js +21 -21
  305. package/test/unit/component/header/logo.spec.jsx +8 -8
  306. package/test/unit/helper.jsx +25 -25
  307. package/test/unit/util/date.spec.js +40 -40
package/src/demo/List.jsx CHANGED
@@ -1,68 +1,68 @@
1
- import React, { useEffect, useState } from 'react'
2
- import { UC } from '@sdp.nd/nd-uc-sdk'
3
- import Live from '../App'
4
-
5
- const uc = new UC({
6
- env: 'ncet-xedu',
7
- sdpAppId: 'e5649925-441d-4a53-b525-51a2f1c4e0a8',
8
- origins: {
9
- UC: 'https://uc-gateway.ykt.eduyun.cn',
10
- SSO: 'https://sso.basic.smartedu.cn'
11
- },
12
- isGlobalSDKCacheEnabled: true
13
- })
14
- // const uc = new UC({
15
- // env: 'preproduction',
16
- // sdpAppId: '331593d3-af38-456e-bdb8-5263525608f4',
17
- // origins: {
18
- // UC: 'https://uc-gateway.beta.101.com',
19
- // SSO: 'https://ysc-sso.ykt.eduyun.cn'
20
- // },
21
- // isGlobalSDKCacheEnabled: true
22
- // })
23
-
24
- export default function List() {
25
- const [ucInstance] = useState(uc)
26
- const [userInfo, setUserInfo] = useState(null)
27
- const [refreshPage] = useState('0')
28
-
29
- const handleSubscribe = (data) => {
30
- console.log(data)
31
- }
32
-
33
- useEffect(() => {
34
- async function init() {
35
- try {
36
- await ucInstance.login({
37
- loginName: '15280425124',
38
- password: 'chen135246+'
39
- // loginName: '18695708674',
40
- // password: 'gyh123456'
41
- })
42
- const account = ucInstance.getCurrentAccount()
43
- const info = await account.getAccountInfo()
44
- setUserInfo(info)
45
- } catch (error) {
46
- console.log(error)
47
- }
48
- }
49
- init()
50
- }, [])
51
-
52
- if (!userInfo) {
53
- return null
54
- }
55
-
56
- return (
57
- <Live.PublicLiveList
58
- uc={ucInstance}
59
- loginInfo={{
60
- userInfo
61
- }}
62
- onSubscribe={handleSubscribe}
63
- scopeType="e_teacher_studio"
64
- scopeId="a9a32d1a-b0bd-4482-ab9d-80ce38515280"
65
- refreshPage={refreshPage}
66
- />
67
- )
68
- }
1
+ import React, { useEffect, useState } from 'react'
2
+ import { UC } from '@sdp.nd/nd-uc-sdk'
3
+ import Live from '../App'
4
+
5
+ const uc = new UC({
6
+ env: 'ncet-xedu',
7
+ sdpAppId: 'e5649925-441d-4a53-b525-51a2f1c4e0a8',
8
+ origins: {
9
+ UC: 'https://uc-gateway.ykt.eduyun.cn',
10
+ SSO: 'https://sso.basic.smartedu.cn'
11
+ },
12
+ isGlobalSDKCacheEnabled: true
13
+ })
14
+ // const uc = new UC({
15
+ // env: 'preproduction',
16
+ // sdpAppId: '331593d3-af38-456e-bdb8-5263525608f4',
17
+ // origins: {
18
+ // UC: 'https://uc-gateway.beta.101.com',
19
+ // SSO: 'https://ysc-sso.ykt.eduyun.cn'
20
+ // },
21
+ // isGlobalSDKCacheEnabled: true
22
+ // })
23
+
24
+ export default function List() {
25
+ const [ucInstance] = useState(uc)
26
+ const [userInfo, setUserInfo] = useState(null)
27
+ const [refreshPage] = useState('0')
28
+
29
+ const handleSubscribe = (data) => {
30
+ console.log(data)
31
+ }
32
+
33
+ useEffect(() => {
34
+ async function init() {
35
+ try {
36
+ await ucInstance.login({
37
+ loginName: '15280425124',
38
+ password: 'chen135246+'
39
+ // loginName: '18695708674',
40
+ // password: 'gyh123456'
41
+ })
42
+ const account = ucInstance.getCurrentAccount()
43
+ const info = await account.getAccountInfo()
44
+ setUserInfo(info)
45
+ } catch (error) {
46
+ console.log(error)
47
+ }
48
+ }
49
+ init()
50
+ }, [])
51
+
52
+ if (!userInfo) {
53
+ return null
54
+ }
55
+
56
+ return (
57
+ <Live.PublicLiveList
58
+ uc={ucInstance}
59
+ loginInfo={{
60
+ userInfo
61
+ }}
62
+ onSubscribe={handleSubscribe}
63
+ scopeType="e_teacher_studio"
64
+ scopeId="a9a32d1a-b0bd-4482-ab9d-80ce38515280"
65
+ refreshPage={refreshPage}
66
+ />
67
+ )
68
+ }
@@ -1,17 +1,17 @@
1
- import React from 'react'
2
- import { Tabs } from 'fish'
3
- import Detail from './Detail'
4
- import List from './List'
5
-
6
- export default function Demo() {
7
- return (
8
- <Tabs>
9
- <Tabs.TabPane tab="详情" key="detail">
10
- <Detail />
11
- </Tabs.TabPane>
12
- <Tabs.TabPane tab="列表" key="list">
13
- <List />
14
- </Tabs.TabPane>
15
- </Tabs>
16
- )
17
- }
1
+ import React from 'react'
2
+ import { Tabs } from 'fish'
3
+ import Detail from './Detail'
4
+ import List from './List'
5
+
6
+ export default function Demo() {
7
+ return (
8
+ <Tabs>
9
+ <Tabs.TabPane tab="详情" key="detail">
10
+ <Detail />
11
+ </Tabs.TabPane>
12
+ <Tabs.TabPane tab="列表" key="list">
13
+ <List />
14
+ </Tabs.TabPane>
15
+ </Tabs>
16
+ )
17
+ }
@@ -1,71 +1,71 @@
1
- import React, { useState, useMemo } from 'react'
2
- import { Select } from 'fish'
3
-
4
- import style from './index.module.less'
5
-
6
- const { Option } = Select
7
-
8
- export default function LineSwitch({
9
- className,
10
- liveInfo,
11
- onChange
12
- }) {
13
- const lines = useMemo(
14
- () => liveInfo?.imInfo?.param?.lines
15
- ?.map((item, i) => {
16
- const { name, source } = item
17
- if (name && source) {
18
- return item
19
- }
20
-
21
- return {
22
- name: name || `线路${i + 1}`,
23
- source: item
24
- }
25
- }),
26
- [liveInfo]
27
- )
28
-
29
- const [lineName, setLineName] = useState(lines?.[0]?.name || '线路1')
30
-
31
- const handleSelectChange = (value) => {
32
- setLineName(value)
33
- const source = lines
34
- ?.find((item) => item.name === value)
35
- ?.source
36
- onChange(source)
37
- }
38
-
39
- return (
40
- <>
41
- {
42
- lines.length > 1 ? (
43
- <div className={`${style['line-switch']} ${className}`}>
44
- <span>切换线路:</span>
45
- <Select
46
- defaultValue={lineName}
47
- onChange={handleSelectChange}
48
- style={{
49
- width: '120px'
50
- }}
51
- >
52
- {
53
- lines?.map((item) => (
54
- <Option
55
- key={item.name}
56
- value={item.name}
57
- >
58
- {item.name}
59
- </Option>
60
- ))
61
- }
62
- </Select>
63
- </div>
64
- ) : (
65
- <></>
66
- )
67
- }
68
- </>
69
-
70
- )
71
- }
1
+ import React, { useState, useMemo } from 'react'
2
+ import { Select } from 'fish'
3
+
4
+ import style from './index.module.less'
5
+
6
+ const { Option } = Select
7
+
8
+ export default function LineSwitch({
9
+ className,
10
+ liveInfo,
11
+ onChange
12
+ }) {
13
+ const lines = useMemo(
14
+ () => liveInfo?.imInfo?.param?.lines
15
+ ?.map((item, i) => {
16
+ const { name, source } = item
17
+ if (name && source) {
18
+ return item
19
+ }
20
+
21
+ return {
22
+ name: name || `线路${i + 1}`,
23
+ source: item
24
+ }
25
+ }),
26
+ [liveInfo]
27
+ )
28
+
29
+ const [lineName, setLineName] = useState(lines?.[0]?.name || '线路1')
30
+
31
+ const handleSelectChange = (value) => {
32
+ setLineName(value)
33
+ const source = lines
34
+ ?.find((item) => item.name === value)
35
+ ?.source
36
+ onChange(source)
37
+ }
38
+
39
+ return (
40
+ <>
41
+ {
42
+ lines.length > 1 ? (
43
+ <div className={`${style['line-switch']} ${className}`}>
44
+ <span>切换线路:</span>
45
+ <Select
46
+ defaultValue={lineName}
47
+ onChange={handleSelectChange}
48
+ style={{
49
+ width: '120px'
50
+ }}
51
+ >
52
+ {
53
+ lines?.map((item) => (
54
+ <Option
55
+ key={item.name}
56
+ value={item.name}
57
+ >
58
+ {item.name}
59
+ </Option>
60
+ ))
61
+ }
62
+ </Select>
63
+ </div>
64
+ ) : (
65
+ <></>
66
+ )
67
+ }
68
+ </>
69
+
70
+ )
71
+ }
@@ -1,44 +1,44 @@
1
- import React from 'react'
2
- import { useCountDown } from 'ahooks'
3
- import style from './index.module.less'
4
- import usePullState from '../hook/usePullState'
5
-
6
- export default function LiveCountDown({
7
- liveInfo,
8
- isStreamLive,
9
- time,
10
- reload,
11
- onEnd = () => {}
12
- }) {
13
- const [countdown,, formattedRes] = useCountDown({
14
- targetDate: Date.now() + time,
15
- interval: 500,
16
- onEnd
17
- })
18
-
19
- // 设置 > 2000 避免最后一次触发,onEnd触发即可
20
- usePullState({
21
- liveInfo,
22
- reload,
23
- shouldStartPull: isStreamLive
24
- && countdown >= 1000
25
- })
26
-
27
- const { days, hours, minutes, seconds } = formattedRes
28
-
29
- return (
30
- <div className={style['live-count-down']}>
31
- <div className={style.title}>距离开播还剩</div>
32
- <div className={style.content}>
33
- <span>{days}</span>
34
-
35
- <span>{hours}</span>
36
-
37
- <span>{minutes}</span>
38
-
39
- <span>{seconds}</span>
40
-
41
- </div>
42
- </div>
43
- )
44
- }
1
+ import React from 'react'
2
+ import { useCountDown } from 'ahooks'
3
+ import style from './index.module.less'
4
+ import usePullState from '../hook/usePullState'
5
+
6
+ export default function LiveCountDown({
7
+ liveInfo,
8
+ isStreamLive,
9
+ time,
10
+ reload,
11
+ onEnd = () => {}
12
+ }) {
13
+ const [countdown,, formattedRes] = useCountDown({
14
+ targetDate: Date.now() + time,
15
+ interval: 500,
16
+ onEnd
17
+ })
18
+
19
+ // 设置 > 2000 避免最后一次触发,onEnd触发即可
20
+ usePullState({
21
+ liveInfo,
22
+ reload,
23
+ shouldStartPull: isStreamLive
24
+ && countdown >= 1000
25
+ })
26
+
27
+ const { days, hours, minutes, seconds } = formattedRes
28
+
29
+ return (
30
+ <div className={style['live-count-down']}>
31
+ <div className={style.title}>距离开播还剩</div>
32
+ <div className={style.content}>
33
+ <span>{days}</span>
34
+
35
+ <span>{hours}</span>
36
+
37
+ <span>{minutes}</span>
38
+
39
+ <span>{seconds}</span>
40
+
41
+ </div>
42
+ </div>
43
+ )
44
+ }
@@ -1,32 +1,32 @@
1
- .live-count-down {
2
- padding: 24px 32px 32px;
3
- color: #fff;
4
- border-radius: 8px;
5
- z-index: 100;
6
- background: rgba(0, 0, 0, 0.7);;
7
- box-shadow: 0px 0px 20px 0px rgba(153, 153, 153, 0.1);
8
-
9
- .title {
10
- font-size: 24px;
11
- font-weight: bold;
12
- text-align: center;
13
- margin-bottom: 20px;
14
- }
15
-
16
- .content {
17
- font-size: 16px;
18
- span {
19
- display: inline-block;
20
- min-width: 32px;
21
- height: 24px;
22
- padding: 0 4px;
23
- line-height: 24px;
24
- font-weight: bold;
25
- color: #333;
26
- background-color: #fff;
27
- margin: 0 6px;
28
- border-radius: 4px;
29
- text-align: center;
30
- }
31
- }
1
+ .live-count-down {
2
+ padding: 24px 32px 32px;
3
+ color: #fff;
4
+ border-radius: 8px;
5
+ z-index: 100;
6
+ background: rgba(0, 0, 0, 0.7);;
7
+ box-shadow: 0px 0px 20px 0px rgba(153, 153, 153, 0.1);
8
+
9
+ .title {
10
+ font-size: 24px;
11
+ font-weight: bold;
12
+ text-align: center;
13
+ margin-bottom: 20px;
14
+ }
15
+
16
+ .content {
17
+ font-size: 16px;
18
+ span {
19
+ display: inline-block;
20
+ min-width: 32px;
21
+ height: 24px;
22
+ padding: 0 4px;
23
+ line-height: 24px;
24
+ font-weight: bold;
25
+ color: #333;
26
+ background-color: #fff;
27
+ margin: 0 6px;
28
+ border-radius: 4px;
29
+ text-align: center;
30
+ }
31
+ }
32
32
  }
@@ -1,16 +1,16 @@
1
- <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
2
- y="0px" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 50 50;" xml:space="preserve">
3
- <rect x="0" y="0" width="4" height="7" fill="#fff">
4
- <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0s"
5
- dur="0.6s" repeatCount="indefinite" />
6
- </rect>
7
-
8
- <rect x="10" y="0" width="4" height="7" fill="#fff">
9
- <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0.2s"
10
- dur="0.6s" repeatCount="indefinite" />
11
- </rect>
12
- <rect x="20" y="0" width="4" height="7" fill="#fff">
13
- <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0.4s"
14
- dur="0.6s" repeatCount="indefinite" />
15
- </rect>
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
2
+ y="0px" width="24px" height="24px" viewBox="0 0 24 24" style="enable-background:new 0 0 50 50;" xml:space="preserve">
3
+ <rect x="0" y="0" width="4" height="7" fill="#fff">
4
+ <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0s"
5
+ dur="0.6s" repeatCount="indefinite" />
6
+ </rect>
7
+
8
+ <rect x="10" y="0" width="4" height="7" fill="#fff">
9
+ <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0.2s"
10
+ dur="0.6s" repeatCount="indefinite" />
11
+ </rect>
12
+ <rect x="20" y="0" width="4" height="7" fill="#fff">
13
+ <animateTransform attributeType="xml" attributeName="transform" type="scale" values="1,1; 1,3; 1,1" begin="0.4s"
14
+ dur="0.6s" repeatCount="indefinite" />
15
+ </rect>
16
16
  </svg>
@@ -1,68 +1,68 @@
1
- import React, { useEffect, useState } from 'react'
2
- import {
3
- getLocalSend,
4
- saveLocalSend,
5
- getCacheCount,
6
- saveCacheCount
7
- } from './util'
8
- import { getResourceLikesForLive, postResourceLikes } from '@/service/like'
9
- import style from './index.module.less'
10
- import IconSVG from './img/icon.svg'
11
-
12
- const ResourceType = 'open_live'
13
- /**
14
- * 直播在线人数
15
- * @param {string} resId 资源id
16
- */
17
- export default function LiveOnlineCount({
18
- resId,
19
- className = '',
20
- onOnlineCountChange
21
- }) {
22
- if (!resId) return null
23
-
24
- const [onlineCount, setOnlineCount] = useState(0)
25
- const sendCount = () => {
26
- const hasSend = getLocalSend(resId)
27
- // setOnlineCount((t) => t + 1)
28
- if (!hasSend) {
29
- postResourceLikes(resId, ResourceType)
30
- saveLocalSend(resId, true)
31
- }
32
- }
33
-
34
- useEffect(() => {
35
- (async () => {
36
- let count = 0
37
- // 获取点赞数
38
- try {
39
- // 容错处理
40
- const likesData = await getResourceLikesForLive(resId, ResourceType)
41
- count = likesData?.open_live_count || 0
42
- saveCacheCount(resId, count)
43
- } catch (e) {
44
- console.error(e)
45
- count = getCacheCount(resId) || 0
46
- }
47
- const currentCount = count === 0 ? 1 : count
48
- setOnlineCount(currentCount)
49
- onOnlineCountChange(currentCount)
50
- sendCount()
51
- })()
52
- }, [])
53
-
54
- return (
55
- <div
56
- className={`${style['like-wrap']} ${className}`}
57
- >
58
- <div className={style.icon}>
59
- <img src={IconSVG} />
60
- </div>
61
- <div className={style['like-count']}>
62
- {onlineCount}
63
- {' '}
64
- 观看
65
- </div>
66
- </div>
67
- )
68
- }
1
+ import React, { useEffect, useState } from 'react'
2
+ import {
3
+ getLocalSend,
4
+ saveLocalSend,
5
+ getCacheCount,
6
+ saveCacheCount
7
+ } from './util'
8
+ import { getResourceLikesForLive, postResourceLikes } from '@/service/like'
9
+ import style from './index.module.less'
10
+ import IconSVG from './img/icon.svg'
11
+
12
+ const ResourceType = 'open_live'
13
+ /**
14
+ * 直播在线人数
15
+ * @param {string} resId 资源id
16
+ */
17
+ export default function LiveOnlineCount({
18
+ resId,
19
+ className = '',
20
+ onOnlineCountChange
21
+ }) {
22
+ if (!resId) return null
23
+
24
+ const [onlineCount, setOnlineCount] = useState(0)
25
+ const sendCount = () => {
26
+ const hasSend = getLocalSend(resId)
27
+ // setOnlineCount((t) => t + 1)
28
+ if (!hasSend) {
29
+ postResourceLikes(resId, ResourceType)
30
+ saveLocalSend(resId, true)
31
+ }
32
+ }
33
+
34
+ useEffect(() => {
35
+ (async () => {
36
+ let count = 0
37
+ // 获取点赞数
38
+ try {
39
+ // 容错处理
40
+ const likesData = await getResourceLikesForLive(resId, ResourceType)
41
+ count = likesData?.open_live_count || 0
42
+ saveCacheCount(resId, count)
43
+ } catch (e) {
44
+ console.error(e)
45
+ count = getCacheCount(resId) || 0
46
+ }
47
+ const currentCount = count === 0 ? 1 : count
48
+ setOnlineCount(currentCount)
49
+ onOnlineCountChange(currentCount)
50
+ sendCount()
51
+ })()
52
+ }, [])
53
+
54
+ return (
55
+ <div
56
+ className={`${style['like-wrap']} ${className}`}
57
+ >
58
+ <div className={style.icon}>
59
+ <img src={IconSVG} />
60
+ </div>
61
+ <div className={style['like-count']}>
62
+ {onlineCount}
63
+ {' '}
64
+ 观看
65
+ </div>
66
+ </div>
67
+ )
68
+ }