ソースを参照

增加通知跳转app功能, 补充通知消息类型

lufei 6 ヶ月 前
コミット
c56d3a4fdd
2 ファイル変更47 行追加25 行削除
  1. 19 11
      electron/main/windowManage.ts
  2. 28 14
      src/layout/useGlobalEvents.tsx

+ 19 - 11
electron/main/windowManage.ts

@@ -103,18 +103,15 @@ export function createMainWindow() {
       return
     }
     notification.show();
+
+    notification.on('click', () => {
+      focusMainWindow()
+    })
   });
 
   // 语音视频通话 聚焦窗口
   ipcMain.handle('window:focus', (event, data) => {
-    console.log('execute window focus');
-    console.log('execute window focus');
-    console.log('execute window focus');
-    console.log('execute window focus');
-    console.log('execute window focus');
-    console.log('execute window focus');
-
-    showWindow()
+    focusMainWindow()
   })
 
   return mainWindow;
@@ -182,9 +179,6 @@ export const showWindow = () => {
     mainWindow.show();
   }
   mainWindow.focus();
-  console.log(mainWindow.isMinimized());
-  console.log(mainWindow.isVisible());
-
 };
 export const hideWindow = () => {
   if (!mainWindow) return;
@@ -223,3 +217,17 @@ export const toggleDevTools = () => {
     });
   }
 };
+const focusMainWindow = () => {
+  const mainWindow = BrowserWindow.getAllWindows()[0];
+
+  if (mainWindow) {
+    if (mainWindow.isMinimized()) {
+      mainWindow.restore();
+    }
+    mainWindow.show();
+    mainWindow.moveTop(); // Move window to the top of the stack
+    mainWindow.flashFrame(true); // Flash the window to draw attention
+    mainWindow.focus();
+  }
+  showWindow();
+}

+ 28 - 14
src/layout/useGlobalEvents.tsx

@@ -1,4 +1,4 @@
-import { CbEvents } from "@openim/wasm-client-sdk";
+import { CbEvents, MessageStatus } from "@openim/wasm-client-sdk";
 import { LogLevel, MessageType, SessionType } from "@openim/wasm-client-sdk";
 import {
   BlackUserItem,
@@ -227,26 +227,18 @@ export function useGlobalEvent() {
 
   const newMessageHandler = ({ data }: WSEvent<MessageItem[]>) => {
     const message = data?.[0];
-    if (window.electronAPI?.showNotification) {
+    if (
+      window.electronAPI?.showNotification &&
+      message.status === MessageStatus.Succeed
+    ) {
       window.electronAPI?.showNotification(
         message.senderNickname,
-        message?.textElem?.content ?? "",
+        handleMessageBody(message),
       );
     }
     if (message.contentType === MessageType.CustomMessage) {
       window.electronAPI?.focusWindow();
     }
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------", message.contentType);
-    console.log("push new message ---------------");
-    console.log("push new message ---------------");
-    console.log("push new message ---------------");
-    console.log("push new message ---------------");
-    console.log("push new message ---------------");
     if (syncState === "loading") {
       return;
     }
@@ -438,4 +430,26 @@ export function useGlobalEvent() {
     IMSDK.off(CbEvents.OnGroupApplicationAccepted, groupApplicationProcessedHandler);
     IMSDK.off(CbEvents.OnGroupApplicationRejected, groupApplicationProcessedHandler);
   };
+  const handleMessageBody = (message: MessageItem) => {
+    const messageType = message.contentType;
+    if (messageType === MessageType.CustomMessage) {
+      return t("messageDescription.rtcMessage");
+    }
+    if (messageType === MessageType.PictureMessage) {
+      return t("messageDescription.imageMessage");
+    }
+    if (messageType === MessageType.VideoMessage) {
+      return t("messageDescription.videoMessage");
+    }
+    if (messageType === MessageType.VoiceMessage) {
+      return t("messageDescription.voiceMessage");
+    }
+    if (messageType === MessageType.FileMessage) {
+      return t("messageDescription.fileMessage", {
+        file: message.fileElem?.fileName,
+      });
+    }
+
+    return message?.textElem?.content ?? "";
+  };
 }