@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,98 +1,100 @@
1
- import React, { useState } from 'react'
2
- import classNames from 'classnames'
3
- import { message } from 'fish'
4
- import { find } from 'lodash'
5
- import { openLiveSubscribe } from '@/service/live'
6
- import style from './index.module.less'
7
-
8
- const Actions = {
9
- 1: '进入直播', // 直播中 或者开播前15min
10
- 2: '观看回放', // 回放
11
- 3: '预约', // 预告 且开播时间大于 15min
12
- 4: '已预约'
13
- }
14
-
15
- export default function Action({
16
- data,
17
- subscription,
18
- onActionDetailClick,
19
- handleLogin,
20
- isLogin,
21
- onSubscribe
22
- }) {
23
- const { status, live_id: liveId, begin_time: beginTime } = data
24
- const [curAction, setCurAction] = useState(() => {
25
- let actionNum
26
- if (status === 1 || status === 3) {
27
- actionNum = 1
28
- } else if (status === 2) {
29
- actionNum = 2
30
- } else { // status = 0
31
- // 如果超过了开播时间,不管有没有预约,都直接进入直播
32
- const now = new Date().getTime()
33
- const begin = new Date(beginTime).getTime()
34
- if (now > begin) {
35
- actionNum = 1
36
- return actionNum
37
- }
38
- // 开播前15分钟,只提供进入直播按钮
39
- if (begin > now && (begin - now) < 15 * 60 * 1000) {
40
- actionNum = 1
41
- return actionNum
42
- }
43
- // 开播前15分钟之外
44
- const subscriptionItem = find(subscription, {
45
- live_id: liveId
46
- })
47
- if (subscriptionItem?.is_subscribe) { // 已预约
48
- actionNum = 4
49
- } else { // 未预约
50
- actionNum = 3
51
- }
52
- }
53
- return actionNum
54
- })
55
-
56
- const handleBtnClick = async (e) => {
57
- e.stopPropagation()
58
- if (curAction === 3) {
59
- try {
60
- if (!isLogin) {
61
- handleLogin(data)
62
- return
63
- }
64
- onSubscribe(data)
65
- await openLiveSubscribe({
66
- liveId
67
- })
68
- message.success('预约成功')
69
- const now = new Date().getTime()
70
- const begin = new Date(beginTime).getTime()
71
- if (begin > now && (begin - now) < 15 * 60 * 1000) {
72
- setCurAction(1)
73
- } else {
74
- setCurAction(4)
75
- }
76
- } catch (error) {
77
- if (error?.response?.data?.message === '直播开始前15分钟无法预约') {
78
- setCurAction(1)
79
- }
80
- message.error(error?.response?.data?.message || '预约失败,请稍后重试')
81
- }
82
- } else {
83
- onActionDetailClick()
84
- }
85
- }
86
-
87
- return (
88
- <div
89
- className={classNames(style.action, {
90
- [style['action-subscribe']]: curAction === 3,
91
- [style['action-has-subscribe']]: curAction === 4
92
- })}
93
- onClick={handleBtnClick}
94
- >
95
- {Actions[curAction]}
96
- </div>
97
- )
98
- }
1
+ import React, { useState } from 'react'
2
+ import classNames from 'classnames'
3
+ import { message } from 'fish'
4
+ import { find } from 'lodash'
5
+ import { openLiveSubscribe } from '@/service/live'
6
+ import style from './index.module.less'
7
+
8
+ const Actions = {
9
+ 1: '直播回放', // 直播中 或者开播前15min
10
+ 2: '观看回放', // 回放
11
+ 3: '预约', // 预告 且开播时间大于 15min
12
+ 4: '已预约'
13
+ }
14
+
15
+ export default function Action({
16
+ data,
17
+ subscription,
18
+ onActionDetailClick,
19
+ handleLogin,
20
+ isLogin,
21
+ onSubscribe,
22
+ setIsSubscribe
23
+ }) {
24
+ const { status, live_id: liveId, begin_time: beginTime } = data
25
+ const [curAction, setCurAction] = useState(() => {
26
+ let actionNum
27
+ if (status === 1 || status === 3) {
28
+ actionNum = 1
29
+ } else if (status === 2) {
30
+ actionNum = 2
31
+ } else { // status = 0
32
+ // 如果超过了开播时间,不管有没有预约,都直接进入直播
33
+ // const now = new Date().getTime()
34
+ // const begin = new Date(beginTime).getTime()
35
+ // if (now > begin) {
36
+ // actionNum = 1
37
+ // return actionNum
38
+ // }
39
+ // 开播前15分钟,只提供进入直播按钮
40
+ // if (begin > now && (begin - now) < 15 * 60 * 1000) {
41
+ // actionNum = 1
42
+ // return actionNum
43
+ // }
44
+ // 开播前15分钟之外
45
+ const subscriptionItem = find(subscription, {
46
+ live_id: liveId
47
+ })
48
+ if (subscriptionItem?.is_subscribe) { // 已预约
49
+ actionNum = 4;
50
+ } else { // 未预约
51
+ actionNum = 3
52
+ }
53
+ }
54
+ return actionNum
55
+ })
56
+
57
+ const handleBtnClick = async (e) => {
58
+ e.stopPropagation()
59
+ if (curAction === 3) {
60
+ try {
61
+ if (!isLogin) {
62
+ handleLogin(data)
63
+ return
64
+ }
65
+ onSubscribe(data)
66
+ await openLiveSubscribe({
67
+ liveId
68
+ })
69
+ message.success('预约成功')
70
+ const now = new Date().getTime()
71
+ const begin = new Date(beginTime).getTime()
72
+ setIsSubscribe(true);
73
+ if (begin > now && (begin - now) < 15 * 60 * 1000) {
74
+ setCurAction(1)
75
+ } else {
76
+ setCurAction(4)
77
+ }
78
+ } catch (error) {
79
+ if (error?.response?.data?.message === '直播开始前15分钟无法预约') {
80
+ setCurAction(3)
81
+ }
82
+ message.error(error?.response?.data?.message || '预约失败,请稍后重试')
83
+ }
84
+ } else {
85
+ onActionDetailClick()
86
+ }
87
+ }
88
+
89
+ return (
90
+ <div
91
+ className={classNames(style.action, {
92
+ [style['action-subscribe']]: curAction === 3,
93
+ [style['action-has-subscribe']]: curAction === 4
94
+ })}
95
+ onClick={handleBtnClick}
96
+ >
97
+ {Actions[curAction]}
98
+ </div>
99
+ )
100
+ }
@@ -1,22 +1,20 @@
1
- .action {
2
- font-size: 14px;
3
- line-height: 22px;
4
- color: #1E62EC;
5
- border-radius: 144.889px;
6
- border: 1px solid #1E62EC;
7
- width: 88px;
8
- height: 32px;
9
- display: flex;
10
- align-items: center;
11
- justify-content: center;
12
- }
13
-
14
- .action-subscribe {
15
- background: #1E62EC;
16
- color: #fff;
17
- }
18
-
19
- .action-has-subscribe {
20
- border: 1px solid #B7CCF9;
21
- color: #B7CCF9
1
+ .action {
2
+ font-size: 14px;
3
+ line-height: 22px;
4
+ color: #1E62EC;
5
+ border-radius: 144.889px;
6
+ border: 1px solid #1E62EC;
7
+ width: 88px;
8
+ height: 32px;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ margin-top: 8px;
13
+ }
14
+
15
+
16
+
17
+ .action-has-subscribe {
18
+ border: 1px solid #B7CCF9;
19
+ color: #B7CCF9
22
20
  }
@@ -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>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M11.3334 3.33317C11.3334 2.96498 11.0349 2.6665 10.6667 2.6665H1.33335C0.965164 2.6665 0.666687 2.96498 0.666687 3.33317V12.6665C0.666687 13.0347 0.965164 13.3332 1.33335 13.3332H10.6667C11.0349 13.3332 11.3334 13.0347 11.3334 12.6665V9.8665L14.8087 12.2998C14.9106 12.3712 15.0437 12.38 15.154 12.3225C15.2644 12.265 15.3335 12.1509 15.3334 12.0265V3.97317C15.3335 3.84877 15.2644 3.73464 15.154 3.67717C15.0437 3.61969 14.9106 3.62843 14.8087 3.69984L11.3334 6.13317V3.33317ZM4.67202 6.09917C4.69737 5.97499 4.80662 5.88581 4.93335 5.88584C4.98396 5.8853 5.03367 5.89984 5.07669 5.9265L7.98002 7.7745L8.02202 7.80784C8.14544 7.9276 8.12489 8.13115 7.98002 8.22384L5.07669 10.0718L5.02802 10.0958C4.85351 10.1621 4.66666 10.0332 4.66669 9.8465V6.15184L4.67202 6.09917Z" fill="#CCCCCC"/>
3
+ </svg>
@@ -10,12 +10,14 @@ import DefaultCover from './img/live.png'
10
10
  import PlayImg from './img/play.svg'
11
11
  import dianZan from './img/dianzan.svg'
12
12
  import yiYue from './img/yiguankan.svg'
13
+ import videoSvg from './img/video.svg'
13
14
  import style from './index.module.less'
15
+ import { find } from 'lodash'
14
16
 
15
17
  const TagName = {
16
- 0: '预告',
18
+ 0: '直播预告',
17
19
  1: '直播中',
18
- 2: '回放',
20
+ 2: '直播回放',
19
21
  3: '直播中' // 实际是暂停
20
22
  }
21
23
 
@@ -31,12 +33,29 @@ export default function ListItem({
31
33
  live_id: liveId,
32
34
  live_name: liveName,
33
35
  begin_time: beginTime,
34
- end_time: endTime,
36
+ // end_time: endTime,
35
37
  cover_url: coverUrl,
36
38
  status
37
39
  } = data
38
40
 
39
41
  const [liveExt, setLiveExt] = useState({})
42
+ const [isSubscribe, setIsSubscribe]= useState(()=>{
43
+ if(status === 0){
44
+ // 开播前15分钟之外
45
+ const subscriptionItem = find(subscription, {
46
+ live_id: liveId
47
+ })
48
+ if (subscriptionItem?.is_subscribe) { // 已预约
49
+ return true
50
+ } else { // 未预约
51
+ return false
52
+ }
53
+ }else {
54
+ return false
55
+ }
56
+
57
+ })
58
+
40
59
  useEffect(() => {
41
60
  (async () => {
42
61
  const res = await getResourceLikes(liveId)
@@ -44,6 +63,7 @@ export default function ListItem({
44
63
  })()
45
64
  }, [])
46
65
 
66
+
47
67
  const handleDetailClick = async () => {
48
68
  if (data.login && !isLogin) {
49
69
  handleLogin(data)
@@ -53,7 +73,7 @@ export default function ListItem({
53
73
  onDetailClick(data)
54
74
  } else {
55
75
  // 默认跳转中小学
56
- window.open(`https://basic.smartedu.cn/publicLive/${liveId}}`)
76
+ window.open(`https://basic.smartedu.cn/publicLive/${liveId}`)
57
77
  }
58
78
  }
59
79
 
@@ -61,34 +81,21 @@ export default function ListItem({
61
81
  <div
62
82
  className={style.container}
63
83
  onClick={handleDetailClick}
84
+
64
85
  >
65
- <div className={style.left}>
66
- <Avatar
67
- src={coverUrl || DefaultCover}
68
- errorImg={DefaultCover}
69
- className={style.avatar}
70
- />
71
- <div className={classNames(style.tag, style[`tag${status}`])}>
72
- {status === 1 || status === 3 ? <img src={PlayImg} alt="" /> : null}
73
- {TagName[status]}
74
- </div>
75
- </div>
86
+
76
87
  <div className={style.right}>
77
88
  <div className={style['right-top']}>
78
89
  <div className={style.title}>{liveName}</div>
79
90
  </div>
80
91
  <div className={style['right-bottom']}>
81
- <div className={style.time}>
82
- <Icon type="web_icon_shijian_fill" className={style['time-icon']} />
92
+ <div className={`${style.time} ${status === 0?style['foreshow-time']:''}`}>
93
+ {isSubscribe ? <Icon type="web_icon_shijian_fill" className={style['time-icon']} /> : <img src={videoSvg} className={style['time-icon']} />}
94
+
83
95
  {status === 2 ? (
84
- <>
85
- {`${dayjs(beginTime).format('YYYY/MM/DD HH:mm')}-${dayjs(endTime).format('HH:mm')}`}
86
- </>
96
+ `${dayjs(beginTime).format('YYYY/MM/DD HH:mm')}`
87
97
  ) : (
88
- <>
89
- {dayjs(beginTime).format('YYYY/MM/DD HH:mm')}
90
- 开始
91
- </>
98
+ `${dayjs(beginTime).format('YYYY/MM/DD HH:mm')} 开始`
92
99
  )}
93
100
 
94
101
  <div className={style.like_sty}>
@@ -100,9 +107,9 @@ export default function ListItem({
100
107
  <img src={dianZan} alt="" />
101
108
  {formatLikesCount(liveExt.like_count || 0)}
102
109
  </div>
103
- </div>
110
+ </div>
104
111
  </div>
105
- <div>
112
+ {status === 0?
106
113
  <Action
107
114
  data={data}
108
115
  subscription={subscription}
@@ -110,10 +117,21 @@ export default function ListItem({
110
117
  handleLogin={handleLogin}
111
118
  isLogin={isLogin}
112
119
  onSubscribe={onSubscribe}
113
- />
114
- </div>
120
+ setIsSubscribe={setIsSubscribe}
121
+ />:''}
115
122
  </div>
116
123
  </div>
124
+ <div className={style.left}>
125
+ <div className={classNames(style.tag, style[`tag${status}`])}>
126
+ {status === 1 || status === 3 ? <img src={PlayImg} alt="" /> : null}
127
+ {TagName[status]}
128
+ </div>
129
+ <Avatar
130
+ src={coverUrl || DefaultCover}
131
+ errorImg={DefaultCover}
132
+ className={style.avatar}
133
+ />
134
+ </div>
117
135
  </div>
118
136
  )
119
137
  }