All files / src/utils platformUtils.ts

100% Statements 31/31
92.3% Branches 12/13
100% Functions 2/2
100% Lines 31/31

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 36 37 38 39 40 41 42 43          1x   1x 1x 1x 1x 1x   1x 3x 3x 1x 3x 1x 1x 1x 1x 3x 3x   1x 7x 2x 7x 2x 4x 2x 2x 1x 1x 7x   1x   1x   1x  
export interface NavigatorUAData {
	platform: string
	brands: { brand: string; version: string }[]
}
 
export const unknown = "Unknown"
 
const platforms = {
	windows: /win32/,
	mac: /darwin/,
	linux: /linux/,
}
 
export const detectOS = (platform: string) => {
	let detectedOs = unknown
	if (platform.match(platforms.windows)) {
		detectedOs = "windows"
	} else if (platform.match(platforms.mac)) {
		detectedOs = "mac"
	} else if (platform.match(platforms.linux)) {
		detectedOs = "linux"
	}
	return detectedOs
}
 
export const detectMetaKeyChar = (platform: string) => {
	if (platform.match(platforms.mac)) {
		return "CMD"
	} else if (platform.match(platforms.windows)) {
		return "Win"
	} else if (platform.match(platforms.linux)) {
		return "Alt"
	} else {
		return "CMD"
	}
}
 
const userAgent = navigator?.userAgent || ""
 
export const isChrome = userAgent.indexOf("Chrome") >= 0
 
export const isSafari = !isChrome && userAgent.indexOf("Safari") >= 0