Skip to content

Commit ee9ca6c

Browse files
authored
feat: support track the time of tab groups (#481)
1 parent 4c0d96a commit ee9ca6c

File tree

6 files changed

+14
-6
lines changed

6 files changed

+14
-6
lines changed

src/api/chrome/permission.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,5 @@ export async function requestPerm(perm: chrome.runtime.ManifestPermissions): Pro
3636
}
3737

3838
export async function onPermRemoved(callback: ArgCallback<chrome.permissions.Permissions>) {
39-
chrome.permissions.onRemoved.addListener(callback)
39+
chrome.permissions?.onRemoved.addListener(callback)
4040
}

src/background/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import { listTabs } from "@api/chrome/tab"
99
import { isNoneWindowId, onNormalWindowFocusChanged } from "@api/chrome/window"
10+
import optionHolder from "@service/components/option-holder"
1011
import { isBrowserUrl } from "@util/pattern"
1112
import { openLog } from "../common/logger"
1213
import ActiveTabListener from "./active-tab-listener"
@@ -78,3 +79,6 @@ onNormalWindowFocusChanged(async windowId => {
7879
badgeTextManager.updateFocus({ url, tabId })
7980
})
8081
})
82+
83+
// listen permission change event
84+
optionHolder.listenPermChange()

src/background/track-server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ const RUN_TIME_END_CACHE: { [host: string]: number } = {}
112112
async function handleTrackRunTimeEvent(event: timer.core.Event): Promise<void> {
113113
const { start, end, url, host } = event || {}
114114
if (!host || !start || !end) return
115+
if (whitelistHolder.contains(host, url)) return
115116
const realStart = Math.max(RUN_TIME_END_CACHE[host] ?? 0, start)
116117
const byDate = splitRunTime(realStart, end)
117118
if (!Object.keys(byDate).length) return

src/service/components/option-holder.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ class OptionHolder {
1818
})
1919
}
2020

21+
listenPermChange() {
22+
onPermRemoved(perm => {
23+
perm.permissions?.includes('tabGroups') && this.set({ countTabGroup: false })
24+
})
25+
}
26+
2127
private async reset(): Promise<DefaultOption> {
2228
const exist: Partial<timer.option.AllOption> = await db.getOption()
2329
const result = defaultOption()

test-e2e/common/whitelist.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,5 @@ export async function createWhitelist(context: LaunchContext, white: string) {
1616
await whitePage.click('.el-button:nth-child(3)')
1717
const checkBtn = await whitePage.waitForSelector('.el-overlay.is-message-box .el-button.el-button--primary')
1818
await checkBtn?.click()
19-
await sleep(.2)
20-
21-
await whitePage.close()
19+
setTimeout(() => whitePage.close(), 200)
2220
}

test-e2e/tracker/run-time.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ async function clickRunTimeChange(siteHost: string): Promise<void> {
1414
const runTimeSwitch = document.querySelector<HTMLDivElement>('#site-manage-table-wrapper table > tbody > tr > td.el-table_1_column_7 .el-switch')
1515
runTimeSwitch?.click()
1616
})
17-
await sleep(.2)
18-
await sitePage.close()
17+
setTimeout(() => sitePage.close(), 200)
1918
}
2019

2120
describe('Run time tracking', () => {

0 commit comments

Comments
 (0)