@x-edu/live-player 0.0.32 → 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 +11429 -892
  9. package/dist/XEduLivePlayerPre.common.js +11416 -879
  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
@@ -1,293 +1,293 @@
1
- import axios from 'axios'
2
- import dayjs from 'dayjs'
3
- import config from '@/config/env'
4
- import liveActivityAPI, { proxyApi } from '@/config/request/live-activity'
5
- import liveActivityGatewayAPI from '@/config/request/live-activity-gateway'
6
- import { PUBLIC_LIVE_STATUS, LIVING_CLOSE_LOGIN, PUBLIC_LIVE_MODE, VIEW_REPLAY, PROVIDE_RECORD, SUB_TYPE } from '@/config/publicLive'
7
- import getServiceConfig from '@/lib/getServiceConfig'
8
- import { getAvatarURL } from '@/util/auth/func'
9
- import { getLocalHlsLiveStatus } from '@/util/live'
10
- import { withOnce } from '@/util/hof'
11
- import { liveProxy } from '@/config/request/x-proxy'
12
-
13
- export async function getLiveActivities(params) {
14
- const { liveDateString, isTeacher, ...requestParams } = params
15
- if (requestParams.status < 0) {
16
- delete requestParams.status
17
- }
18
- if (liveDateString) {
19
- requestParams.begin_time = `${liveDateString} 00:00:00`
20
- requestParams.end_time = `${liveDateString} 23:59:59`
21
- }
22
- if (!isTeacher) {
23
- delete requestParams.filter_creator
24
- }
25
- const requestFn = isTeacher ? getTeacherLiveActivities : getStudentLiveActivities
26
- return requestFn(requestParams)
27
- }
28
-
29
- // 获取老师的直播列表
30
- export async function getTeacherLiveActivities(params) {
31
- const url = '/live_activities/actions/teacher_search'
32
- const { data } = await liveActivityGatewayAPI.get(url, {
33
- params
34
- })
35
- return data
36
- }
37
-
38
- // 获取学生的直播列表
39
- export async function getStudentLiveActivities(params) {
40
- const url = '/live_activities/actions/user_search'
41
- const { data } = await liveActivityGatewayAPI.get(url, {
42
- params
43
- })
44
- return data
45
- }
46
-
47
- // 获取直播详情
48
- export async function getLiveActivity(id) {
49
- const url = `/live_activities/${id}/actions/full_info`
50
- const { data } = await liveActivityGatewayAPI.get(url)
51
- return data
52
- }
53
-
54
- // 获取直播回放详情
55
- export async function getLiveActivityReplay(id, params) {
56
- const url = `/live_activity_replays/${id}/actions/full_info`
57
- const { data } = await liveActivityGatewayAPI.get(url, {
58
- params
59
- })
60
- return data
61
- }
62
-
63
- // 直播举报
64
- export async function postLiveActivityAudit(data) {
65
- const url = '/v1/live_activity_audit_report'
66
- await liveActivityAPI.post(url, data)
67
- }
68
-
69
- // 获取 csToken
70
- export async function getCsToken(data) {
71
- // todo: 服务端为什么此接口没有版本号
72
- const url = '/uranus/cs/tokens'
73
- const response = await liveActivityAPI.post(url, data)
74
- return response.data
75
- }
76
-
77
- export async function postLiveActivity(data) {
78
- const url = '/v1/live_activities'
79
- const response = await liveActivityAPI.post(url, data)
80
- return response.data
81
- }
82
-
83
- // 获取用户是否被禁止直播
84
- export async function getUserLiveStatus(id) {
85
- const url = '/v1/live_activity_banned/actions/by_user_id'
86
- const response = await liveActivityAPI.get(url, {
87
- params: {
88
- banned_user_id: id
89
- }
90
- })
91
- return response.data
92
- }
93
-
94
- // 服务器时间
95
- export async function getServerTime() {
96
- // https://pms.101.com/index.php?m=bug&f=view&bugID=692948 返回浏览器会走disk cache 加时间戳
97
- const url = `/v1/server_time?v=${Date.now()}`
98
- const response = await liveActivityAPI.get(url).catch(() => ({
99
- data: {
100
- server_time: Date.now()
101
- }
102
- }))
103
- return response.data
104
- }
105
-
106
- async function _getLiveAPICache() {
107
- const url = config.api['live-static-json']
108
- try {
109
- const result = await axios.get(url)
110
- const serverTime = dayjs(result.headers.date).valueOf()
111
- return {
112
- data: result.data,
113
- serverTime,
114
- diffTime: Date.now() - serverTime
115
- }
116
- } catch (e) {
117
- console.error('getLiveAPICache fail', e)
118
- return null
119
- }
120
- }
121
-
122
- const getLiveAPICache = withOnce(_getLiveAPICache)
123
-
124
- export async function getOpenClassWithCache(url) {
125
- const fullUrl = `${window.location.protocol}${proxyApi.defaults.baseURL}${url}`
126
- const cacheInfo = await getLiveAPICache()
127
- if (cacheInfo) {
128
- const cacheData = cacheInfo.data.find((item) => item.source_key === fullUrl)
129
- if (cacheData) {
130
- try {
131
- return {
132
- ...JSON.parse(cacheData.json_value),
133
- serverTime: cacheInfo.serverTime,
134
- diffTime: cacheInfo.diffTime
135
- }
136
- } catch (e) {
137
- console.error('getOpenClassWithCache parse error', e)
138
- }
139
- }
140
- }
141
- const result = await proxyApi.get(url)
142
- if (result.headers.date) {
143
- const serverTime = dayjs(result.headers.date).valueOf()
144
- return {
145
- ...result.data,
146
- serverTime,
147
- diffTime: Date.now() - serverTime
148
- }
149
- }
150
- return result.data
151
- }
152
-
153
- // 公开直播详情变化部分,失败要降级处理
154
- export async function getOpenClassLiveSimple(liveInfo) {
155
- const url = `/v1/open_class_lives/${liveInfo.live_id}/simple`
156
- const data = await getOpenClassWithCache(url)
157
- .catch(() => {
158
- const isRecordLive = liveInfo.type === PUBLIC_LIVE_MODE.RECORDED
159
- // 录播组件会计算状态,设置为0即可
160
- const status = isRecordLive ? 0 : getLocalHlsLiveStatus(Date.now(), liveInfo.begin_time, liveInfo.end_time)
161
- return {
162
- live_id: liveInfo.live_id,
163
- view_replay: VIEW_REPLAY.NOT_ALLOW,
164
- replay_url: '',
165
- provide_record: PROVIDE_RECORD.NOT_PROVIDED,
166
- status
167
- }
168
- })
169
- return data
170
- }
171
-
172
- // 公开直播详情拆分成两个接口
173
- export async function getOpenClassLiveBase(id) {
174
- const url = `/v3/open_class_lives/${id}`
175
- const data = await getOpenClassWithCache(url)
176
- const { sub_type: subType } = data
177
-
178
- // 外部推流则直接返回, 不去请求兼容接口
179
- if (subType === SUB_TYPE.OUTSIDE) {
180
- return data
181
- }
182
-
183
- const dynamicInfo = await getOpenClassLiveSimple(data)
184
- return {
185
- ...data,
186
- ...dynamicInfo
187
- }
188
- }
189
-
190
- // 公开实时直播-发起直播-公共直播邀请页使用,适配为班级直播数据
191
- export async function getOpenClassLiveAdapter(id) {
192
- const data = await getOpenClassLiveBase(id)
193
- return {
194
- ...data,
195
- live_activity_id: data.live_id,
196
- name: data.live_name,
197
- stat: data.status === PUBLIC_LIVE_STATUS.PASUED ? PUBLIC_LIVE_STATUS.LIVEING : data.status, // 暂停按直播显示
198
- is_deleted: data.status === PUBLIC_LIVE_STATUS.OFFLINE,
199
- create_user_user_facade: {
200
- icon: getAvatarURL(data.lecture_user_id),
201
- display_real_name: data.lecture_user_name
202
- }
203
- }
204
- }
205
-
206
- export async function getOpenClassLive(id) {
207
- const serviceConfig = await getServiceConfig('x-cloud')
208
- const liveCloseLogin = serviceConfig.properties.live_close_login || LIVING_CLOSE_LOGIN.NORMAL
209
- const data = await getOpenClassLiveBase(id)
210
- if (liveCloseLogin === LIVING_CLOSE_LOGIN.CLOSE) {
211
- data.login = false
212
- }
213
- return data
214
- }
215
-
216
- export async function getMyOpenClassLives({
217
- offset = 0,
218
- limit = 10
219
- }) {
220
- const url = '/v1/open_class_lives'
221
- const response = await liveActivityAPI.get(url, {
222
- params: {
223
- offset,
224
- limit
225
- }
226
- })
227
- return response.data
228
- }
229
-
230
- /* 获取直播详情数据 */
231
- export async function getLiveInfo(ids) {
232
- const promies = ids.map((id) => liveProxy.get(`/v3/open_class_lives/${id}`))
233
- const result = await Promise.all(promies)
234
- return result.map((res) => res.data)
235
- // return result?.data || {}
236
- }
237
-
238
- /**
239
- * 查询直播列表-前台
240
- */
241
- export async function OpenLiveSearchFront({
242
- status,
243
- scopeType,
244
- scopeId,
245
- offset,
246
- limit
247
- }) {
248
- try {
249
- const url = '/v1/open_class_lives/search_front'
250
- const response = await proxyApi.get(url, {
251
- params: {
252
- status: status === 'all' ? undefined : status,
253
- scope_type: scopeType,
254
- scope_id: scopeId,
255
- offset,
256
- limit
257
- }
258
- })
259
- return response?.data || {
260
- count: 0,
261
- items: []
262
- }
263
- } catch (_) {
264
- return {
265
- count: 0,
266
- items: []
267
- }
268
- }
269
- }
270
-
271
- /**
272
- * 获取预约直播
273
- */
274
- export async function getSubscription() {
275
- try {
276
- const url = '/v1/open_class_lives/actions/get_subscription'
277
- const response = await liveActivityAPI.get(url)
278
- return response.data
279
- } catch (_) {
280
- return []
281
- }
282
- }
283
-
284
- /**
285
- * 预约直播
286
- */
287
- export async function openLiveSubscribe({
288
- liveId
289
- }) {
290
- const url = `/v1/open_class_lives/${liveId}/actions/subscribe`
291
- const response = await liveActivityAPI.post(url)
292
- return response?.data
293
- }
1
+ import axios from 'axios'
2
+ import dayjs from 'dayjs'
3
+ import config from '@/config/env'
4
+ import liveActivityAPI, { proxyApi } from '@/config/request/live-activity'
5
+ import liveActivityGatewayAPI from '@/config/request/live-activity-gateway'
6
+ import { PUBLIC_LIVE_STATUS, LIVING_CLOSE_LOGIN, PUBLIC_LIVE_MODE, VIEW_REPLAY, PROVIDE_RECORD, SUB_TYPE } from '@/config/publicLive'
7
+ import getServiceConfig from '@/lib/getServiceConfig'
8
+ import { getAvatarURL } from '@/util/auth/func'
9
+ import { getLocalHlsLiveStatus } from '@/util/live'
10
+ import { withOnce } from '@/util/hof'
11
+ import { liveProxy } from '@/config/request/x-proxy'
12
+
13
+ export async function getLiveActivities(params) {
14
+ const { liveDateString, isTeacher, ...requestParams } = params
15
+ if (requestParams.status < 0) {
16
+ delete requestParams.status
17
+ }
18
+ if (liveDateString) {
19
+ requestParams.begin_time = `${liveDateString} 00:00:00`
20
+ requestParams.end_time = `${liveDateString} 23:59:59`
21
+ }
22
+ if (!isTeacher) {
23
+ delete requestParams.filter_creator
24
+ }
25
+ const requestFn = isTeacher ? getTeacherLiveActivities : getStudentLiveActivities
26
+ return requestFn(requestParams)
27
+ }
28
+
29
+ // 获取老师的直播列表
30
+ export async function getTeacherLiveActivities(params) {
31
+ const url = '/live_activities/actions/teacher_search'
32
+ const { data } = await liveActivityGatewayAPI.get(url, {
33
+ params
34
+ })
35
+ return data
36
+ }
37
+
38
+ // 获取学生的直播列表
39
+ export async function getStudentLiveActivities(params) {
40
+ const url = '/live_activities/actions/user_search'
41
+ const { data } = await liveActivityGatewayAPI.get(url, {
42
+ params
43
+ })
44
+ return data
45
+ }
46
+
47
+ // 获取直播详情
48
+ export async function getLiveActivity(id) {
49
+ const url = `/live_activities/${id}/actions/full_info`
50
+ const { data } = await liveActivityGatewayAPI.get(url)
51
+ return data
52
+ }
53
+
54
+ // 获取直播回放详情
55
+ export async function getLiveActivityReplay(id, params) {
56
+ const url = `/live_activity_replays/${id}/actions/full_info`
57
+ const { data } = await liveActivityGatewayAPI.get(url, {
58
+ params
59
+ })
60
+ return data
61
+ }
62
+
63
+ // 直播举报
64
+ export async function postLiveActivityAudit(data) {
65
+ const url = '/v1/live_activity_audit_report'
66
+ await liveActivityAPI.post(url, data)
67
+ }
68
+
69
+ // 获取 csToken
70
+ export async function getCsToken(data) {
71
+ // todo: 服务端为什么此接口没有版本号
72
+ const url = '/uranus/cs/tokens'
73
+ const response = await liveActivityAPI.post(url, data)
74
+ return response.data
75
+ }
76
+
77
+ export async function postLiveActivity(data) {
78
+ const url = '/v1/live_activities'
79
+ const response = await liveActivityAPI.post(url, data)
80
+ return response.data
81
+ }
82
+
83
+ // 获取用户是否被禁止直播
84
+ export async function getUserLiveStatus(id) {
85
+ const url = '/v1/live_activity_banned/actions/by_user_id'
86
+ const response = await liveActivityAPI.get(url, {
87
+ params: {
88
+ banned_user_id: id
89
+ }
90
+ })
91
+ return response.data
92
+ }
93
+
94
+ // 服务器时间
95
+ export async function getServerTime() {
96
+ // https://pms.101.com/index.php?m=bug&f=view&bugID=692948 返回浏览器会走disk cache 加时间戳
97
+ const url = `/v1/server_time?v=${Date.now()}`
98
+ const response = await liveActivityAPI.get(url).catch(() => ({
99
+ data: {
100
+ server_time: Date.now()
101
+ }
102
+ }))
103
+ return response.data
104
+ }
105
+
106
+ async function _getLiveAPICache() {
107
+ const url = config.api['live-static-json']
108
+ try {
109
+ const result = await axios.get(url)
110
+ const serverTime = dayjs(result.headers.date).valueOf()
111
+ return {
112
+ data: result.data,
113
+ serverTime,
114
+ diffTime: Date.now() - serverTime
115
+ }
116
+ } catch (e) {
117
+ console.error('getLiveAPICache fail', e)
118
+ return null
119
+ }
120
+ }
121
+
122
+ const getLiveAPICache = withOnce(_getLiveAPICache)
123
+
124
+ export async function getOpenClassWithCache(url) {
125
+ const fullUrl = `${window.location.protocol}${proxyApi.defaults.baseURL}${url}`
126
+ const cacheInfo = await getLiveAPICache()
127
+ if (cacheInfo) {
128
+ const cacheData = cacheInfo.data.find((item) => item.source_key === fullUrl)
129
+ if (cacheData) {
130
+ try {
131
+ return {
132
+ ...JSON.parse(cacheData.json_value),
133
+ serverTime: cacheInfo.serverTime,
134
+ diffTime: cacheInfo.diffTime
135
+ }
136
+ } catch (e) {
137
+ console.error('getOpenClassWithCache parse error', e)
138
+ }
139
+ }
140
+ }
141
+ const result = await proxyApi.get(url)
142
+ if (result.headers.date) {
143
+ const serverTime = dayjs(result.headers.date).valueOf()
144
+ return {
145
+ ...result.data,
146
+ serverTime,
147
+ diffTime: Date.now() - serverTime
148
+ }
149
+ }
150
+ return result.data
151
+ }
152
+
153
+ // 公开直播详情变化部分,失败要降级处理
154
+ export async function getOpenClassLiveSimple(liveInfo) {
155
+ const url = `/v1/open_class_lives/${liveInfo.live_id}/simple`
156
+ const data = await getOpenClassWithCache(url)
157
+ .catch(() => {
158
+ const isRecordLive = liveInfo.type === PUBLIC_LIVE_MODE.RECORDED
159
+ // 录播组件会计算状态,设置为0即可
160
+ const status = isRecordLive ? 0 : getLocalHlsLiveStatus(Date.now(), liveInfo.begin_time, liveInfo.end_time)
161
+ return {
162
+ live_id: liveInfo.live_id,
163
+ view_replay: VIEW_REPLAY.NOT_ALLOW,
164
+ replay_url: '',
165
+ provide_record: PROVIDE_RECORD.NOT_PROVIDED,
166
+ status
167
+ }
168
+ })
169
+ return data
170
+ }
171
+
172
+ // 公开直播详情拆分成两个接口
173
+ export async function getOpenClassLiveBase(id) {
174
+ const url = `/v3/open_class_lives/${id}`
175
+ const data = await getOpenClassWithCache(url)
176
+ const { sub_type: subType } = data
177
+
178
+ // 外部推流则直接返回, 不去请求兼容接口
179
+ if (subType === SUB_TYPE.OUTSIDE) {
180
+ return data
181
+ }
182
+
183
+ const dynamicInfo = await getOpenClassLiveSimple(data)
184
+ return {
185
+ ...data,
186
+ ...dynamicInfo
187
+ }
188
+ }
189
+
190
+ // 公开实时直播-发起直播-公共直播邀请页使用,适配为班级直播数据
191
+ export async function getOpenClassLiveAdapter(id) {
192
+ const data = await getOpenClassLiveBase(id)
193
+ return {
194
+ ...data,
195
+ live_activity_id: data.live_id,
196
+ name: data.live_name,
197
+ stat: data.status === PUBLIC_LIVE_STATUS.PASUED ? PUBLIC_LIVE_STATUS.LIVEING : data.status, // 暂停按直播显示
198
+ is_deleted: data.status === PUBLIC_LIVE_STATUS.OFFLINE,
199
+ create_user_user_facade: {
200
+ icon: getAvatarURL(data.lecture_user_id),
201
+ display_real_name: data.lecture_user_name
202
+ }
203
+ }
204
+ }
205
+
206
+ export async function getOpenClassLive(id) {
207
+ const serviceConfig = await getServiceConfig('x-cloud')
208
+ const liveCloseLogin = serviceConfig.properties.live_close_login || LIVING_CLOSE_LOGIN.NORMAL
209
+ const data = await getOpenClassLiveBase(id)
210
+ if (liveCloseLogin === LIVING_CLOSE_LOGIN.CLOSE) {
211
+ data.login = false
212
+ }
213
+ return data
214
+ }
215
+
216
+ export async function getMyOpenClassLives({
217
+ offset = 0,
218
+ limit = 10
219
+ }) {
220
+ const url = '/v1/open_class_lives'
221
+ const response = await liveActivityAPI.get(url, {
222
+ params: {
223
+ offset,
224
+ limit
225
+ }
226
+ })
227
+ return response.data
228
+ }
229
+
230
+ /* 获取直播详情数据 */
231
+ export async function getLiveInfo(ids) {
232
+ const promies = ids.map((id) => liveProxy.get(`/v3/open_class_lives/${id}`))
233
+ const result = await Promise.all(promies)
234
+ return result.map((res) => res.data)
235
+ // return result?.data || {}
236
+ }
237
+
238
+ /**
239
+ * 查询直播列表-前台
240
+ */
241
+ export async function OpenLiveSearchFront({
242
+ status,
243
+ scopeType,
244
+ scopeId,
245
+ offset,
246
+ limit
247
+ }) {
248
+ try {
249
+ const url = '/v1/open_class_lives/search_front'
250
+ const response = await proxyApi.get(url, {
251
+ params: {
252
+ status: status === 'all' ? undefined : status,
253
+ scope_type: scopeType,
254
+ scope_id: scopeId,
255
+ offset,
256
+ limit
257
+ }
258
+ })
259
+ return response?.data || {
260
+ count: 0,
261
+ items: []
262
+ }
263
+ } catch (_) {
264
+ return {
265
+ count: 0,
266
+ items: []
267
+ }
268
+ }
269
+ }
270
+
271
+ /**
272
+ * 获取预约直播
273
+ */
274
+ export async function getSubscription() {
275
+ try {
276
+ const url = '/v1/open_class_lives/actions/get_subscription'
277
+ const response = await liveActivityAPI.get(url)
278
+ return response.data
279
+ } catch (_) {
280
+ return []
281
+ }
282
+ }
283
+
284
+ /**
285
+ * 预约直播
286
+ */
287
+ export async function openLiveSubscribe({
288
+ liveId
289
+ }) {
290
+ const url = `/v1/open_class_lives/${liveId}/actions/subscribe`
291
+ const response = await liveActivityAPI.post(url)
292
+ return response?.data
293
+ }
@@ -1,7 +1,7 @@
1
- import ManageApi from '@/config/request/manage-api'
2
-
3
- // 获取管理后台角色
4
- export async function getManageRoles() {
5
- const { data } = await ManageApi.get('/v1/users/actions/get_my_manage_roles')
6
- return data
7
- }
1
+ import ManageApi from '@/config/request/manage-api'
2
+
3
+ // 获取管理后台角色
4
+ export async function getManageRoles() {
5
+ const { data } = await ManageApi.get('/v1/users/actions/get_my_manage_roles')
6
+ return data
7
+ }
@@ -1,6 +1,6 @@
1
- import ManagePortalApi from '@/config/request/manage-portal'
2
-
3
- export async function checkAppPermission() {
4
- const resp = await ManagePortalApi.get('/v2/apps/actions/check_app_permission')
5
- return resp?.data
6
- }
1
+ import ManagePortalApi from '@/config/request/manage-portal'
2
+
3
+ export async function checkAppPermission() {
4
+ const resp = await ManagePortalApi.get('/v2/apps/actions/check_app_permission')
5
+ return resp?.data
6
+ }