press-ui
Version:
简单、易用的跨端组件库,兼容 Vue2 和 Vue3,同时支持 uni-app和普通 Vue 项目
135 lines (117 loc) • 2.93 kB
JavaScript
import { getBrowserInfo } from './browser-info';
import { getWindowInfo } from './window-info';
const { toString } = Object.prototype;
export function isPlainObject(obj) {
return toString.call(obj) === '[object Object]';
}
export function sortObject(obj) {
const sortObj = {};
if (isPlainObject(obj)) {
Object.keys(obj).sort()
.forEach((key) => {
sortObj[key] = obj[key];
});
}
return !Object.keys(sortObj) ? obj : sortObj;
}
let browserInfo = {};
let innerInitBrowserInfo = true;
function initBrowserInfo() {
if (!innerInitBrowserInfo) return;
browserInfo = getBrowserInfo();
}
export function getDeviceInfo() {
initBrowserInfo();
const {
deviceBrand,
deviceModel,
brand,
model,
platform,
system,
deviceOrientation,
deviceType,
} = browserInfo;
return {
brand,
deviceBrand,
deviceModel,
devicePixelRatio: window.devicePixelRatio,
deviceId: '', // deviceId(),
deviceOrientation,
deviceType,
model,
platform,
system,
};
}
export function getAppBaseInfo() {
initBrowserInfo();
const { theme, language, browserName, browserVersion } = browserInfo;
const appLanguage = uni
? uni.getLocale
? uni.getLocale()
: language
: language;
return {
appId: '', // __uniConfig.appId,
appName: '', // __uniConfig.appName,
appVersion: '', // __uniConfig.appVersion,
appVersionCode: '', // __uniConfig.appVersionCode,
appLanguage,
enableDebug: false,
hostSDKVersion: undefined,
hostPackageName: undefined,
hostFontSizeSetting: undefined,
hostName: browserName,
hostVersion: browserVersion,
hostTheme: theme,
hostLanguage: language,
language,
SDKVersion: '',
theme,
version: '',
};
}
/**
* 获取系统信息-同步
*/
export function getSystemInfoSync() {
innerInitBrowserInfo = true;
initBrowserInfo();
innerInitBrowserInfo = false;
const windowInfo = getWindowInfo();
const deviceInfo = getDeviceInfo();
const appBaseInfo = getAppBaseInfo();
innerInitBrowserInfo = true;
const { ua, browserName, browserVersion, osname, osversion } = browserInfo;
const systemInfo = Object.assign(
{},
windowInfo,
deviceInfo,
appBaseInfo,
{
browserName,
browserVersion,
fontSizeSetting: appBaseInfo.hostFontSizeSetting,
osName: osname.toLocaleLowerCase(),
osVersion: osversion,
osLanguage: undefined,
osTheme: undefined,
uniPlatform: 'web',
uniCompileVersion: '', // __uniConfig.compilerVersion,
uniRuntimeVersion: '', // __uniConfig.compilerVersion,
ua,
},
);
delete systemInfo.screenTop;
delete systemInfo.enableDebug;
// if (!__uniConfig.darkmode) delete systemInfo.theme;
return sortObject(systemInfo);
}
/**
* 获取系统信息-异步
*/
export function getSystemInfo() {
return getSystemInfoSync();
}