react-native-device-info
Version:
Get device information using react-native
293 lines (220 loc) • 7.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getPowerStateSync = exports.getPowerState = exports.getTotalMemory = exports.getUsedMemory = exports.getMaxMemory = exports.getFreeDiskStorageSync = exports.getFreeDiskStorage = exports.getTotalDiskCapacitySync = exports.getTotalDiskCapacity = exports.getBaseOs = exports.isAirplaneMode = exports.isLocationEnabled = exports.getBatteryLevelSync = exports.getBatteryLevel = exports.isCameraPresentSync = exports.isCameraPresent = exports.isBatteryChargingSync = exports.isBatteryCharging = exports.getUserAgent = exports.getInstallReferrer = exports.getUsedMemorySync = exports.getTotalMemorySync = exports.isLocationEnabledSync = exports.getUserAgentSync = exports.isAirplaneModeSync = exports.getInstallReferrerSync = exports.getMaxMemorySync = void 0;
var _reactNative = require("react-native");
const deviceInfoEmitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.RNDeviceInfo);
let batteryCharging = false,
batteryLevel = -1,
powerState = {};
const _readPowerState = battery => {
const {
level,
charging,
chargingtime,
dischargingtime
} = battery;
return {
batteryLevel: level,
lowPowerMode: false,
batteryState: level === 1 ? 'full' : charging ? 'charging' : 'unplugged',
chargingtime,
dischargingtime
};
};
const getMaxMemorySync = () => {
if (window.performance && window.performance.memory) {
return window.performance.memory.jsHeapSizeLimit;
}
return -1;
};
exports.getMaxMemorySync = getMaxMemorySync;
const getInstallReferrerSync = () => {
return document.referrer;
};
exports.getInstallReferrerSync = getInstallReferrerSync;
const isAirplaneModeSync = () => {
return !!navigator.onLine;
};
exports.isAirplaneModeSync = isAirplaneModeSync;
const getUserAgentSync = () => {
return window.navigator.userAgent;
};
exports.getUserAgentSync = getUserAgentSync;
const isLocationEnabledSync = () => {
return !!navigator.geolocation;
};
exports.isLocationEnabledSync = isLocationEnabledSync;
const getTotalMemorySync = () => {
if (navigator.deviceMemory) {
return navigator.deviceMemory * 1000000000;
}
return -1;
};
exports.getTotalMemorySync = getTotalMemorySync;
const getUsedMemorySync = () => {
if (window.performance && window.performance.memory) {
return window.performance.memory.usedJSHeapSize;
}
return -1;
};
exports.getUsedMemorySync = getUsedMemorySync;
const init = () => {
if (typeof navigator === 'undefined' || !navigator.getBattery) return;
navigator.getBattery().then(battery => {
batteryCharging = battery.charging;
battery.addEventListener('chargingchange', () => {
const {
charging
} = battery;
batteryCharging = charging;
powerState = _readPowerState(battery);
deviceInfoEmitter.emit('RNDeviceInfo_powerStateDidChange', powerState);
});
battery.addEventListener('levelchange', () => {
const {
level
} = battery;
batteryLevel = level;
powerState = _readPowerState(battery);
deviceInfoEmitter.emit('RNDeviceInfo_batteryLevelDidChange', level);
if (level < 0.2) {
deviceInfoEmitter.emit('RNDeviceInfo_batteryLevelIsLow', level);
}
});
});
};
const getBaseOsSync = () => {
const userAgent = window.navigator.userAgent,
platform = window.navigator.platform,
macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],
windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],
iosPlatforms = ['iPhone', 'iPad', 'iPod'];
let os = platform;
if (macosPlatforms.indexOf(platform) !== -1) {
os = 'Mac OS';
} else if (iosPlatforms.indexOf(platform) !== -1) {
os = 'iOS';
} else if (windowsPlatforms.indexOf(platform) !== -1) {
os = 'Windows';
} else if (/Android/.test(userAgent)) {
os = 'Android';
} else if (!os && /Linux/.test(platform)) {
os = 'Linux';
}
return os;
};
init();
/**
* react-native-web empty polyfill.
*/
const getInstallReferrer = async () => {
return getInstallReferrerSync();
};
exports.getInstallReferrer = getInstallReferrer;
const getUserAgent = async () => {
return getUserAgentSync();
};
exports.getUserAgent = getUserAgent;
const isBatteryCharging = async () => {
if (navigator.getBattery) {
return navigator.getBattery().then(battery => battery.charging);
}
return false;
};
exports.isBatteryCharging = isBatteryCharging;
const isBatteryChargingSync = () => {
return batteryCharging;
};
exports.isBatteryChargingSync = isBatteryChargingSync;
const isCameraPresent = async () => {
if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
return navigator.mediaDevices.enumerateDevices().then(devices => {
return !!devices.find(d => d.kind === 'videoinput');
});
}
return false;
};
exports.isCameraPresent = isCameraPresent;
const isCameraPresentSync = () => {
console.log('[react-native-device-info] isCameraPresentSync not supported - please use isCameraPresent');
return false;
};
exports.isCameraPresentSync = isCameraPresentSync;
const getBatteryLevel = async () => {
if (navigator.getBattery) {
return navigator.getBattery().then(battery => battery.level);
}
return -1;
};
exports.getBatteryLevel = getBatteryLevel;
const getBatteryLevelSync = () => {
return batteryLevel;
};
exports.getBatteryLevelSync = getBatteryLevelSync;
const isLocationEnabled = async () => {
return isLocationEnabledSync();
};
exports.isLocationEnabled = isLocationEnabled;
const isAirplaneMode = async () => {
return isAirplaneModeSync();
};
exports.isAirplaneMode = isAirplaneMode;
const getBaseOs = async () => {
return getBaseOsSync();
};
exports.getBaseOs = getBaseOs;
const getTotalDiskCapacity = async () => {
if (navigator.storage && navigator.storage.estimate) {
return navigator.storage.estimate().then(({
quota
}) => quota);
}
return -1;
};
exports.getTotalDiskCapacity = getTotalDiskCapacity;
const getTotalDiskCapacitySync = () => {
console.log('[react-native-device-info] getTotalDiskCapacitySync not supported - please use getTotalDiskCapacity');
return -1;
};
exports.getTotalDiskCapacitySync = getTotalDiskCapacitySync;
const getFreeDiskStorage = async () => {
if (navigator.storage && navigator.storage.estimate) {
return navigator.storage.estimate().then(({
quota,
usage
}) => quota - usage);
}
return -1;
};
exports.getFreeDiskStorage = getFreeDiskStorage;
const getFreeDiskStorageSync = () => {
console.log('[react-native-device-info] getFreeDiskStorageSync not supported - please use getFreeDiskStorage');
return -1;
};
exports.getFreeDiskStorageSync = getFreeDiskStorageSync;
const getMaxMemory = async () => {
return getMaxMemorySync();
};
exports.getMaxMemory = getMaxMemory;
const getUsedMemory = async () => {
return getUsedMemorySync();
};
exports.getUsedMemory = getUsedMemory;
const getTotalMemory = async () => {
return getTotalMemorySync();
};
exports.getTotalMemory = getTotalMemory;
const getPowerState = async () => {
if (navigator.getBattery) {
return navigator.getBattery().then(battery => _readPowerState(battery));
}
return {};
};
exports.getPowerState = getPowerState;
const getPowerStateSync = () => {
return powerState;
};
exports.getPowerStateSync = getPowerStateSync;
//# sourceMappingURL=index.js.map
;