From acf90418e22e2d82ee489be43964bfa81c513549 Mon Sep 17 00:00:00 2001 From: tangtaoit Date: Mon, 30 Dec 2024 12:01:20 +0800 Subject: [PATCH] fix: update --- packages/tsdaodaobase/package.json | 2 +- packages/tsdaodaobase/src/App.tsx | 101 ++++++++++++++++-- .../src/Components/Conversation/index.tsx | 2 +- .../src/Components/Conversation/vm.ts | 13 +-- .../src/Components/EmojiToolbar/index.tsx | 2 +- .../tsdaodaobase/src/Pages/Chat/index.tsx | 8 -- packages/tsdaodaobase/src/Pages/Chat/vm.ts | 4 +- yarn.lock | 8 +- 8 files changed, 108 insertions(+), 32 deletions(-) diff --git a/packages/tsdaodaobase/package.json b/packages/tsdaodaobase/package.json index 1da1e33..9b79738 100644 --- a/packages/tsdaodaobase/package.json +++ b/packages/tsdaodaobase/package.json @@ -24,7 +24,7 @@ "react-spinners": "^0.11.0", "react-viewer": "^3.2.2", "sensitive-word-tool": "^1.1.9", - "wukongimjssdk": "^1.2.7" + "wukongimjssdk": "^1.2.11" }, "devDependencies": { "@types/react-avatar-editor": "^13.0.0", diff --git a/packages/tsdaodaobase/src/App.tsx b/packages/tsdaodaobase/src/App.tsx index 3a4b656..c736e14 100644 --- a/packages/tsdaodaobase/src/App.tsx +++ b/packages/tsdaodaobase/src/App.tsx @@ -242,6 +242,11 @@ export default class WKApp extends ProviderListener { private wsaddrs = new Array(); // ws的连接地址 private addrUsed = false; // 地址是否被使用 + isPC = false; // 是否是PC端 + deviceId: string = ""; // 设备ID + deviceName: string = ""; // 设备名称 + deviceModel: string = ""; // 设备型号 + set notificationIsClose(v: boolean) { this._notificationIsClose = v; StorageService.shared.setItem("NotificationIsClose", v ? "1" : ""); @@ -255,6 +260,17 @@ export default class WKApp extends ProviderListener { startup() { WKApp.loginInfo.load(); // 加载登录信息 + // 是否是PC端 + if ((window as any)?.__POWERED_ELECTRON__ || (window as any).__TAURI_IPC__) { + this.isPC = true; + console.log("PC端") + } + this.deviceId = this.getDeviceIdFromStorage(); + this.deviceName = this.getOSAndVersion(); + this.deviceModel = this.getBrandsFromUserAgent(); + + console.log("设备信息--->", this.deviceId, this.deviceName, this.deviceModel); + const themeMode = StorageService.shared.getItem("theme-mode"); if (themeMode === "1") { WKApp.config.themeMode = ThemeMode.dark; @@ -267,7 +283,6 @@ export default class WKApp extends ProviderListener { this.wsaddrs = await WKApp.dataSource.commonDataSource.imConnectAddrs(); } if (this.wsaddrs.length > 0) { - console.log("connectAddrs--->", this.wsaddrs); this.addrUsed = true; callback(this.wsaddrs[0]); } @@ -312,12 +327,80 @@ export default class WKApp extends ProviderListener { } WKApp.remoteConfig.startRequestConfig(); + + + } + + getDeviceIdFromStorage() { + let deviceId = StorageService.shared.getItem("deviceId"); + if (!deviceId || deviceId === "") { + deviceId = this.generateUUID(); + StorageService.shared.setItem("deviceId", deviceId); + } + return deviceId; + } + + generateUUID() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function ( + c + ) { + var r = (Math.random() * 16) | 0, + v = c == "x" ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); + } + + getOSAndVersion() { + const userAgent: string = navigator.userAgent; + if (/Windows NT (\d+\.\d+)/i.test(userAgent)) { + const version = userAgent.match(/Windows NT (\d+\.\d+)/i)?.[1]; + return `Windows ${version}`; + } else if (/Mac OS X (\d+_\d+(_\d+)?)/i.test(userAgent)) { + const version = userAgent.match(/Mac OS X (\d+_\d+(_\d+)?)/i)?.[1]?.replace(/_/g, "."); + return `MacOS ${version}`; + } else if (/Android (\d+(\.\d+)?)/i.test(userAgent)) { + const version = userAgent.match(/Android (\d+(\.\d+)?)/i)?.[1]; + return `Android ${version}`; + } else if (/CPU (iPhone )?OS (\d+_\d+(_\d+)?)/i.test(userAgent)) { + const version = userAgent.match(/CPU (iPhone )?OS (\d+_\d+(_\d+)?)/i)?.[2]?.replace(/_/g, "."); + return `iOS ${version}`; + } else if (/Linux/i.test(userAgent)) { + return "Linux (version not available)"; + } else { + return "Unknown OS and version"; + } + } + + getBrandsFromUserAgent(): string { + const userAgent: string = navigator.userAgent; + + if (/Chrome\/(\d+)/i.test(userAgent)) { + const version = userAgent.match(/Chrome\/(\d+)/i)?.[1]; + return `Chrome ${version}`; + } else if (/Firefox\/(\d+)/i.test(userAgent)) { + const version = userAgent.match(/Firefox\/(\d+)/i)?.[1]; + return `Firefox ${version}`; + } else if (/Safari\/(\d+)/i.test(userAgent) && !/Chrome/i.test(userAgent)) { + const version = userAgent.match(/Version\/(\d+)/i)?.[1]; + return `Safari ${version}`; + } else if (/Edge\/(\d+)/i.test(userAgent)) { + const version = userAgent.match(/Edge\/(\d+)/i)?.[1]; + return `Edge ${version}`; + } else { + return "Unknown browser"; + } } startMain() { this.connectIM(); WKApp.dataSource.contactsSync(); // 同步通讯录 ProhibitwordsService.shared.sync(); // 同步敏感词 + + WKApp.apiClient.get(`/user/devices/${WKApp.shared.deviceId}`).then((res) => { + if (res.id) { + WKSDK.shared().config.clientMsgDeviceId = res.id; + } + }) } connectIM() { @@ -335,6 +418,8 @@ export default class WKApp extends ProviderListener { this.notifyListener(); } + + // 是否登录 isLogined() { return WKApp.loginInfo.isLogined(); @@ -374,14 +459,14 @@ export default class WKApp extends ProviderListener { return this.avatarChannel(c); } - avatarOrg(orgID: string){ + avatarOrg(orgID: string) { const baseURl = WKApp.apiClient.config.apiURL; return `${baseURl}organizations/${orgID}/logo`; } // 我的用户头像发送改变 myUserAvatarChange() { - this.changeChannelAvatarTag(new Channel(WKApp.loginInfo.uid||"", ChannelTypePerson)); + this.changeChannelAvatarTag(new Channel(WKApp.loginInfo.uid || "", ChannelTypePerson)); } changeChannelAvatarTag(channel: Channel) { @@ -392,13 +477,13 @@ export default class WKApp extends ProviderListener { const t = new Date().getTime(); WKApp.loginInfo.setStorageItem(myAvatarTag, `${t}`); } - getChannelAvatarTag(channel? :Channel) { + getChannelAvatarTag(channel?: Channel) { let myAvatarTag = "channelAvatarTag"; if (channel) { myAvatarTag = `channelAvatarTag:${channel.channelType}${channel.channelID}`; } const tag = WKApp.loginInfo.getStorageItem(myAvatarTag); - if(!tag) { + if (!tag) { return ""; } return tag; @@ -529,9 +614,9 @@ export default class WKApp extends ProviderListener { return friendApplys; } - public setFriendApplysUnreadCount(){ - if(WKApp.loginInfo.isLogined()){ - WKApp.apiClient.get(`/user/reddot/friendApply`).then(res=>{ + public setFriendApplysUnreadCount() { + if (WKApp.loginInfo.isLogined()) { + WKApp.apiClient.get(`/user/reddot/friendApply`).then(res => { WKApp.mittBus.emit('friend-applys-unread-count', res.count) WKApp.loginInfo.setStorageItem(`${WKApp.loginInfo.uid}-friend-applys-unread-count`, res.count); WKApp.menus.refresh(); diff --git a/packages/tsdaodaobase/src/Components/Conversation/index.tsx b/packages/tsdaodaobase/src/Components/Conversation/index.tsx index eab57ea..d422fbd 100644 --- a/packages/tsdaodaobase/src/Components/Conversation/index.tsx +++ b/packages/tsdaodaobase/src/Components/Conversation/index.tsx @@ -187,7 +187,7 @@ export class Conversation extends Component implements Conver this.uploadReadedIfNeed() } - this.vm.markUnread() + // this.vm.markUnread() } diff --git a/packages/tsdaodaobase/src/Components/Conversation/vm.ts b/packages/tsdaodaobase/src/Components/Conversation/vm.ts index c907aa6..0c5f95b 100644 --- a/packages/tsdaodaobase/src/Components/Conversation/vm.ts +++ b/packages/tsdaodaobase/src/Components/Conversation/vm.ts @@ -131,7 +131,7 @@ export default class ConversationVM extends ProviderListener { } } - + // 选中消息 checkedMessage(message: Message, checked: boolean): void { let messageWrap = this.findMessageWithClientMsgNo(message.clientMsgNo) @@ -364,9 +364,7 @@ export default class ConversationVM extends ProviderListener { this.orgUnreadCount = unread this.unreadCount = unread this.currentConversation = conversation - if (conversation.lastMessage) { - this.updateLastMessageIfNeed(new MessageWrap(conversation.lastMessage)) - } + this.shouldShowHistorySplit = unread > 0 if (unread > 0) { @@ -378,6 +376,10 @@ export default class ConversationVM extends ProviderListener { this.browseToMessageSeq = conversation.lastMessage?.messageSeq || 0 } + if (conversation.lastMessage) { + this.updateLastMessageIfNeed(new MessageWrap(conversation.lastMessage)) + } + WKSDK.shared().conversationManager.openConversation = conversation } @@ -681,7 +683,7 @@ export default class ConversationVM extends ProviderListener { this.lastMessage = message change = true } - if (change && this.showScrollToBottomBtn) { + if (change) { this.refreshNewMsgCount() } } @@ -707,7 +709,6 @@ export default class ConversationVM extends ProviderListener { if (oldUnreadCount != this.unreadCount) { const conversation = WKSDK.shared().conversationManager.findConversation(this.channel) if (conversation) { - console.log("this.unreadCount--->",this.unreadCount) conversation.unread = this.unreadCount WKSDK.shared().conversationManager.notifyConversationListeners(conversation, ConversationAction.update) } diff --git a/packages/tsdaodaobase/src/Components/EmojiToolbar/index.tsx b/packages/tsdaodaobase/src/Components/EmojiToolbar/index.tsx index 55f51aa..bf6d031 100644 --- a/packages/tsdaodaobase/src/Components/EmojiToolbar/index.tsx +++ b/packages/tsdaodaobase/src/Components/EmojiToolbar/index.tsx @@ -110,7 +110,7 @@ export class EmojiPanel extends Component { this.setState({ emojis: this.emojiService.getAllEmoji() }) - // this.requestStickerCategory() + this.requestStickerCategory() } requestStickerCategory() { diff --git a/packages/tsdaodaobase/src/Pages/Chat/index.tsx b/packages/tsdaodaobase/src/Pages/Chat/index.tsx index 0bc6648..33d35c9 100644 --- a/packages/tsdaodaobase/src/Pages/Chat/index.tsx +++ b/packages/tsdaodaobase/src/Pages/Chat/index.tsx @@ -182,14 +182,6 @@ export default class ChatPage extends Component { - updateConversation(channel: Channel) { - const conversation = WKSDK.shared().conversationManager.findConversation(channel) - if(conversation) { - conversation.unread = 0 - conversation.lastMessage = undefined - } - } - render(): ReactNode { return ( 0) { for (const conversation of conversations) { if(conversation.lastMessage?.content && conversation.lastMessage?.contentType == MessageContentType.text) { - if (conversation.lastMessage.content.text) { - conversation.lastMessage.content.text = ProhibitwordsService.shared.filter(conversation.lastMessage.content.text ) - } + conversation.lastMessage.content.text = ProhibitwordsService.shared.filter(conversation.lastMessage.content.text) } conversationWraps.push(new ConversationWrap(conversation)) } diff --git a/yarn.lock b/yarn.lock index ef49c3a..a7053ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13714,10 +13714,10 @@ ws@^8.13.0: resolved "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -wukongimjssdk@^1.2.7: - version "1.2.10" - resolved "https://registry.npmmirror.com/wukongimjssdk/-/wukongimjssdk-1.2.10.tgz#2aad714d9b04ca4ceae11bb527328bbeb715cb64" - integrity sha512-MX4NJoXGV+KnxZ6kK8UwsjLWEewGQudmCGV2d4/vrtI99Z78EkfWARPyVGX3jkqX0vwDzxid2JrcQewuo3vXGA== +wukongimjssdk@^1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/wukongimjssdk/-/wukongimjssdk-1.2.11.tgz#0e08e0a8a7c5d068ee3be20ddcd46e9ad3c9badc" + integrity sha512-kupChGVdBEogDx85NYiL3rZJJRAr0eyDqC6/fuPMPoZmGan591qtdlqP65Kz0IgW7ifp7cpO2xxnlgUThPT3xQ== dependencies: "@types/bignumber.js" "^5.0.0" "@types/crypto-js" "^4.0.2"