export function isStandaloneDisplay(input: {
displayModeStandalone: boolean
navigatorStandalone?: boolean
}): boolean {
return input.displayModeStandalone || input.navigatorStandalone === true
}
export function isIosBrowser(input: {
userAgent: string
platform?: string
maxTouchPoints?: number
}): boolean {
if (/iphone|ipad|ipod/i.test(input.userAgent)) return true
return input.platform === 'MacIntel' && (input.maxTouchPoints ?? 0) > 1
}
export function isSafariFamily(userAgent: string): boolean {
return /Safari/i.test(userAgent)
}
export function shouldShowInstallButton(input: {
standalone: boolean
ios: boolean
}): boolean {
return !input.standalone && !input.ios
}
export function shouldShowIosInstallHint(input: {
standalone: boolean
ios: boolean
safariFamily: boolean
dismissed: boolean
}): boolean {
return input.ios && !input.standalone && input.safariFamily && !input.dismissed
}