-
Notifications
You must be signed in to change notification settings - Fork 340
Expand file tree
/
Copy pathextension_env.ts
More file actions
35 lines (32 loc) · 1.1 KB
/
extension_env.ts
File metadata and controls
35 lines (32 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
export type TExtensionEnv = {
inIncognitoContext: boolean;
userAgentData?: GMUserAgentData | null;
};
type GMUserAgentData = typeof GM_info.userAgentData;
export const extensionEnv: TExtensionEnv = {
inIncognitoContext: chrome.extension.inIncognitoContext,
} satisfies TExtensionEnv;
export const getExtensionUserAgentData = async (): Promise<GMUserAgentData | null> => {
// @ts-ignore
const userAgentData = navigator.userAgentData;
if (userAgentData) {
const resultData: GMUserAgentData = {
brands: userAgentData.brands,
mobile: userAgentData.mobile,
platform: userAgentData.platform,
} satisfies GMUserAgentData;
// 处理architecture和bitness
if (chrome.runtime.getPlatformInfo) {
try {
const platformInfo = await chrome.runtime.getPlatformInfo();
resultData.architecture = platformInfo.nacl_arch;
resultData.bitness = platformInfo.arch.includes("64") ? "64" : "32";
} catch (e) {
// 避免 API 无法执行的问题。不影响整体运作
console.warn(e);
}
}
return resultData;
}
return null;
};