@x-edu/live-player 0.0.19 → 0.0.21

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 (302) 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 +12161 -1154
  9. package/dist/XEduLivePlayerPre.common.js +12369 -1358
  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 +99 -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 +31 -31
  155. package/src/component/Pagination/index.module.less +110 -110
  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 +166 -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 +64 -64
  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 +482 -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 +98 -98
  249. package/src/list/ListItem/Action/index.module.less +21 -21
  250. package/src/list/ListItem/img/dianzan.svg +4 -0
  251. package/src/list/ListItem/img/play.svg +15 -15
  252. package/src/list/ListItem/img/yiguankan.svg +3 -0
  253. package/src/list/ListItem/index.jsx +24 -1
  254. package/src/list/ListItem/index.module.less +146 -123
  255. package/src/list/index.jsx +80 -0
  256. package/src/list/index.module.less +35 -35
  257. package/src/service/common.js +73 -73
  258. package/src/service/content-mgr.js +73 -73
  259. package/src/service/im-group.js +12 -12
  260. package/src/service/im.js +7 -7
  261. package/src/service/imBroadcasts.js +33 -33
  262. package/src/service/like.js +134 -134
  263. package/src/service/manageApi.js +7 -7
  264. package/src/service/managePortal.js +6 -6
  265. package/src/service/myStudyRecord.js +93 -93
  266. package/src/service/navigation.js +47 -47
  267. package/src/service/ndMeeting.js +10 -10
  268. package/src/service/ndr.js +122 -122
  269. package/src/service/news.js +93 -93
  270. package/src/service/personalCenter.js +270 -270
  271. package/src/service/qualityCourse.js +31 -31
  272. package/src/service/recommend.js +81 -81
  273. package/src/service/school.js +323 -323
  274. package/src/service/search.js +170 -170
  275. package/src/service/site-config.js +7 -7
  276. package/src/service/socialCensor.js +45 -45
  277. package/src/service/specialEdu.js +31 -31
  278. package/src/service/suggestion.js +85 -85
  279. package/src/service/syncClassroom.js +321 -321
  280. package/src/service/tCourse.js +204 -204
  281. package/src/service/tchTraining.js +37 -37
  282. package/src/service/uc.js +45 -45
  283. package/src/util/app.js +1 -1
  284. package/src/util/array.js +3 -3
  285. package/src/util/auth/func.js +57 -57
  286. package/src/util/date.js +53 -53
  287. package/src/util/env.js +9 -9
  288. package/src/util/getTimestamp.js +10 -10
  289. package/src/util/hof.js +105 -105
  290. package/src/util/live/index.js +42 -42
  291. package/src/util/liveCountUtil.js +52 -0
  292. package/src/util/netUrl.js +35 -35
  293. package/src/util/object.js +13 -13
  294. package/src/util/push/index.js +58 -58
  295. package/src/util/request.js +227 -227
  296. package/src/util/type.js +17 -17
  297. package/src/util/url.js +203 -203
  298. package/src/util/video.js +26 -26
  299. package/test/setup.js +21 -21
  300. package/test/unit/component/header/logo.spec.jsx +8 -8
  301. package/test/unit/helper.jsx +25 -25
  302. package/test/unit/util/date.spec.js +40 -40
