fix: update

This commit is contained in:
tangtaoit 2024-12-30 12:01:20 +08:00
parent 441a09bc29
commit acf90418e2
8 changed files with 108 additions and 32 deletions

View File

@ -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",

View File

@ -242,6 +242,11 @@ export default class WKApp extends ProviderListener {
private wsaddrs = new Array<string>(); // 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();

View File

@ -187,7 +187,7 @@ export class Conversation extends Component<ConversationProps> implements Conver
this.uploadReadedIfNeed()
}
this.vm.markUnread()
// this.vm.markUnread()
}

View File

@ -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)
}

View File

@ -110,7 +110,7 @@ export class EmojiPanel extends Component<EmojiPanelProps, EmojiPanelState> {
this.setState({
emojis: this.emojiService.getAllEmoji()
})
// this.requestStickerCategory()
this.requestStickerCategory()
}
requestStickerCategory() {

View File

@ -182,14 +182,6 @@ export default class ChatPage extends Component<any> {
updateConversation(channel: Channel) {
const conversation = WKSDK.shared().conversationManager.findConversation(channel)
if(conversation) {
conversation.unread = 0
conversation.lastMessage = undefined
}
}
render(): ReactNode {
return (
<Provider

View File

@ -256,9 +256,7 @@ export class ChatVM extends ProviderListener {
if (conversations && conversations.length > 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))
}

View File

@ -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"