funda-ui
Version:
React components using pure Bootstrap 5+ which does not contain any external style and script libraries.
63 lines (49 loc) • 2.03 kB
text/typescript
/*
* Determine whether it is a special platform
*
* @private
*/
function getOs() {
if (typeof window === 'undefined') return {};
let os;
if ( typeof window !== "undefined" ) {
const getOs = () => {
const _navigator: any = window.navigator;
const platform = () => {
// 2022 way of detecting. Note : this userAgentData feature is available only in secure contexts (HTTPS)
if (typeof _navigator.userAgentData !== 'undefined' && _navigator.userAgentData != null) {
return _navigator.userAgentData.platform;
}
// Deprecated but still works for most of the browser
if (typeof _navigator.platform !== 'undefined') {
if (typeof _navigator.userAgent !== 'undefined' && /android/.test(_navigator.userAgent.toLowerCase())) {
// android device’s _navigator.platform is often set as 'linux', so const’s use userAgent for them
return 'android';
}
return _navigator.platform;
}
return 'unknown';
}
const _platform = platform().toLowerCase();
const isOSX = /mac/.test(_platform); // Mac desktop
const isIOS = ['iphone', 'ipad', 'ipod'].indexOf(_platform) === -1 ? false : true; // Mac iOs
const isApple = isOSX || isIOS; // Apple device (desktop or iOS)
const isWindows = /win/.test(_platform); // Windows
const isAndroid = /android/.test(_platform); // Android
const isLinux = /linux/.test(_platform); // Linux
return {
isOSX,
isIOS,
isApple,
isWindows,
isAndroid,
isLinux
}
};
os = getOs();
} else {
os = {};
}
return os;
}
export default getOs;