@x-edu/live-player 0.0.31 → 0.0.33

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 (304) 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 +11931 -1033
  9. package/dist/XEduLivePlayerPre.common.js +11435 -898
  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 +98 -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 +32 -32
  155. package/src/component/Pagination/index.module.less +117 -117
  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 +190 -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 +68 -68
  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 +483 -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 +109 -109
  249. package/src/list/ListItem/Action/index.module.less +25 -25
  250. package/src/list/ListItem/img/dianzan.svg +4 -4
  251. package/src/list/ListItem/img/like-fill.svg +8 -8
  252. package/src/list/ListItem/img/play.svg +15 -15
  253. package/src/list/ListItem/img/view-fill.svg +8 -8
  254. package/src/list/ListItem/img/yiguankan.svg +3 -3
  255. package/src/list/ListItem/index.module.less +158 -158
  256. package/src/list/index.jsx +241 -240
  257. package/src/list/index.module.less +38 -38
  258. package/src/service/common.js +73 -73
  259. package/src/service/content-mgr.js +73 -73
  260. package/src/service/im-group.js +12 -12
  261. package/src/service/im.js +7 -7
  262. package/src/service/imBroadcasts.js +33 -33
  263. package/src/service/like.js +134 -134
  264. package/src/service/live.js +293 -293
  265. package/src/service/manageApi.js +7 -7
  266. package/src/service/managePortal.js +6 -6
  267. package/src/service/myStudyRecord.js +93 -93
  268. package/src/service/navigation.js +47 -47
  269. package/src/service/ndMeeting.js +10 -10
  270. package/src/service/ndr.js +122 -122
  271. package/src/service/news.js +93 -93
  272. package/src/service/personalCenter.js +270 -270
  273. package/src/service/qualityCourse.js +31 -31
  274. package/src/service/recommend.js +81 -81
  275. package/src/service/school.js +323 -323
  276. package/src/service/search.js +170 -170
  277. package/src/service/site-config.js +7 -7
  278. package/src/service/socialCensor.js +45 -45
  279. package/src/service/specialEdu.js +31 -31
  280. package/src/service/suggestion.js +85 -85
  281. package/src/service/syncClassroom.js +321 -321
  282. package/src/service/tCourse.js +204 -204
  283. package/src/service/tchTraining.js +37 -37
  284. package/src/service/uc.js +45 -45
  285. package/src/util/app.js +1 -1
  286. package/src/util/array.js +3 -3
  287. package/src/util/auth/func.js +57 -57
  288. package/src/util/date.js +53 -53
  289. package/src/util/env.js +9 -9
  290. package/src/util/getTimestamp.js +10 -10
  291. package/src/util/hof.js +105 -105
  292. package/src/util/live/index.js +42 -42
  293. package/src/util/liveCountUtil.js +52 -52
  294. package/src/util/netUrl.js +35 -35
  295. package/src/util/object.js +13 -13
  296. package/src/util/push/index.js +58 -58
  297. package/src/util/request.js +227 -227
  298. package/src/util/type.js +17 -17
  299. package/src/util/url.js +203 -203
  300. package/src/util/video.js +26 -26
  301. package/test/setup.js +21 -21
  302. package/test/unit/component/header/logo.spec.jsx +8 -8
  303. package/test/unit/helper.jsx +25 -25
  304. 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
+ }