@@ -1,166 +1,166 @@
1
- import Request from '@/util/request'
2
- import { getTimestamp } from '@/util/getTimestamp'
3
- import config from '@/config/env'
4
- import { isInElectron, xElectron } from '@/util/env'
5
- import { getSdpQuery } from '@/util/url'
6
- import { getAuthHeader } from '@/util/auth/func'
7
-
8
- const IGNORE_403_HOST = ['x-record-api']
9
-
10
- const {
11
- sdpOrgId,
12
- sdpAppId
13
- } = getSdpQuery()
14
-
15
- export function rawAPI(params) {
16
- const { hostKey, prefix = '', noSdpOrgId = false } = params
17
- // 生产环境,CDN请求增加header会导致莫名其妙的跨域错误
18
- const headers = {}
19
- if (config.api.staticKeys.indexOf(hostKey) === -1) {
20
- if (!headers['sdp-app-id']) {
21
- headers['sdp-app-id'] = sdpAppId || config.app.appid
22
- }
23
- if (!noSdpOrgId && sdpOrgId && !headers['sdp-org-id']) {
24
- headers['sdp-org-id'] = sdpOrgId
25
- }
26
- // 本地构建请求禁用缓存
27
- if (process.env.DEV) {
28
- // headers['Cache-Control'] = 'no-cache'
29
- }
30
- }
31
-
32
- if (hostKey) {
33
- params.originBaseURL = `${config.api[hostKey]}${prefix}`
34
- params.baseURL = params.originBaseURL
35
- // params.baseURL = process.env.DEV ? `/wds_${hostKey}${prefix}` : params.originBaseURL
36
- }
37
-
38
- const api = Request.create({
39
- headers,
40
- ...params
41
- })
42
- return api
43
- }
44
-
45
- /**
46
- * 用于创建通用 api 请求对象,携带 loading、error 通用处理
47
- */
48
- export function generateCommonAPI(params) {
49
- const api = rawAPI({
50
- ...params
51
- })
52
-
53
- api.interceptors.request.use(async (c) => {
54
- c.params = c.params || {}
55
- if (process.env.SDP_ENV !== 'ncet-xedu') {
56
- c.params.v = c.params.v ?? getTimestamp(10 * 60)
57
- }
58
- return c
59
- })
60
-
61
- return api
62
- }
63
-
64
- /**
65
- * 用于创建需要使用 UC 认证的 api,基于 generateCommonAPI;
66
- */
67
- export function generateCommonAPIWithUC(params, throwError = false) {
68
- const api = rawAPI({
69
- ...params
70
- })
71
-
72
- api.interceptors.request.use(async (c) => {
73
- if (c.noAuth) {
74
- return c
75
- }
76
- // UC 计算 mac token 必须是完整的 URL
77
- const Authorization = await getAuthHeader({
78
- ...c,
79
- url: getURL(c)
80
- })
81
- if (Authorization) {
82
- c.headers.Authorization = Authorization
83
- }
84
- return c
85
- })
86
-
87
- api.interceptors.response.use(
88
- (response) => response,
89
- (error) => {
90
- if ([
91
- 'WAF/ACCESS_DENIED',
92
- 'UC/AUTH_INVALID_TOKEN'
93
- ].includes(error?.response?.data?.code)) {
94
- if (IGNORE_403_HOST.indexOf(error?.config?.hostKey) === -1) {
95
- if (!isInElectron) {
96
- window.location.pathname = '/'
97
- } else {
98
- xElectron.subView.triggerLogout(error.message)
99
- }
100
- }
101
- }
102
- /* 新增,如果需要报错信息,则抛出 */
103
- if (throwError) {
104
- throw error
105
- }
106
- }
107
- )
108
-
109
- return api
110
- }
111
-
112
- /**
113
- * 用于百度云需要走cdn代理的接口(接口访问频率比较高,单独设了代理,可以理解为缓存)
114
- * 代理的接口不需要传认证
115
- * 基于generateCommonAPIWithUC
116
- */
117
- export function generateAPIWithProxy(params, throwError = false) {
118
- const api = rawAPI({
119
- ...params
120
- })
121
-
122
- api.interceptors.request.use(async (c) => {
123
- if (c.noAuth) {
124
- return c
125
- }
126
- // 百度云环境不需要认证
127
- if (process.env.SDP_ENV === 'ncet-xedu') {
128
- return c
129
- }
130
- // UC 计算 mac token 必须是完整的 URL
131
- const Authorization = await getAuthHeader({
132
- ...c,
133
- url: getURL(c)
134
- })
135
- if (Authorization) {
136
- c.headers.Authorization = Authorization
137
- }
138
- return c
139
- })
140
-
141
- api.interceptors.response.use(
142
- (response) => response,
143
- (error) => {
144
- if (error?.response?.data?.code === 'WAF/ACCESS_DENIED') {
145
- window.location.pathname = '/'
146
- }
147
- /* 新增,如果需要报错信息,则抛出 */
148
- if (throwError) {
149
- return error
150
- }
151
- }
152
- )
153
-
154
- return api
155
- }
156
-
157
- function getURL(c) {
158
- const { url, originBaseURL } = c
159
- if (/^https?:/.test(url)) {
160
- return url
161
- }
162
- if (/^https?:/.test(originBaseURL)) {
163
- return `${originBaseURL}${c.url}`
164
- }
165
- return `https:${originBaseURL}${c.url}`
166
- }
1
+ import Request from '@/util/request'
2
+ import { getTimestamp } from '@/util/getTimestamp'
3
+ import config from '@/config/env'
4
+ import { isInElectron, xElectron } from '@/util/env'
5
+ import { getSdpQuery } from '@/util/url'
6
+ import { getAuthHeader } from '@/util/auth/func'
7
+
8
+ const IGNORE_403_HOST = ['x-record-api']
9
+
10
+ const {
11
+ sdpOrgId,
12
+ sdpAppId
13
+ } = getSdpQuery()
14
+
15
+ export function rawAPI(params) {
16
+ const { hostKey, prefix = '', noSdpOrgId = false } = params
17
+ // 生产环境,CDN请求增加header会导致莫名其妙的跨域错误
18
+ const headers = {}
19
+ if (config.api.staticKeys.indexOf(hostKey) === -1) {
20
+ if (!headers['sdp-app-id']) {
21
+ headers['sdp-app-id'] = sdpAppId || config.app.appid
22
+ }
23
+ if (!noSdpOrgId && sdpOrgId && !headers['sdp-org-id']) {
24
+ headers['sdp-org-id'] = sdpOrgId
25
+ }
26
+ // 本地构建请求禁用缓存
27
+ if (process.env.DEV) {
28
+ // headers['Cache-Control'] = 'no-cache'
29
+ }
30
+ }
31
+
32
+ if (hostKey) {
33
+ params.originBaseURL = `${config.api[hostKey]}${prefix}`
34
+ params.baseURL = params.originBaseURL
35
+ // params.baseURL = process.env.DEV ? `/wds_${hostKey}${prefix}` : params.originBaseURL
36
+ }
37
+
38
+ const api = Request.create({
39
+ headers,
40
+ ...params
41
+ })
42
+ return api
43
+ }
44
+
45
+ /**
46
+ * 用于创建通用 api 请求对象,携带 loading、error 通用处理
47
+ */
48
+ export function generateCommonAPI(params) {
49
+ const api = rawAPI({
50
+ ...params
51
+ })
52
+
53
+ api.interceptors.request.use(async (c) => {
54
+ c.params = c.params || {}
55
+ if (process.env.SDP_ENV !== 'ncet-xedu') {
56
+ c.params.v = c.params.v ?? getTimestamp(10 * 60)
57
+ }
58
+ return c
59
+ })
60
+
61
+ return api
62
+ }
63
+
64
+ /**
65
+ * 用于创建需要使用 UC 认证的 api,基于 generateCommonAPI;
66
+ */
67
+ export function generateCommonAPIWithUC(params, throwError = false) {
68
+ const api = rawAPI({
69
+ ...params
70
+ })
71
+
72
+ api.interceptors.request.use(async (c) => {
73
+ if (c.noAuth) {
74
+ return c
75
+ }
76
+ // UC 计算 mac token 必须是完整的 URL
77
+ const Authorization = await getAuthHeader({
78
+ ...c,
79
+ url: getURL(c)
80
+ })
81
+ if (Authorization) {
82
+ c.headers.Authorization = Authorization
83
+ }
84
+ return c
85
+ })
86
+
87
+ api.interceptors.response.use(
88
+ (response) => response,
89
+ (error) => {
90
+ if ([
91
+ 'WAF/ACCESS_DENIED',
92
+ 'UC/AUTH_INVALID_TOKEN'
93
+ ].includes(error?.response?.data?.code)) {
94
+ if (IGNORE_403_HOST.indexOf(error?.config?.hostKey) === -1) {
95
+ if (!isInElectron) {
96
+ window.location.pathname = '/'
97
+ } else {
98
+ xElectron.subView.triggerLogout(error.message)
99
+ }
100
+ }
101
+ }
102
+ /* 新增,如果需要报错信息,则抛出 */
103
+ if (throwError) {
104
+ throw error
105
+ }
106
+ }
107
+ )
108
+
109
+ return api
110
+ }
111
+
112
+ /**
113
+ * 用于百度云需要走cdn代理的接口(接口访问频率比较高,单独设了代理,可以理解为缓存)
114
+ * 代理的接口不需要传认证
115
+ * 基于generateCommonAPIWithUC
116
+ */
117
+ export function generateAPIWithProxy(params, throwError = false) {
118
+ const api = rawAPI({
119
+ ...params
120
+ })
121
+
122
+ api.interceptors.request.use(async (c) => {
123
+ if (c.noAuth) {
124
+ return c
125
+ }
126
+ // 百度云环境不需要认证
127
+ if (process.env.SDP_ENV === 'ncet-xedu') {
128
+ return c
129
+ }
130
+ // UC 计算 mac token 必须是完整的 URL
131
+ const Authorization = await getAuthHeader({
132
+ ...c,
133
+ url: getURL(c)
134
+ })
135
+ if (Authorization) {
136
+ c.headers.Authorization = Authorization
137
+ }
138
+ return c
139
+ })
140
+
141
+ api.interceptors.response.use(
142
+ (response) => response,
143
+ (error) => {
144
+ if (error?.response?.data?.code === 'WAF/ACCESS_DENIED') {
145
+ window.location.pathname = '/'
146
+ }
147
+ /* 新增,如果需要报错信息,则抛出 */
148
+ if (throwError) {
149
+ return error
150
+ }
151
+ }
152
+ )
153
+
154
+ return api
155
+ }
156
+
157
+ function getURL(c) {
158
+ const { url, originBaseURL } = c
159
+ if (/^https?:/.test(url)) {
160
+ return url
161
+ }
162
+ if (/^https?:/.test(originBaseURL)) {
163
+ return `${originBaseURL}${c.url}`
164
+ }
165
+ return `https:${originBaseURL}${c.url}`
166
+ }
@@ -1,12 +1,12 @@
1
- import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
-
3
- const api = generateCommonAPIWithUC({
4
- hostKey: 'im-broadcasts',
5
- prefix: ''
6
- })
7
-
8
- export default api
9
-
10
- export const staticAPI = generateCommonAPI({
11
- hostKey: 'im-broadcasts-static'
12
- })
1
+ import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
+
3
+ const api = generateCommonAPIWithUC({
4
+ hostKey: 'im-broadcasts',
5
+ prefix: ''
6
+ })
7
+
8
+ export default api
9
+
10
+ export const staticAPI = generateCommonAPI({
11
+ hostKey: 'im-broadcasts-static'
12
+ })
@@ -1,8 +1,8 @@
1
- import { generateCommonAPIWithUC } from './helper'
2
-
3
- const api = generateCommonAPIWithUC({
4
- hostKey: 'live-activity-gateway',
5
- prefix: '/v1'
6
- })
7
-
8
- export default api
1
+ import { generateCommonAPIWithUC } from './helper'
2
+
3
+ const api = generateCommonAPIWithUC({
4
+ hostKey: 'live-activity-gateway',
5
+ prefix: '/v1'
6
+ })
7
+
8
+ export default api
@@ -1,13 +1,13 @@
1
- import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
-
3
- const api = generateCommonAPIWithUC({
4
- hostKey: 'live-activity',
5
- prefix: ''
6
- }, true)
7
-
8
- export default api
9
-
10
- export const proxyApi = generateCommonAPI({
11
- hostKey: 'x-proxy',
12
- prefix: '/proxy/live'
13
- })
1
+ import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
+
3
+ const api = generateCommonAPIWithUC({
4
+ hostKey: 'live-activity',
5
+ prefix: ''
6
+ }, true)
7
+
8
+ export default api
9
+
10
+ export const proxyApi = generateCommonAPI({
11
+ hostKey: 'x-proxy',
12
+ prefix: '/proxy/live'
13
+ })
@@ -1,6 +1,6 @@
1
- import { generateCommonAPI } from './helper'
2
-
3
- // 用于少数仅一个接口,且不区分环境的情况
4
- const api = generateCommonAPI()
5
-
6
- export default api
1
+ import { generateCommonAPI } from './helper'
2
+
3
+ // 用于少数仅一个接口,且不区分环境的情况
4
+ const api = generateCommonAPI()
5
+
6
+ export default api
@@ -1,13 +1,13 @@
1
- import { generateCommonAPIWithUC, generateCommonAPI } from './helper'
2
-
3
- const api = generateCommonAPIWithUC({
4
- hostKey: 'x-cloud-web',
5
- prefix: ''
6
- })
7
-
8
- export default api
9
-
10
- export const apiCommon = generateCommonAPI({
11
- hostKey: 'x-cloud-web',
12
- prefix: ''
13
- })
1
+ import { generateCommonAPIWithUC, generateCommonAPI } from './helper'
2
+
3
+ const api = generateCommonAPIWithUC({
4
+ hostKey: 'x-cloud-web',
5
+ prefix: ''
6
+ })
7
+
8
+ export default api
9
+
10
+ export const apiCommon = generateCommonAPI({
11
+ hostKey: 'x-cloud-web',
12
+ prefix: ''
13
+ })
@@ -1,34 +1,34 @@
1
- import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
-
3
- // test5.ykt.eduyun.cn 为提测的地址
4
- // 使用测试环境数据
5
-
6
- const api = generateCommonAPI({
7
- hostKey: 'x-proxy',
8
- prefix: '/proxy/cloud'
9
- })
10
-
11
- export const liveProxy = generateCommonAPI({
12
- hostKey: 'x-proxy',
13
- prefix: '/proxy/live'
14
- })
15
-
16
- // 积分配置
17
- export const recordConfigAPI = generateCommonAPI({
18
- hostKey: 'x-proxy',
19
- prefix: '/proxy/record_config/v1'
20
- })
21
-
22
- // 资源推荐
23
- export const recommendAPI = generateCommonAPI({
24
- hostKey: 'x-proxy',
25
- prefix: '/proxy/recommend/v1'
26
- })
27
-
28
- // 资源推荐v2
29
- export const recommendAPIV2 = generateCommonAPIWithUC({
30
- hostKey: 'recommend',
31
- prefix: '/v2'
32
- })
33
-
34
- export default api
1
+ import { generateCommonAPI, generateCommonAPIWithUC } from './helper'
2
+
3
+ // test5.ykt.eduyun.cn 为提测的地址
4
+ // 使用测试环境数据
5
+
6
+ const api = generateCommonAPI({
7
+ hostKey: 'x-proxy',
8
+ prefix: '/proxy/cloud'
9
+ })
10
+
11
+ export const liveProxy = generateCommonAPI({
12
+ hostKey: 'x-proxy',
13
+ prefix: '/proxy/live'
14
+ })
15
+
16
+ // 积分配置
17
+ export const recordConfigAPI = generateCommonAPI({
18
+ hostKey: 'x-proxy',
19
+ prefix: '/proxy/record_config/v1'
20
+ })
21
+
22
+ // 资源推荐
23
+ export const recommendAPI = generateCommonAPI({
24
+ hostKey: 'x-proxy',
25
+ prefix: '/proxy/recommend/v1'
26
+ })
27
+
28
+ // 资源推荐v2
29
+ export const recommendAPIV2 = generateCommonAPIWithUC({
30
+ hostKey: 'recommend',
31
+ prefix: '/v2'
32
+ })
33
+
34
+ export default api
@@ -1,11 +1,11 @@
1
- import React from 'react'
2
- import Live from '../App'
3
-
4
- export default function Detail() {
5
- return (
6
- <Live.PublicLiveDetail
7
- liveId="25c5bdb9-0f27-4479-9d32-9bca2326988c"
8
- appId="e5649925-441d-4a53-b525-51a2f1c4e0a8"
9
- />
10
- )
11
- }
1
+ import React from 'react'
2
+ import Live from '../App'
3
+
4
+ export default function Detail() {
5
+ return (
6
+ <Live.PublicLiveDetail
7
+ liveId="25c5bdb9-0f27-4479-9d32-9bca2326988c"
8
+ appId="e5649925-441d-4a53-b525-51a2f1c4e0a8"
9
+ />
10
+ )
11
+ }
package/src/demo/List.jsx CHANGED
@@ -1,64 +1,64 @@
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, setUcInstance] = useState(uc)
26
- const [userInfo, setUserInfo] = useState(null)
27
-
28
- const handleSubscribe = (data) => {
29
- console.log(data)
30
- }
31
-
32
- useEffect(() => {
33
- async function init() {
34
- try {
35
- await ucInstance.login({
36
- loginName: '18695708674',
37
- password: 'Gyh.1122'
38
- // loginName: '18695708674',
39
- // password: 'gyh123456'
40
- })
41
- const account = ucInstance.getCurrentAccount()
42
- const info = await account.getAccountInfo()
43
- setUserInfo(info)
44
- } catch (error) {
45
- console.log(error)
46
- }
47
- }
48
- init()
49
- }, [])
50
-
51
- if (!userInfo) {
52
- return null
53
- }
54
-
55
- return (
56
- <Live.PublicLiveList
57
- uc={ucInstance}
58
- loginInfo={{
59
- userInfo
60
- }}
61
- onSubscribe={handleSubscribe}
62
- />
63
- )
64
- }
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, setUcInstance] = useState(uc)
26
+ const [userInfo, setUserInfo] = useState(null)
27
+
28
+ const handleSubscribe = (data) => {
29
+ console.log(data)
30
+ }
31
+
32
+ useEffect(() => {
33
+ async function init() {
34
+ try {
35
+ await ucInstance.login({
36
+ loginName: '18695708674',
37
+ password: 'Gyh.1122'
38
+ // loginName: '18695708674',
39
+ // password: 'gyh123456'
40
+ })
41
+ const account = ucInstance.getCurrentAccount()
42
+ const info = await account.getAccountInfo()
43
+ setUserInfo(info)
44
+ } catch (error) {
45
+ console.log(error)
46
+ }
47
+ }
48
+ init()
49
+ }, [])
50
+
51
+ if (!userInfo) {
52
+ return null
53
+ }
54
+
55
+ return (
56
+ <Live.PublicLiveList
57
+ uc={ucInstance}
58
+ loginInfo={{
59
+ userInfo
60
+ }}
61
+ onSubscribe={handleSubscribe}
62
+ />
63
+ )
64
+ }