diff --git a/apps/android/android/app/build.gradle b/apps/android/android/app/build.gradle index 466068d..9c0a811 100644 --- a/apps/android/android/app/build.gradle +++ b/apps/android/android/app/build.gradle @@ -8,7 +8,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 27 - versionName "1.0.35" + versionName "1.0.36" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/apps/android/package.json b/apps/android/package.json index e32c3f1..b944d14 100644 --- a/apps/android/package.json +++ b/apps/android/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/android", "private": true, - "version": "1.0.35", + "version": "1.0.36", "type": "module", "scripts": { "cap:sync": "npx cap sync", diff --git a/apps/electron/main.cjs b/apps/electron/main.cjs index 47b9cb3..55dd91f 100644 --- a/apps/electron/main.cjs +++ b/apps/electron/main.cjs @@ -188,6 +188,9 @@ app.whenReady().then(async () => { const win = BrowserWindow.getFocusedWindow(); if (win) win.close(); }); + ipcMain.on('flash-frame', () => { + if (mainWindow && !mainWindow.isDestroyed()) mainWindow.flashFrame(true); + }); // Helper to fetch metadata (Zero-Knowledge: Client fetches previews) diff --git a/apps/electron/package.json b/apps/electron/package.json index cc060f4..daff670 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/electron", "private": true, - "version": "1.0.35", + "version": "1.0.36", "description": "Brycord - Electron app", "author": "Moyettes", "type": "module", @@ -37,8 +37,7 @@ } ], "win": { - "target": ["nsis"], - "signAndEditExecutable": false + "target": ["nsis"] }, "mac": { "target": ["dmg", "zip"], diff --git a/apps/electron/preload.cjs b/apps/electron/preload.cjs index c032573..3932688 100644 --- a/apps/electron/preload.cjs +++ b/apps/electron/preload.cjs @@ -25,6 +25,7 @@ contextBridge.exposeInMainWorld('windowControls', { minimize: () => ipcRenderer.send('window-minimize'), maximize: () => ipcRenderer.send('window-maximize'), close: () => ipcRenderer.send('window-close'), + flashFrame: () => ipcRenderer.send('flash-frame'), }); contextBridge.exposeInMainWorld('appSettings', { diff --git a/apps/electron/src/platform/index.js b/apps/electron/src/platform/index.js index 3643542..37caf96 100644 --- a/apps/electron/src/platform/index.js +++ b/apps/electron/src/platform/index.js @@ -52,6 +52,7 @@ const electronPlatform = { minimize: () => window.windowControls.minimize(), maximize: () => window.windowControls.maximize(), close: () => window.windowControls.close(), + flashFrame: () => window.windowControls.flashFrame(), }, updates: { checkUpdate: () => window.updateAPI.checkFlatpakUpdate(), diff --git a/apps/web/package.json b/apps/web/package.json index 03bc242..39318c5 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/web", "private": true, - "version": "1.0.35", + "version": "1.0.36", "type": "module", "scripts": { "dev": "vite", diff --git a/packages/shared/package.json b/packages/shared/package.json index 3f0bbc7..2120821 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,7 +1,7 @@ { "name": "@discord-clone/shared", "private": true, - "version": "1.0.35", + "version": "1.0.36", "type": "module", "main": "src/App.jsx", "dependencies": { diff --git a/packages/shared/src/components/ChatArea.jsx b/packages/shared/src/components/ChatArea.jsx index ae106ed..849fafd 100644 --- a/packages/shared/src/components/ChatArea.jsx +++ b/packages/shared/src/components/ChatArea.jsx @@ -512,7 +512,8 @@ const InputContextMenu = ({ x, y, onClose, onPaste }) => { }; const ChatArea = ({ channelId, channelName, channelType, username, channelKey, userId: currentUserId, showMembers, onToggleMembers, onOpenDM, showPinned, onTogglePinned, jumpToMessageId, onClearJumpToMessage }) => { - const { crypto } = usePlatform(); + const platform = usePlatform(); + const { crypto } = platform; const isMobile = useIsMobile(); const { isReceivingScreenShareAudio } = useVoice(); const searchCtx = useSearch(); @@ -1236,8 +1237,11 @@ const ChatArea = ({ channelId, channelName, channelType, username, channelKey, u } } - if (shouldPing) playPingSound(); - }, [decryptedMessages, currentUserId, isMentionedInContent, playPingSound]); + if (shouldPing) { + playPingSound(); + if (!document.hasFocus()) platform.windowControls?.flashFrame?.(); + } + }, [decryptedMessages, currentUserId, isMentionedInContent, playPingSound, platform]); // Capture the unread divider position when read state loads for a channel const unreadDividerCapturedRef = useRef(null);