From d91c6e2b2b9a2c2c70e057c60215dc1a65536128 Mon Sep 17 00:00:00 2001 From: leeing <372711472@qq.com> Date: Mon, 27 Nov 2023 11:24:51 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8D=87=E7=BA=A7im-store?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- react/package.json | 4 +- react/src/YXUIKit/im-kit-ui/package.json | 88 ++++++------------- .../components/ChatP2pMessageList/index.tsx | 2 +- .../src/chat/containers/p2pChatContainer.tsx | 2 +- .../components/ComplexAvatar/Container.tsx | 5 +- .../common/components/MyAvatar/Container.tsx | 1 + .../common/components/MyUserCard/index.tsx | 12 +-- .../src/common/components/UserCard/index.tsx | 61 +++++++------ .../src/contact/contact-list/Container.tsx | 2 +- react/src/YXUIKit/im-kit-ui/src/index.ts | 6 +- .../add/components/AddFriendModal/index.tsx | 8 +- react/src/components/IMApp/index.tsx | 4 +- vue/package.json | 3 +- vue/src/components/IMApp/index.vue | 19 +++- 14 files changed, 111 insertions(+), 106 deletions(-) diff --git a/react/package.json b/react/package.json index a6e4872..620f052 100644 --- a/react/package.json +++ b/react/package.json @@ -1,6 +1,6 @@ { "private": true, - "author": "chenxuting ", + "author": "netease", "scripts": { "dev": "umi dev", "build": "umi build", @@ -9,7 +9,7 @@ "dependencies": { "@xkit-yx/call-kit": "^2.0.1", "@xkit-yx/call-kit-react-ui": "^0.4.1", - "@xkit-yx/im-kit-ui": "^9.6.2", + "@xkit-yx/im-kit-ui": "^9.6.3", "react-dom": "^16.8.0", "umi": "^3.5.40" }, diff --git a/react/src/YXUIKit/im-kit-ui/package.json b/react/src/YXUIKit/im-kit-ui/package.json index c88e8d6..82f6464 100644 --- a/react/src/YXUIKit/im-kit-ui/package.json +++ b/react/src/YXUIKit/im-kit-ui/package.json @@ -1,45 +1,27 @@ { - "_from": "@xkit-yx/im-kit-ui@^9.6.2", - "_id": "@xkit-yx/im-kit-ui@9.6.2", - "_inBundle": false, - "_integrity": "sha512-vFleF0DzxDgYJQnOWQKU6gkOC7Okqk8X1xvADTHVSK7toL8lHPP2PL/qEnQWOa0lffdQOYFy3B3OJxS+It1/+Q==", - "_location": "/@xkit-yx/im-kit-ui", - "_phantomChildren": { - "axios": "0.27.2", - "eventemitter3": "4.0.7" + "name": "@xkit-yx/im-kit-ui", + "version": "9.6.3", + "description": "云信即时通讯组件", + "license": "MIT", + "main": "lib/index.js", + "module": "es/index.js", + "typings": "es/index.d.ts", + "publishConfig": { + "access": "public" }, - "_requested": { - "type": "range", - "registry": true, - "raw": "@xkit-yx/im-kit-ui@^9.6.2", - "name": "@xkit-yx/im-kit-ui", - "escapedName": "@xkit-yx%2fim-kit-ui", - "scope": "@xkit-yx", - "rawSpec": "^9.6.2", - "saveSpec": null, - "fetchSpec": "^9.6.2" + "scripts": { + "start": "rollup -cw --environment DEV", + "dev": "gulp watch", + "build": "gulp", + "p": "npm run build && npm publish" }, - "_requiredBy": [ - "/" + "files": [ + "src", + "lib", + "es", + "copySourceCode.js" ], - "_resolved": "https://registry.npmjs.org/@xkit-yx/im-kit-ui/-/im-kit-ui-9.6.2.tgz", - "_shasum": "e9dd04a9d359c36fa404900ec28aca70bc8ee022", - "_spec": "@xkit-yx/im-kit-ui@^9.6.2", - "_where": "/Users/leeing/Documents/yunxin-projects/nim-uikit-web/react", "author": "", - "bundleDependencies": false, - "dependencies": { - "@ant-design/icons": "^5.0.1", - "@xkit-yx/core-kit": "^0.10.8", - "@xkit-yx/im-store": "^0.0.13", - "@xkit-yx/utils": "^0.5.6", - "antd": "^4.16.3", - "mobx": "^6.6.1", - "mobx-react": "^7.5.2", - "react-string-replace": "^1.1.0" - }, - "deprecated": false, - "description": "云信即时通讯组件", "devDependencies": { "@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-json": "^4.1.0", @@ -63,17 +45,6 @@ "sass": "^1.58.3", "typescript": "^4.6.4" }, - "files": [ - "src", - "lib", - "es", - "copySourceCode.js" - ], - "gitHead": "3b90601cf3d29a01c3aa986043a84af0c04562d0", - "license": "MIT", - "main": "lib/index.js", - "module": "es/index.js", - "name": "@xkit-yx/im-kit-ui", "peerDependencies": { "@xkit-yx/core-kit": "^0.3.2", "@xkit-yx/utils": "^0.4.3", @@ -83,15 +54,14 @@ "react": ">=16.8.0", "react-dom": ">=16.8.0" }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "build": "gulp", - "dev": "gulp watch", - "p": "npm run build && npm publish", - "start": "rollup -cw --environment DEV" - }, - "typings": "es/index.d.ts", - "version": "9.6.2" + "dependencies": { + "@ant-design/icons": "^5.0.1", + "@xkit-yx/core-kit": "^0.10.8", + "@xkit-yx/im-store": "^0.0.14", + "@xkit-yx/utils": "^0.5.6", + "antd": "^4.16.3", + "mobx": "^6.6.1", + "mobx-react": "^7.5.2", + "react-string-replace": "^1.1.0" + } } diff --git a/react/src/YXUIKit/im-kit-ui/src/chat/components/ChatP2pMessageList/index.tsx b/react/src/YXUIKit/im-kit-ui/src/chat/components/ChatP2pMessageList/index.tsx index 3e7842b..7b8e8cb 100644 --- a/react/src/YXUIKit/im-kit-ui/src/chat/components/ChatP2pMessageList/index.tsx +++ b/react/src/YXUIKit/im-kit-ui/src/chat/components/ChatP2pMessageList/index.tsx @@ -124,7 +124,7 @@ const ChatP2pMessageList = observer( ) : null} - {store.uiStore.getRelation(member.account) === 'stranger' ? ( + {store.uiStore.getRelation(member.account).relation === 'stranger' ? ( = observer( avatar={ } diff --git a/react/src/YXUIKit/im-kit-ui/src/common/components/ComplexAvatar/Container.tsx b/react/src/YXUIKit/im-kit-ui/src/common/components/ComplexAvatar/Container.tsx index 5eb8903..d9da732 100644 --- a/react/src/YXUIKit/im-kit-ui/src/common/components/ComplexAvatar/Container.tsx +++ b/react/src/YXUIKit/im-kit-ui/src/common/components/ComplexAvatar/Container.tsx @@ -43,7 +43,7 @@ export const ComplexAvatarContainer: FC = observer( const [visible, setVisible] = useState(false) // const [relation, setRelation] = useState('stranger') - const relation = store.uiStore.getRelation(account) + const { relation, isInBlacklist } = store.uiStore.getRelation(account) const userInfo = store.uiStore.getFriendWithUserNameCard(account) @@ -72,6 +72,8 @@ export const ComplexAvatarContainer: FC = observer( await store.friendStore.addFriendActive(account) message.success(t('addFriendSuccessText')) } + // 发送申请或添加好友成功后解除黑名单 + await store.relationStore.setBlackActive({ account, isAdd: false }) setVisible(false) afterAddFriend?.(account) } catch (error) { @@ -154,6 +156,7 @@ export const ComplexAvatarContainer: FC = observer( return ( = observer( = ({ const [signature, setSignature] = useState(undefined) useEffect(() => { - if (props.nick) { + if (props.nick !== void 0) { setNick(props.nick) } }, [props.nick]) useEffect(() => { - if (props.avatar) { + if (props.avatar !== void 0) { setAvatar(props.avatar) } }, [props.avatar]) useEffect(() => { - if (props.gender) { + if (props.gender !== void 0) { setGender(props.gender) } }, [props.gender]) useEffect(() => { - if (props.tel) { + if (props.tel !== void 0) { setTel(props.tel) } }, [props.tel]) useEffect(() => { - if (props.email) { + if (props.email !== void 0) { setEmail(props.email) } }, [props.email]) useEffect(() => { - if (props.signature) { + if (props.signature !== void 0) { setSignature(props.signature) } }, [props.signature]) diff --git a/react/src/YXUIKit/im-kit-ui/src/common/components/UserCard/index.tsx b/react/src/YXUIKit/im-kit-ui/src/common/components/UserCard/index.tsx index d756d4f..6a8c4f0 100644 --- a/react/src/YXUIKit/im-kit-ui/src/common/components/UserCard/index.tsx +++ b/react/src/YXUIKit/im-kit-ui/src/common/components/UserCard/index.tsx @@ -16,6 +16,7 @@ export interface UserCardProps alias?: string visible: boolean relation: Relation + isInBlacklist: boolean onChangeAlias?: (alias: string) => void onSendMsglick?: () => void onAddFriendClick?: () => void @@ -29,6 +30,7 @@ export interface UserCardProps export const UserCard: FC = ({ visible, relation, + isInBlacklist, onChangeAlias, onAddFriendClick, onDeleteFriendClick, @@ -55,24 +57,28 @@ export const UserCard: FC = ({ ) const controlsMenuRenderer = useMemo(() => { - const items = [ - relation === 'friend' - ? { - key: 'block', - label: t('blackText'), - icon: , - } - : { - key: 'removeBlock', - label: t('removeBlackText'), - icon: , - }, - { - key: 'deleteFriend', - label: t('deleteFriendText'), - icon: , - }, - ] as any + const items = ( + [ + isInBlacklist + ? { + key: 'removeBlock', + label: t('removeBlackText'), + icon: , + } + : { + key: 'block', + label: t('blackText'), + icon: , + }, + relation === 'friend' + ? { + key: 'deleteFriend', + label: t('deleteFriendText'), + icon: , + } + : null, + ] as any + ).filter((item) => !!item) return ( = ({ }, [ t, relation, + isInBlacklist, onBlockFriendClick, onRemoveBlockFriendClick, onDeleteFriendClick, @@ -124,18 +131,16 @@ export const UserCard: FC = ({ {props.alias || props.nick || props.account} - {relation !== 'stranger' ? ( - - - - ) : null} + + +
- {['friend', 'blacklist'].includes(relation) ? ( + {relation === 'friend' ? (
= observer( selectedContactType={store.uiStore.selectedContactType} onItemClick={handleItemClick} renderCustomContact={renderCustomContact} - systemMsgUnread={store.uiStore.systemMsgUnread} + systemMsgUnread={store.sysMsgStore.unreadSysMsgCount} prefix={prefix} /> ) diff --git a/react/src/YXUIKit/im-kit-ui/src/index.ts b/react/src/YXUIKit/im-kit-ui/src/index.ts index 7dbc199..7ee6d2c 100644 --- a/react/src/YXUIKit/im-kit-ui/src/index.ts +++ b/react/src/YXUIKit/im-kit-ui/src/index.ts @@ -42,12 +42,14 @@ import RootStore from '@xkit-yx/im-store' import { NIMInitializeOptions } from 'nim-web-sdk-ng/dist/NIM_BROWSER_SDK/NIMInterface' export class IMUIKit { - context: { + get context(): { nim: NimKitCoreTypes.INimKitCore store: RootStore initOptions: NIMInitializeOptions + } | void { // @ts-ignore - } | void = window.__xkit_store__ + return window.__xkit_store__ + } constructor(private providerProps: Omit) {} render< diff --git a/react/src/YXUIKit/im-kit-ui/src/search/add/components/AddFriendModal/index.tsx b/react/src/YXUIKit/im-kit-ui/src/search/add/components/AddFriendModal/index.tsx index 6b21e75..cc5d85e 100644 --- a/react/src/YXUIKit/im-kit-ui/src/search/add/components/AddFriendModal/index.tsx +++ b/react/src/YXUIKit/im-kit-ui/src/search/add/components/AddFriendModal/index.tsx @@ -72,6 +72,11 @@ const AddFriendModal: React.FC = observer( await store.friendStore.addFriendActive(searchRes.account) message.success(t('addFriendSuccessText')) } + // 发送申请或添加好友成功后解除黑名单 + await store.relationStore.setBlackActive({ + account: searchRes.account, + isAdd: false, + }) } setAdding(false) } catch (error) { @@ -143,7 +148,8 @@ const AddFriendModal: React.FC = observer( {searchRes.account}
- {store.uiStore.getRelation(searchRes.account) !== 'stranger' ? ( + {store.uiStore.getRelation(searchRes.account).relation !== + 'stranger' ? ( diff --git a/react/src/components/IMApp/index.tsx b/react/src/components/IMApp/index.tsx index 5d8c207..c273899 100644 --- a/react/src/components/IMApp/index.tsx +++ b/react/src/components/IMApp/index.tsx @@ -305,7 +305,7 @@ const IMApp: React.FC = observer((props) => {
{t('session')}
- +
= observer((props) => { teamMsgReceiptVisible, sdkVersion, renderP2pCustomMessage, - store.uiStore.systemMsgUnread, + store.sysMsgStore.unreadSysMsgCount, ]) // IM elite(IM 2) sdk 没有信令, 无法初始化呼叫组件 return sdkVersion === 1 ? ( diff --git a/vue/package.json b/vue/package.json index bc03436..b3fc6ca 100644 --- a/vue/package.json +++ b/vue/package.json @@ -11,7 +11,8 @@ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" }, "dependencies": { - "@xkit-yx/im-kit-ui": "^9.6.2", + "@xkit-yx/im-kit-ui": "^9.6.3", + "jsx-web-compiler": "^1.0.2", "react": "^16.8.0", "react-dom": "^16.8.0", "vue": "^3.2.45" diff --git a/vue/src/components/IMApp/index.vue b/vue/src/components/IMApp/index.vue index 58ac04a..27ad467 100644 --- a/vue/src/components/IMApp/index.vue +++ b/vue/src/components/IMApp/index.vue @@ -45,7 +45,9 @@ import { ContactListContainer, // 通讯录——通讯录导航组件 ContactInfoContainer, // 通讯录——通讯录详情组件,包含好友列表、群组列表以及黑名单列表 MyAvatarContainer, // 用户资料组件 + ComplexAvatarContainer, } from "@xkit-yx/im-kit-ui"; +import { compile } from "jsx-web-compiler"; import "@xkit-yx/im-kit-ui/es/style/css"; import "./iconfont.css"; @@ -77,7 +79,9 @@ export default { this.$refs.add ); this.$uikit.render(MyAvatarContainer, null, this.$refs.avatar); - this.$uikit.render(ConversationContainer, null, this.$refs.conversation); + this.$uikit.render(ConversationContainer, { + renderP2pSessionAvatar: () => compile(`
`), + }, this.$refs.conversation); this.$uikit.render( ChatContainer, { @@ -85,6 +89,19 @@ export default { // 安装并引入: import { compile } from "jsx-web-compiler"; // renderHeader: () => compile(`
123
`), // renderEmpty: () => compile("
This is empty
"), + renderMessageAvatar: (options) => { + console.log(options) + const openUserCard = () => { + console.log('???') + } + const context = { + ComplexAvatarContainer, + openUserCard, + account: options.from, + } + return compile( + `
`, context + )} }, this.$refs.chat ); From 5bdb6a3b49948742ab1fb0f50abbd9814600ed6d Mon Sep 17 00:00:00 2001 From: leeing <372711472@qq.com> Date: Mon, 27 Nov 2023 11:29:30 +0800 Subject: [PATCH 2/3] update im-stoer --- react/package.json | 2 +- react/src/YXUIKit/im-kit-ui/package.json | 4 ++-- vue/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/react/package.json b/react/package.json index 620f052..67c8f45 100644 --- a/react/package.json +++ b/react/package.json @@ -9,7 +9,7 @@ "dependencies": { "@xkit-yx/call-kit": "^2.0.1", "@xkit-yx/call-kit-react-ui": "^0.4.1", - "@xkit-yx/im-kit-ui": "^9.6.3", + "@xkit-yx/im-kit-ui": "^9.6.4", "react-dom": "^16.8.0", "umi": "^3.5.40" }, diff --git a/react/src/YXUIKit/im-kit-ui/package.json b/react/src/YXUIKit/im-kit-ui/package.json index 82f6464..0cbae24 100644 --- a/react/src/YXUIKit/im-kit-ui/package.json +++ b/react/src/YXUIKit/im-kit-ui/package.json @@ -1,6 +1,6 @@ { "name": "@xkit-yx/im-kit-ui", - "version": "9.6.3", + "version": "9.6.4", "description": "云信即时通讯组件", "license": "MIT", "main": "lib/index.js", @@ -57,7 +57,7 @@ "dependencies": { "@ant-design/icons": "^5.0.1", "@xkit-yx/core-kit": "^0.10.8", - "@xkit-yx/im-store": "^0.0.14", + "@xkit-yx/im-store": "^0.0.15", "@xkit-yx/utils": "^0.5.6", "antd": "^4.16.3", "mobx": "^6.6.1", diff --git a/vue/package.json b/vue/package.json index b3fc6ca..d8bef11 100644 --- a/vue/package.json +++ b/vue/package.json @@ -11,7 +11,7 @@ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" }, "dependencies": { - "@xkit-yx/im-kit-ui": "^9.6.3", + "@xkit-yx/im-kit-ui": "^9.6.4", "jsx-web-compiler": "^1.0.2", "react": "^16.8.0", "react-dom": "^16.8.0", From 1d27eb0ef6b61eaa1bb1eccb9e4c1c581196bd18 Mon Sep 17 00:00:00 2001 From: leeing <372711472@qq.com> Date: Mon, 27 Nov 2023 11:36:50 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue/package.json | 1 - vue/src/components/IMApp/index.vue | 19 +------------------ 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/vue/package.json b/vue/package.json index d8bef11..1c91341 100644 --- a/vue/package.json +++ b/vue/package.json @@ -12,7 +12,6 @@ }, "dependencies": { "@xkit-yx/im-kit-ui": "^9.6.4", - "jsx-web-compiler": "^1.0.2", "react": "^16.8.0", "react-dom": "^16.8.0", "vue": "^3.2.45" diff --git a/vue/src/components/IMApp/index.vue b/vue/src/components/IMApp/index.vue index 27ad467..58ac04a 100644 --- a/vue/src/components/IMApp/index.vue +++ b/vue/src/components/IMApp/index.vue @@ -45,9 +45,7 @@ import { ContactListContainer, // 通讯录——通讯录导航组件 ContactInfoContainer, // 通讯录——通讯录详情组件,包含好友列表、群组列表以及黑名单列表 MyAvatarContainer, // 用户资料组件 - ComplexAvatarContainer, } from "@xkit-yx/im-kit-ui"; -import { compile } from "jsx-web-compiler"; import "@xkit-yx/im-kit-ui/es/style/css"; import "./iconfont.css"; @@ -79,9 +77,7 @@ export default { this.$refs.add ); this.$uikit.render(MyAvatarContainer, null, this.$refs.avatar); - this.$uikit.render(ConversationContainer, { - renderP2pSessionAvatar: () => compile(`
`), - }, this.$refs.conversation); + this.$uikit.render(ConversationContainer, null, this.$refs.conversation); this.$uikit.render( ChatContainer, { @@ -89,19 +85,6 @@ export default { // 安装并引入: import { compile } from "jsx-web-compiler"; // renderHeader: () => compile(`
123
`), // renderEmpty: () => compile("
This is empty
"), - renderMessageAvatar: (options) => { - console.log(options) - const openUserCard = () => { - console.log('???') - } - const context = { - ComplexAvatarContainer, - openUserCard, - account: options.from, - } - return compile( - `
`, context - )} }, this.$refs.chat );