|
1 | | -import { lastActivatedTabId, listTabs, sendMsg2Tab } from "@api/chrome/tab" |
2 | | -import { lastFocusedNormalWinId } from "@api/chrome/window" |
| 1 | +import { getTab, listTabs, sendMsg2Tab } from "@api/chrome/tab" |
| 2 | +import { getWindow } from "@api/chrome/window" |
3 | 3 | import optionHolder from "@service/components/option-holder" |
4 | 4 | import itemService, { type ItemIncContext } from "@service/item-service" |
5 | 5 | import limitService from "@service/limit-service" |
6 | 6 | import periodThrottler from '@service/throttler/period-throttler' |
7 | 7 | import whitelistHolder from "@service/whitelist/holder" |
8 | 8 | import { IS_ANDROID } from "@util/constant/environment" |
9 | 9 | import { extractHostname } from "@util/pattern" |
10 | | -import badgeManager from '../badge-manager' |
| 10 | +import badgeManager from "../badge-manager" |
11 | 11 |
|
12 | 12 | async function handleTime(context: ItemIncContext, timeRange: [number, number], tabId: number | undefined): Promise<number> { |
13 | 13 | const { host, url } = context |
@@ -41,21 +41,26 @@ export async function handleTrackTimeEvent(event: timer.core.Event, senderTab: C |
41 | 41 |
|
42 | 42 | await handleTime({ host, url, groupId }, [start, end], tabId) |
43 | 43 | if (tabId) { |
44 | | - badgeManager.updateFocus({ tabId, url }) |
| 44 | + const winTabs = await listTabs({ active: true, windowId }) |
| 45 | + const firstActiveTab = winTabs?.[0] |
| 46 | + // Cause there is no way to determine whether this tab is selected in screen-split mode |
| 47 | + // So only show badge for first tab for screen-split mode |
| 48 | + // @see #246 |
| 49 | + firstActiveTab?.id === tabId && badgeManager.updateFocus({ tabId, url }) |
45 | 50 | } |
46 | 51 | } |
47 | 52 |
|
48 | 53 | async function windowNotFocused(winId: number | undefined): Promise<boolean> { |
49 | 54 | if (IS_ANDROID) return false |
50 | 55 | if (!winId) return true |
51 | | - const focusedWinId = await lastFocusedNormalWinId() |
52 | | - return focusedWinId !== winId |
| 56 | + const window = await getWindow(winId) |
| 57 | + return !window?.focused |
53 | 58 | } |
54 | 59 |
|
55 | 60 | async function tabNotActive(tabId: number | undefined): Promise<boolean> { |
56 | 61 | if (!tabId) return true |
57 | | - const lastActivated = await lastActivatedTabId() |
58 | | - return lastActivated !== tabId |
| 62 | + const tab = await getTab(tabId) |
| 63 | + return !tab?.active |
59 | 64 | } |
60 | 65 |
|
61 | 66 | async function sendLimitedMessage(items: timer.limit.Item[]) { |
|
0 commit comments