@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.
- package/.browserslistrc +10 -10
- package/.eslintignore +8 -8
- package/.eslintrc.js +26 -26
- package/.gem-mine +11 -11
- package/.postcssrc.js +6 -6
- package/README.md +145 -145
- package/babel.config.js +33 -33
- package/dist/XEduLivePlayer.common.js +12161 -1154
- package/dist/XEduLivePlayerPre.common.js +12369 -1358
- package/doc/develop.md +23 -23
- package/gem-mine.config.js +86 -86
- package/jest.config.js +9 -9
- package/jsconfig.json +15 -15
- package/mock/helper.js +8 -8
- package/mock/index.js +34 -34
- package/package.json +99 -99
- package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
- package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
- package/public/3rd/ali-player/aliplayer-min.js +1 -1
- package/public/3rd/im-web-push/index.umd.js +14 -14
- package/public/JsBridge.js +1602 -1602
- package/public/fish/editor/themes/default/css/ueditor.css +1905 -1905
- package/public/fish/editor/third-party/codemirror/codemirror.css +104 -104
- package/public/fish/editor/third-party/codemirror/codemirror.js +3581 -3581
- package/public/fish/editor/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
- package/public/fish/editor/ueditor.all.min.js +16 -16
- package/public/fish/editor/ueditor.config.js +467 -467
- package/public/fish/icon/umd-4.1.2.js +1 -1
- package/public/fish/video/videoplayer.min.css +6 -6
- package/public/fish/video/videoplayer.min.js +31 -31
- package/public/fish/video/zh-CN.js +82 -82
- package/public/icon/demo.css +539 -539
- package/public/icon/demo_index.html +2189 -2189
- package/public/icon/iconfont.css +363 -363
- package/public/icon/iconfont.json +618 -618
- package/public/index.html +50 -50
- package/script/image/readme.md +77 -77
- package/script/postcss.js +48 -48
- package/src/App.jsx +24 -24
- package/src/asset/img/course/playing.svg +21 -21
- package/src/asset/img/icon-course-white.svg +3 -3
- package/src/asset/img/icon-course.svg +3 -3
- package/src/asset/img/icon-eye-white.svg +4 -4
- package/src/asset/img/icon-eye.svg +4 -4
- package/src/asset/img/icon-school-white.svg +3 -3
- package/src/asset/img/icon-school.svg +3 -3
- package/src/asset/img/loading.svg +52 -52
- package/src/asset/img/video-play.svg +6 -6
- package/src/asset/style/background.less +19 -19
- package/src/asset/style/banner.less +36 -36
- package/src/asset/style/base.less +74 -74
- package/src/asset/style/index.less +114 -114
- package/src/asset/style/reset-theme.less +141 -141
- package/src/asset/style/theme/index.less +55 -55
- package/src/asset/style/theme/party/global.less +20 -20
- package/src/asset/style/theme/party/override.less +57 -57
- package/src/asset/style/theme/test/global.less +18 -18
- package/src/asset/style/theme/test/override.less +45 -45
- package/src/asset/style/variable.less +12 -12
- package/src/component/AliPlayer/index.jsx +49 -49
- package/src/component/Avatar/index.jsx +50 -50
- package/src/component/Empty/index.jsx +34 -34
- package/src/component/Empty/index.module.less +37 -37
- package/src/component/IMChatroom/component/status/403.jsx +13 -13
- package/src/component/IMChatroom/component/status/404.jsx +13 -13
- package/src/component/IMChatroom/component/status/Error.jsx +23 -23
- package/src/component/IMChatroom/component/status/Loading.jsx +5 -5
- package/src/component/IMChatroom/config/app/config.js +118 -118
- package/src/component/IMChatroom/config/app/index.js +60 -60
- package/src/component/IMChatroom/config/env.js +5 -5
- package/src/component/IMChatroom/config/index.js +3 -3
- package/src/component/IMChatroom/config/request/config/base.js +124 -124
- package/src/component/IMChatroom/config/request/config/chatroom.js +26 -26
- package/src/component/IMChatroom/config/request/config/imCoreApi.js +21 -21
- package/src/component/IMChatroom/config/request/index.js +21 -21
- package/src/component/IMChatroom/config/request/proxy.js +39 -39
- package/src/component/IMChatroom/config/url.js +7 -7
- package/src/component/IMChatroom/constants/errorCode.js +9 -9
- package/src/component/IMChatroom/constants/index.js +84 -84
- package/src/component/IMChatroom/constants/origin.js +27 -27
- package/src/component/IMChatroom/context/chatroom.js +154 -154
- package/src/component/IMChatroom/context/connect.js +28 -28
- package/src/component/IMChatroom/i18n/en/index.json +73 -73
- package/src/component/IMChatroom/i18n/index.jsx +14 -14
- package/src/component/IMChatroom/i18n/language.js +9 -9
- package/src/component/IMChatroom/i18n/zh-CN/index.json +73 -73
- package/src/component/IMChatroom/index.jsx +49 -49
- package/src/component/IMChatroom/page/chat/index.jsx +27 -27
- package/src/component/IMChatroom/page/chat/messageEditor/index.jsx +375 -375
- package/src/component/IMChatroom/page/chat/messageList/index.jsx +354 -354
- package/src/component/IMChatroom/page/chat/stickedMessage/index.jsx +59 -59
- package/src/component/IMChatroom/page/chat/stickedMessage/style/index.module.less +7 -7
- package/src/component/IMChatroom/page/chat/style/index.module.less +51 -51
- package/src/component/IMChatroom/page/home/connect/index.jsx +188 -188
- package/src/component/IMChatroom/page/home/connect/status.jsx +124 -124
- package/src/component/IMChatroom/page/home/context/cmd.jsx +37 -37
- package/src/component/IMChatroom/page/home/context/index.jsx +67 -67
- package/src/component/IMChatroom/page/home/index.jsx +164 -164
- package/src/component/IMChatroom/page/home/notice/index.jsx +123 -123
- package/src/component/IMChatroom/page/home/notice/style/index.module.less +49 -49
- package/src/component/IMChatroom/page/home/style/index.module.less +110 -110
- package/src/component/IMChatroom/page/member/index.jsx +15 -15
- package/src/component/IMChatroom/page/member/memberCount/index.jsx +44 -44
- package/src/component/IMChatroom/page/member/memberList/index.jsx +121 -121
- package/src/component/IMChatroom/page/member/style/index.module.less +2 -2
- package/src/component/IMChatroom/sdk/bridge.js +39 -39
- package/src/component/IMChatroom/sdk/cs/constants.js +20 -20
- package/src/component/IMChatroom/sdk/cs/index.js +101 -101
- package/src/component/IMChatroom/sdk/imChatroom.js +15 -15
- package/src/component/IMChatroom/sdk/imcore/constants.js +128 -128
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomDestroyed.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomInfoGetFail.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedByAdmin.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedBySelf.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginFail.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginSuccess.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogin.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogout.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnected.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnecting.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/connectionDisconnect.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/emitters/index.js +57 -57
- package/src/component/IMChatroom/sdk/imcore/emitters/messageReceive.js +36 -36
- package/src/component/IMChatroom/sdk/imcore/index.js +178 -178
- package/src/component/IMChatroom/sdk/imcore/interceptors/request.js +7 -7
- package/src/component/IMChatroom/sdk/imcore/interceptors/response.js +5 -5
- package/src/component/IMChatroom/sdk/imcore/plugins/getAuth.js +64 -64
- package/src/component/IMChatroom/sdk/imcore/plugins/getConversationId.js +20 -20
- package/src/component/IMChatroom/sdk/imcore/plugins/getExtInfo.js +10 -10
- package/src/component/IMChatroom/sdk/imcore/plugins/getLoginInfo.js +48 -48
- package/src/component/IMChatroom/sdk/imcore/plugins/getPlatformType.js +12 -12
- package/src/component/IMChatroom/sdk/imcore/plugins/index.js +22 -22
- package/src/component/IMChatroom/sdk/imcore/util/format.js +177 -177
- package/src/component/IMChatroom/sdk/imcore/util/parser.js +35 -35
- package/src/component/IMChatroom/sdk/oms.js +18 -18
- package/src/component/IMChatroom/sdk/uc.js +3 -3
- package/src/component/IMChatroom/subscription/channel/app.js +5 -5
- package/src/component/IMChatroom/subscription/channel/ctl.js +22 -22
- package/src/component/IMChatroom/subscription/channel/member.js +40 -40
- package/src/component/IMChatroom/subscription/channel/message.js +13 -13
- package/src/component/IMChatroom/subscription/channel/ntf.js +86 -86
- package/src/component/IMChatroom/subscription/channel/tel.js +5 -5
- package/src/component/IMChatroom/subscription/channel/websocket.js +5 -5
- package/src/component/IMChatroom/subscription/event.js +37 -37
- package/src/component/IMChatroom/subscription/index.js +19 -19
- package/src/component/IMChatroom/util/account.js +8 -8
- package/src/component/IMChatroom/util/chatroom.js +255 -255
- package/src/component/IMChatroom/util/jsonBigInt.js +5 -5
- package/src/component/IMChatroom/util/location.js +12 -12
- package/src/component/Icon/index.jsx +16 -16
- package/src/component/Icon/index.module.less +2 -2
- package/src/component/Pagination/LocalPagination.jsx +27 -27
- package/src/component/Pagination/RemotePagination.jsx +32 -32
- package/src/component/Pagination/index.jsx +31 -31
- package/src/component/Pagination/index.module.less +110 -110
- package/src/component/PlayerTip/index.jsx +34 -34
- package/src/component/VideoBase/index.jsx +242 -242
- package/src/component/VideoBase/style.less +65 -65
- package/src/component/VideoBase/utils.js +81 -81
- package/src/component/mixin.less +9 -9
- package/src/component/status/403.jsx +15 -15
- package/src/component/status/404/index.jsx +73 -73
- package/src/component/status/404/index.module.less +36 -36
- package/src/component/status/Error/error.module.less +13 -13
- package/src/component/status/Error/index.jsx +47 -47
- package/src/component/status/Loading/img/loading.svg +52 -52
- package/src/component/status/Loading/index.jsx +31 -31
- package/src/component/status/Loading/index.less +56 -56
- package/src/component/status/None/index.jsx +20 -20
- package/src/component/status/None/index.module.less +35 -35
- package/src/component/status/Status/index.jsx +26 -26
- package/src/component/status/Status/index.module.less +8 -8
- package/src/config/constant/commonUrl.js +2 -2
- package/src/config/constant/user.js +6 -6
- package/src/config/context/site-config.js +48 -48
- package/src/config/env/index.js +5 -5
- package/src/config/env/local/index.js +13 -13
- package/src/config/env/ncet-xedu/api.js +175 -175
- package/src/config/env/ncet-xedu/app.js +12 -12
- package/src/config/env/ncet-xedu/cs.js +8 -8
- package/src/config/env/ncet-xedu/index.js +14 -14
- package/src/config/env/ncet-xedu/push.js +5 -5
- package/src/config/env/preproduction/api.js +144 -144
- package/src/config/env/preproduction/app.js +12 -12
- package/src/config/env/preproduction/cs.js +8 -8
- package/src/config/env/preproduction/index.js +14 -14
- package/src/config/env/preproduction/push.js +5 -5
- package/src/config/env/product/api.js +113 -113
- package/src/config/env/product/app.js +12 -12
- package/src/config/env/product/cs.js +5 -5
- package/src/config/env/product/index.js +14 -14
- package/src/config/env/product/push.js +5 -5
- package/src/config/live.js +80 -80
- package/src/config/publicLive.js +53 -53
- package/src/config/request/assessments.js +24 -24
- package/src/config/request/config-center.js +8 -8
- package/src/config/request/helper.js +166 -166
- package/src/config/request/im-broadcasts.js +12 -12
- package/src/config/request/live-activity-gateway.js +8 -8
- package/src/config/request/live-activity.js +13 -13
- package/src/config/request/raw.js +6 -6
- package/src/config/request/x-cloud-web.js +13 -13
- package/src/config/request/x-proxy.js +34 -34
- package/src/demo/Detail.jsx +11 -11
- package/src/demo/List.jsx +64 -64
- package/src/demo/index.jsx +17 -17
- package/src/detail/LineSwitch/index.jsx +71 -71
- package/src/detail/LiveCountDown/index.jsx +44 -44
- package/src/detail/LiveCountDown/index.module.less +31 -31
- package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
- package/src/detail/LiveOnlineCount/index.jsx +68 -68
- package/src/detail/LiveOnlineCount/index.module.less +34 -34
- package/src/detail/LiveOnlineCount/util.js +74 -74
- package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
- package/src/detail/LiveStatus/index.jsx +202 -202
- package/src/detail/LiveStatus/index.module.less +192 -192
- package/src/detail/LiveVideo/config.js +37 -37
- package/src/detail/LiveVideo/index.jsx +188 -188
- package/src/detail/LiveVideo/index.module.less +41 -41
- package/src/detail/NotLoginChatroom/index.jsx +37 -37
- package/src/detail/NotLoginChatroom/index.module.less +46 -46
- package/src/detail/RecordVideo/index.jsx +150 -150
- package/src/detail/RecordVideo/index.module.less +31 -31
- package/src/detail/ReplayVideo/index.jsx +93 -93
- package/src/detail/ReplayVideo/index.module.less +65 -65
- package/src/detail/const.js +20 -20
- package/src/detail/hook/usePullSource.js +82 -82
- package/src/detail/hook/usePullState.js +51 -51
- package/src/detail/index.jsx +482 -482
- package/src/detail/index.module.less +188 -188
- package/src/hook/useAsync.js +84 -84
- package/src/hook/useGoToPage.js +83 -83
- package/src/hook/useInterval.js +28 -28
- package/src/hook/useIsMounted.js +17 -17
- package/src/hook/useModuleByRole.js +53 -53
- package/src/hook/usePageScrollable.js +52 -52
- package/src/hook/usePortal.js +83 -83
- package/src/hook/useScrollRestore/index.js +32 -32
- package/src/hook/useScrollRestore/scrollContext.js +20 -20
- package/src/hook/useTrackRef.js +11 -11
- package/src/hook/useWindowSize.js +28 -28
- package/src/hook/useZoom.js +47 -47
- package/src/index.js +10 -10
- package/src/lib/getLiveOnlineCount.js +10 -10
- package/src/lib/getServiceConfig.js +102 -102
- package/src/list/Empty/index.jsx +20 -20
- package/src/list/Empty/index.module.less +23 -23
- package/src/list/ListItem/Action/index.jsx +98 -98
- package/src/list/ListItem/Action/index.module.less +21 -21
- package/src/list/ListItem/img/dianzan.svg +4 -0
- package/src/list/ListItem/img/play.svg +15 -15
- package/src/list/ListItem/img/yiguankan.svg +3 -0
- package/src/list/ListItem/index.jsx +24 -1
- package/src/list/ListItem/index.module.less +146 -123
- package/src/list/index.jsx +80 -0
- package/src/list/index.module.less +35 -35
- package/src/service/common.js +73 -73
- package/src/service/content-mgr.js +73 -73
- package/src/service/im-group.js +12 -12
- package/src/service/im.js +7 -7
- package/src/service/imBroadcasts.js +33 -33
- package/src/service/like.js +134 -134
- package/src/service/manageApi.js +7 -7
- package/src/service/managePortal.js +6 -6
- package/src/service/myStudyRecord.js +93 -93
- package/src/service/navigation.js +47 -47
- package/src/service/ndMeeting.js +10 -10
- package/src/service/ndr.js +122 -122
- package/src/service/news.js +93 -93
- package/src/service/personalCenter.js +270 -270
- package/src/service/qualityCourse.js +31 -31
- package/src/service/recommend.js +81 -81
- package/src/service/school.js +323 -323
- package/src/service/search.js +170 -170
- package/src/service/site-config.js +7 -7
- package/src/service/socialCensor.js +45 -45
- package/src/service/specialEdu.js +31 -31
- package/src/service/suggestion.js +85 -85
- package/src/service/syncClassroom.js +321 -321
- package/src/service/tCourse.js +204 -204
- package/src/service/tchTraining.js +37 -37
- package/src/service/uc.js +45 -45
- package/src/util/app.js +1 -1
- package/src/util/array.js +3 -3
- package/src/util/auth/func.js +57 -57
- package/src/util/date.js +53 -53
- package/src/util/env.js +9 -9
- package/src/util/getTimestamp.js +10 -10
- package/src/util/hof.js +105 -105
- package/src/util/live/index.js +42 -42
- package/src/util/liveCountUtil.js +52 -0
- package/src/util/netUrl.js +35 -35
- package/src/util/object.js +13 -13
- package/src/util/push/index.js +58 -58
- package/src/util/request.js +227 -227
- package/src/util/type.js +17 -17
- package/src/util/url.js +203 -203
- package/src/util/video.js +26 -26
- package/test/setup.js +21 -21
- package/test/unit/component/header/logo.spec.jsx +8 -8
- package/test/unit/helper.jsx +25 -25
- package/test/unit/util/date.spec.js +40 -40
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
useContext,
|
|
4
|
-
useState
|
|
5
|
-
} from 'react'
|
|
6
|
-
import { get, unionBy } from 'lodash'
|
|
7
|
-
|
|
8
|
-
import { BAN_TYPE, USER_ROLE } from '../constants'
|
|
9
|
-
import imChatroom from '../sdk/imChatroom'
|
|
10
|
-
import urlConfig from '../config/url'
|
|
11
|
-
|
|
12
|
-
export const actions = {}
|
|
13
|
-
|
|
14
|
-
export function useChatroomRoot() {
|
|
15
|
-
const [userRole, setUserRole] = useState(USER_ROLE.NORMAL)
|
|
16
|
-
const [room, setRoom] = useState(null)
|
|
17
|
-
const [stickedMessages, setStickedMessages] = useState([])
|
|
18
|
-
const [owner, setOwner] = useState({})
|
|
19
|
-
const [admins, setAdmins] = useState([])
|
|
20
|
-
const [ban, setBan] = useState({
|
|
21
|
-
type: BAN_TYPE.BLACK,
|
|
22
|
-
items: []
|
|
23
|
-
})
|
|
24
|
-
const [notice, setNotice] = useState(null)
|
|
25
|
-
|
|
26
|
-
const setChatroomBan = (newBan) => {
|
|
27
|
-
setBan(newBan)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const updateChatroomBan = ({ type, action, items }) => {
|
|
31
|
-
const newBan = {
|
|
32
|
-
...ban
|
|
33
|
-
}
|
|
34
|
-
if (newBan.type === type) {
|
|
35
|
-
if (action === 1) {
|
|
36
|
-
newBan.items = unionBy(newBan.items, items, 'user_id')
|
|
37
|
-
} else {
|
|
38
|
-
newBan.items = newBan.items.filter(
|
|
39
|
-
({ user_id: userId }) => !items.some(({ user_id: id }) => id === userId)
|
|
40
|
-
)
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
setBan(newBan)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const loginChatroom = async () => {
|
|
47
|
-
const result = await imChatroom.loginChatroom()
|
|
48
|
-
return result
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const getChatroom = async () => {
|
|
52
|
-
const result = await imChatroom.getRoomInfo()
|
|
53
|
-
const {
|
|
54
|
-
user_role: newUserRole,
|
|
55
|
-
room: newRoom,
|
|
56
|
-
owner: newOwner = {}
|
|
57
|
-
} = result
|
|
58
|
-
setUserRole(newUserRole)
|
|
59
|
-
setRoom(newRoom)
|
|
60
|
-
setStickedMessages(get(newRoom, 'sticked_messages', []))
|
|
61
|
-
setOwner({
|
|
62
|
-
...newOwner,
|
|
63
|
-
uid: newRoom.owner_id
|
|
64
|
-
})
|
|
65
|
-
return result
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const getChatroomAdmins = async () => {
|
|
69
|
-
const result = await imChatroom.getRoomAdmins()
|
|
70
|
-
setAdmins(result)
|
|
71
|
-
return result
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const getChatroomBan = async () => {
|
|
75
|
-
const { items: whiteItems } = await imChatroom.getAllowSpeech()
|
|
76
|
-
let newBan
|
|
77
|
-
if (whiteItems.length) {
|
|
78
|
-
newBan = {
|
|
79
|
-
type: BAN_TYPE.WHITE,
|
|
80
|
-
items: whiteItems.map((uid) => ({
|
|
81
|
-
user_id: String(uid)
|
|
82
|
-
}))
|
|
83
|
-
}
|
|
84
|
-
} else {
|
|
85
|
-
const blackItems = await imChatroom.getAllForbiddens()
|
|
86
|
-
newBan = {
|
|
87
|
-
type: BAN_TYPE.BLACK,
|
|
88
|
-
items: blackItems
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
setBan(newBan)
|
|
92
|
-
return newBan
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const setChatroomStickedMessages = async (messages) => {
|
|
96
|
-
setStickedMessages(messages || [])
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
const deleteChatroomStickMessages = async () => {
|
|
100
|
-
const result = await imChatroom.deleteTop(urlConfig.roomId)
|
|
101
|
-
setStickedMessages([])
|
|
102
|
-
return result
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const getChatroomNotice = async () => {
|
|
106
|
-
const result = await imChatroom.getNotices()
|
|
107
|
-
const { items } = result
|
|
108
|
-
if (items.length) {
|
|
109
|
-
const currentNotice = items[0]
|
|
110
|
-
setNotice(currentNotice)
|
|
111
|
-
return currentNotice
|
|
112
|
-
}
|
|
113
|
-
setNotice(null)
|
|
114
|
-
return null
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const setChatroomNotice = async (content) => {
|
|
118
|
-
const result = await imChatroom.addNotice({
|
|
119
|
-
content
|
|
120
|
-
})
|
|
121
|
-
setNotice(result)
|
|
122
|
-
return result
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
actions.setChatroomStickedMessages = setChatroomStickedMessages
|
|
126
|
-
actions.updateChatroomBan = updateChatroomBan
|
|
127
|
-
actions.getChatroomBan = getChatroomBan
|
|
128
|
-
actions.setChatroomBan = setChatroomBan
|
|
129
|
-
actions.updateChatroomBan = updateChatroomBan
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
userRole,
|
|
133
|
-
room,
|
|
134
|
-
stickedMessages,
|
|
135
|
-
owner,
|
|
136
|
-
admins,
|
|
137
|
-
ban,
|
|
138
|
-
notice,
|
|
139
|
-
loginChatroom,
|
|
140
|
-
setChatroomBan,
|
|
141
|
-
updateChatroomBan,
|
|
142
|
-
setChatroomStickedMessages,
|
|
143
|
-
deleteChatroomStickMessages,
|
|
144
|
-
getChatroom,
|
|
145
|
-
getChatroomAdmins,
|
|
146
|
-
getChatroomBan,
|
|
147
|
-
getChatroomNotice,
|
|
148
|
-
setChatroomNotice
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export const ChatRoomContext = createContext()
|
|
153
|
-
|
|
154
|
-
export const useChatroom = () => useContext(ChatRoomContext)
|
|
1
|
+
import {
|
|
2
|
+
createContext,
|
|
3
|
+
useContext,
|
|
4
|
+
useState
|
|
5
|
+
} from 'react'
|
|
6
|
+
import { get, unionBy } from 'lodash'
|
|
7
|
+
|
|
8
|
+
import { BAN_TYPE, USER_ROLE } from '../constants'
|
|
9
|
+
import imChatroom from '../sdk/imChatroom'
|
|
10
|
+
import urlConfig from '../config/url'
|
|
11
|
+
|
|
12
|
+
export const actions = {}
|
|
13
|
+
|
|
14
|
+
export function useChatroomRoot() {
|
|
15
|
+
const [userRole, setUserRole] = useState(USER_ROLE.NORMAL)
|
|
16
|
+
const [room, setRoom] = useState(null)
|
|
17
|
+
const [stickedMessages, setStickedMessages] = useState([])
|
|
18
|
+
const [owner, setOwner] = useState({})
|
|
19
|
+
const [admins, setAdmins] = useState([])
|
|
20
|
+
const [ban, setBan] = useState({
|
|
21
|
+
type: BAN_TYPE.BLACK,
|
|
22
|
+
items: []
|
|
23
|
+
})
|
|
24
|
+
const [notice, setNotice] = useState(null)
|
|
25
|
+
|
|
26
|
+
const setChatroomBan = (newBan) => {
|
|
27
|
+
setBan(newBan)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const updateChatroomBan = ({ type, action, items }) => {
|
|
31
|
+
const newBan = {
|
|
32
|
+
...ban
|
|
33
|
+
}
|
|
34
|
+
if (newBan.type === type) {
|
|
35
|
+
if (action === 1) {
|
|
36
|
+
newBan.items = unionBy(newBan.items, items, 'user_id')
|
|
37
|
+
} else {
|
|
38
|
+
newBan.items = newBan.items.filter(
|
|
39
|
+
({ user_id: userId }) => !items.some(({ user_id: id }) => id === userId)
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
setBan(newBan)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const loginChatroom = async () => {
|
|
47
|
+
const result = await imChatroom.loginChatroom()
|
|
48
|
+
return result
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const getChatroom = async () => {
|
|
52
|
+
const result = await imChatroom.getRoomInfo()
|
|
53
|
+
const {
|
|
54
|
+
user_role: newUserRole,
|
|
55
|
+
room: newRoom,
|
|
56
|
+
owner: newOwner = {}
|
|
57
|
+
} = result
|
|
58
|
+
setUserRole(newUserRole)
|
|
59
|
+
setRoom(newRoom)
|
|
60
|
+
setStickedMessages(get(newRoom, 'sticked_messages', []))
|
|
61
|
+
setOwner({
|
|
62
|
+
...newOwner,
|
|
63
|
+
uid: newRoom.owner_id
|
|
64
|
+
})
|
|
65
|
+
return result
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const getChatroomAdmins = async () => {
|
|
69
|
+
const result = await imChatroom.getRoomAdmins()
|
|
70
|
+
setAdmins(result)
|
|
71
|
+
return result
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const getChatroomBan = async () => {
|
|
75
|
+
const { items: whiteItems } = await imChatroom.getAllowSpeech()
|
|
76
|
+
let newBan
|
|
77
|
+
if (whiteItems.length) {
|
|
78
|
+
newBan = {
|
|
79
|
+
type: BAN_TYPE.WHITE,
|
|
80
|
+
items: whiteItems.map((uid) => ({
|
|
81
|
+
user_id: String(uid)
|
|
82
|
+
}))
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
const blackItems = await imChatroom.getAllForbiddens()
|
|
86
|
+
newBan = {
|
|
87
|
+
type: BAN_TYPE.BLACK,
|
|
88
|
+
items: blackItems
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
setBan(newBan)
|
|
92
|
+
return newBan
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const setChatroomStickedMessages = async (messages) => {
|
|
96
|
+
setStickedMessages(messages || [])
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const deleteChatroomStickMessages = async () => {
|
|
100
|
+
const result = await imChatroom.deleteTop(urlConfig.roomId)
|
|
101
|
+
setStickedMessages([])
|
|
102
|
+
return result
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const getChatroomNotice = async () => {
|
|
106
|
+
const result = await imChatroom.getNotices()
|
|
107
|
+
const { items } = result
|
|
108
|
+
if (items.length) {
|
|
109
|
+
const currentNotice = items[0]
|
|
110
|
+
setNotice(currentNotice)
|
|
111
|
+
return currentNotice
|
|
112
|
+
}
|
|
113
|
+
setNotice(null)
|
|
114
|
+
return null
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const setChatroomNotice = async (content) => {
|
|
118
|
+
const result = await imChatroom.addNotice({
|
|
119
|
+
content
|
|
120
|
+
})
|
|
121
|
+
setNotice(result)
|
|
122
|
+
return result
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
actions.setChatroomStickedMessages = setChatroomStickedMessages
|
|
126
|
+
actions.updateChatroomBan = updateChatroomBan
|
|
127
|
+
actions.getChatroomBan = getChatroomBan
|
|
128
|
+
actions.setChatroomBan = setChatroomBan
|
|
129
|
+
actions.updateChatroomBan = updateChatroomBan
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
userRole,
|
|
133
|
+
room,
|
|
134
|
+
stickedMessages,
|
|
135
|
+
owner,
|
|
136
|
+
admins,
|
|
137
|
+
ban,
|
|
138
|
+
notice,
|
|
139
|
+
loginChatroom,
|
|
140
|
+
setChatroomBan,
|
|
141
|
+
updateChatroomBan,
|
|
142
|
+
setChatroomStickedMessages,
|
|
143
|
+
deleteChatroomStickMessages,
|
|
144
|
+
getChatroom,
|
|
145
|
+
getChatroomAdmins,
|
|
146
|
+
getChatroomBan,
|
|
147
|
+
getChatroomNotice,
|
|
148
|
+
setChatroomNotice
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export const ChatRoomContext = createContext()
|
|
153
|
+
|
|
154
|
+
export const useChatroom = () => useContext(ChatRoomContext)
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
useContext,
|
|
4
|
-
useState
|
|
5
|
-
} from 'react'
|
|
6
|
-
import { CONNECT_STATUS } from '../constants'
|
|
7
|
-
|
|
8
|
-
export function useConnectRoot() {
|
|
9
|
-
const [status, setStatusHook] = useState(CONNECT_STATUS.CONNECTING)
|
|
10
|
-
const [times, setTimes] = useState(0)
|
|
11
|
-
|
|
12
|
-
const setStatus = (newStatus) => {
|
|
13
|
-
setStatusHook(newStatus)
|
|
14
|
-
if (newStatus === CONNECT_STATUS.LOGIN_SUCCESS) {
|
|
15
|
-
setTimes(times + 1)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
status,
|
|
21
|
-
times,
|
|
22
|
-
setStatus
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export const ConnectContext = createContext()
|
|
27
|
-
|
|
28
|
-
export const useConnect = () => useContext(ConnectContext)
|
|
1
|
+
import {
|
|
2
|
+
createContext,
|
|
3
|
+
useContext,
|
|
4
|
+
useState
|
|
5
|
+
} from 'react'
|
|
6
|
+
import { CONNECT_STATUS } from '../constants'
|
|
7
|
+
|
|
8
|
+
export function useConnectRoot() {
|
|
9
|
+
const [status, setStatusHook] = useState(CONNECT_STATUS.CONNECTING)
|
|
10
|
+
const [times, setTimes] = useState(0)
|
|
11
|
+
|
|
12
|
+
const setStatus = (newStatus) => {
|
|
13
|
+
setStatusHook(newStatus)
|
|
14
|
+
if (newStatus === CONNECT_STATUS.LOGIN_SUCCESS) {
|
|
15
|
+
setTimes(times + 1)
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
status,
|
|
21
|
+
times,
|
|
22
|
+
setStatus
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const ConnectContext = createContext()
|
|
27
|
+
|
|
28
|
+
export const useConnect = () => useContext(ConnectContext)
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"action": {
|
|
3
|
-
"retry": "Try AgainTry Again",
|
|
4
|
-
"edit": "Edit",
|
|
5
|
-
"save": "Save",
|
|
6
|
-
"cancel": "Cancel"
|
|
7
|
-
},
|
|
8
|
-
"tip": {
|
|
9
|
-
"maxInputLength": "Maximum {n} characters.",
|
|
10
|
-
"copied": "Copied",
|
|
11
|
-
"noMoreMessage": "No more messages"
|
|
12
|
-
},
|
|
13
|
-
"title": {
|
|
14
|
-
"notice": "Notice",
|
|
15
|
-
"fontSize": "Font Size",
|
|
16
|
-
"chat": "Chat",
|
|
17
|
-
"member": "Online Member"
|
|
18
|
-
},
|
|
19
|
-
"connect": {
|
|
20
|
-
"status": {
|
|
21
|
-
"0": "Failed to load the chat room information.",
|
|
22
|
-
"1": "Connecting to the chat server... Please wait.",
|
|
23
|
-
"2": "Network disconnected",
|
|
24
|
-
"3": "Chat service connected",
|
|
25
|
-
"4": "Failed to connect to chat service",
|
|
26
|
-
"5": "You're offline as your account has been logged in on another device.",
|
|
27
|
-
"6": "You've been removed from the chat room by the administrator.",
|
|
28
|
-
"7": "The chat room has been deleted.",
|
|
29
|
-
"8": "Network Error"
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"tag": {
|
|
33
|
-
"role": {
|
|
34
|
-
"1": "Administrator",
|
|
35
|
-
"2": "Creator"
|
|
36
|
-
},
|
|
37
|
-
"baned": "Muted"
|
|
38
|
-
},
|
|
39
|
-
"message": {
|
|
40
|
-
"stick": {
|
|
41
|
-
"cancel": "Cancel sticky"
|
|
42
|
-
},
|
|
43
|
-
"recallByWS": "Recall",
|
|
44
|
-
"delete": "Delete"
|
|
45
|
-
},
|
|
46
|
-
"editor": {
|
|
47
|
-
"disabled": {
|
|
48
|
-
"baned": "Muted"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"fontSize": {
|
|
52
|
-
"12": "Extremely small",
|
|
53
|
-
"14": "",
|
|
54
|
-
"16": "Medium",
|
|
55
|
-
"18": "",
|
|
56
|
-
"20": "Great"
|
|
57
|
-
},
|
|
58
|
-
"error": {
|
|
59
|
-
"networkError": "Network Error",
|
|
60
|
-
"serviceError": "Service request exception",
|
|
61
|
-
"IMCORE/RECALL_MESSAGE_TIMEOUT": "Failed to recall the message as it was sent more than 5 min ago.",
|
|
62
|
-
"IMCORE/CHATROOM_RECALL_MSG_TIMEOUT": "Failed to recall the message as it was sent more than 5 min ago.",
|
|
63
|
-
"IMCORE/DISP_FOUND_SENSITIVE_WORD_LOCATION":"Banned words contained"
|
|
64
|
-
},
|
|
65
|
-
"modal": {
|
|
66
|
-
"title": "Reminder",
|
|
67
|
-
"content": {
|
|
68
|
-
"deleteMessage": "The message will no longer be visible once deleted. Are you sure to continue?"
|
|
69
|
-
},
|
|
70
|
-
"cancel": "Cancel",
|
|
71
|
-
"ok": "OK"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"action": {
|
|
3
|
+
"retry": "Try AgainTry Again",
|
|
4
|
+
"edit": "Edit",
|
|
5
|
+
"save": "Save",
|
|
6
|
+
"cancel": "Cancel"
|
|
7
|
+
},
|
|
8
|
+
"tip": {
|
|
9
|
+
"maxInputLength": "Maximum {n} characters.",
|
|
10
|
+
"copied": "Copied",
|
|
11
|
+
"noMoreMessage": "No more messages"
|
|
12
|
+
},
|
|
13
|
+
"title": {
|
|
14
|
+
"notice": "Notice",
|
|
15
|
+
"fontSize": "Font Size",
|
|
16
|
+
"chat": "Chat",
|
|
17
|
+
"member": "Online Member"
|
|
18
|
+
},
|
|
19
|
+
"connect": {
|
|
20
|
+
"status": {
|
|
21
|
+
"0": "Failed to load the chat room information.",
|
|
22
|
+
"1": "Connecting to the chat server... Please wait.",
|
|
23
|
+
"2": "Network disconnected",
|
|
24
|
+
"3": "Chat service connected",
|
|
25
|
+
"4": "Failed to connect to chat service",
|
|
26
|
+
"5": "You're offline as your account has been logged in on another device.",
|
|
27
|
+
"6": "You've been removed from the chat room by the administrator.",
|
|
28
|
+
"7": "The chat room has been deleted.",
|
|
29
|
+
"8": "Network Error"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"tag": {
|
|
33
|
+
"role": {
|
|
34
|
+
"1": "Administrator",
|
|
35
|
+
"2": "Creator"
|
|
36
|
+
},
|
|
37
|
+
"baned": "Muted"
|
|
38
|
+
},
|
|
39
|
+
"message": {
|
|
40
|
+
"stick": {
|
|
41
|
+
"cancel": "Cancel sticky"
|
|
42
|
+
},
|
|
43
|
+
"recallByWS": "Recall",
|
|
44
|
+
"delete": "Delete"
|
|
45
|
+
},
|
|
46
|
+
"editor": {
|
|
47
|
+
"disabled": {
|
|
48
|
+
"baned": "Muted"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"fontSize": {
|
|
52
|
+
"12": "Extremely small",
|
|
53
|
+
"14": "",
|
|
54
|
+
"16": "Medium",
|
|
55
|
+
"18": "",
|
|
56
|
+
"20": "Great"
|
|
57
|
+
},
|
|
58
|
+
"error": {
|
|
59
|
+
"networkError": "Network Error",
|
|
60
|
+
"serviceError": "Service request exception",
|
|
61
|
+
"IMCORE/RECALL_MESSAGE_TIMEOUT": "Failed to recall the message as it was sent more than 5 min ago.",
|
|
62
|
+
"IMCORE/CHATROOM_RECALL_MSG_TIMEOUT": "Failed to recall the message as it was sent more than 5 min ago.",
|
|
63
|
+
"IMCORE/DISP_FOUND_SENSITIVE_WORD_LOCATION":"Banned words contained"
|
|
64
|
+
},
|
|
65
|
+
"modal": {
|
|
66
|
+
"title": "Reminder",
|
|
67
|
+
"content": {
|
|
68
|
+
"deleteMessage": "The message will no longer be visible once deleted. Are you sure to continue?"
|
|
69
|
+
},
|
|
70
|
+
"cancel": "Cancel",
|
|
71
|
+
"ok": "OK"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import getByPath from 'lodash/get'
|
|
2
|
-
import locale from './zh-CN/index.json'
|
|
3
|
-
|
|
4
|
-
const i18n = {
|
|
5
|
-
get(path) {
|
|
6
|
-
const result = getByPath(locale, path)
|
|
7
|
-
if (result === undefined || result === null) {
|
|
8
|
-
return path
|
|
9
|
-
}
|
|
10
|
-
return result
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default i18n
|
|
1
|
+
import getByPath from 'lodash/get'
|
|
2
|
+
import locale from './zh-CN/index.json'
|
|
3
|
+
|
|
4
|
+
const i18n = {
|
|
5
|
+
get(path) {
|
|
6
|
+
const result = getByPath(locale, path)
|
|
7
|
+
if (result === undefined || result === null) {
|
|
8
|
+
return path
|
|
9
|
+
}
|
|
10
|
+
return result
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default i18n
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// 被 node 环境调用,请勿使用 export/import
|
|
2
|
-
module.exports = {
|
|
3
|
-
'zh-CN': {
|
|
4
|
-
label: '简体中文'
|
|
5
|
-
},
|
|
6
|
-
en: {
|
|
7
|
-
label: 'English'
|
|
8
|
-
}
|
|
9
|
-
}
|
|
1
|
+
// 被 node 环境调用,请勿使用 export/import
|
|
2
|
+
module.exports = {
|
|
3
|
+
'zh-CN': {
|
|
4
|
+
label: '简体中文'
|
|
5
|
+
},
|
|
6
|
+
en: {
|
|
7
|
+
label: 'English'
|
|
8
|
+
}
|
|
9
|
+
}
|