Browse Source

enh: electron window focus detect

Timothy Jaeryang Baek 6 months ago
parent
commit
15e591f30d
2 changed files with 17 additions and 6 deletions
  1. 1 1
      src/lib/components/app/AppControls.svelte
  2. 16 5
      src/routes/+layout.svelte

+ 1 - 1
src/lib/components/app/AppControls.svelte

@@ -2,7 +2,7 @@
 	import Tooltip from '$lib/components/common/Tooltip.svelte';
 	import Plus from '$lib/components/icons/Plus.svelte';
 
-	let selected = 'home';
+	let selected = '';
 </script>
 
 <div class="min-w-[4.5rem] bg-gray-50 dark:bg-gray-950 flex gap-2.5 flex-col pt-10">

+ 16 - 5
src/routes/+layout.svelte

@@ -103,10 +103,14 @@
 	const chatEventHandler = async (event) => {
 		const chat = $page.url.pathname.includes(`/c/${event.chat_id}`);
 
-		if (
-			(event.chat_id !== $chatId && !$temporaryChatEnabled) ||
-			document.visibilityState !== 'visible'
-		) {
+		let isFocused = document.visibilityState !== 'visible';
+		if (window.electronAPI) {
+			isFocused = await window.electronAPI.send({
+				type: 'window:isFocused'
+			});
+		}
+
+		if ((event.chat_id !== $chatId && !$temporaryChatEnabled) || isFocused) {
 			await tick();
 			const type = event?.data?.type ?? null;
 			const data = event?.data?.data ?? null;
@@ -149,7 +153,14 @@
 		// check url path
 		const channel = $page.url.pathname.includes(`/channels/${event.channel_id}`);
 
-		if ((!channel || document.visibilityState !== 'visible') && event?.user?.id !== $user?.id) {
+		let isFocused = document.visibilityState !== 'visible';
+		if (window.electronAPI) {
+			isFocused = await window.electronAPI.send({
+				type: 'window:isFocused'
+			});
+		}
+
+		if ((!channel || isFocused) && event?.user?.id !== $user?.id) {
 			await tick();
 			const type = event?.data?.type ?? null;
 			const data = event?.data?.data ?? null;