one
Version:
One is a React framework for web, iOS, and Android apps.
186 lines (183 loc) • 4.68 kB
JavaScript
import { useEffect, useState } from "react";
import { NitroModules } from "react-native-nitro-modules";
import { rethrowNativeError } from "../nativeError.native.js";
import { assertLevelListener, assertLowPowerModeListener, assertStateListener } from "./validate.native.js";
var hybrid;
function native() {
hybrid !== null && hybrid !== void 0 ? hybrid : hybrid = NitroModules.createHybridObject("OneBattery");
return hybrid;
}
function getLevel() {
return native().getLevel().catch(rethrowNativeError);
}
function getState() {
return native().getState().catch(rethrowNativeError);
}
function getPowerState() {
return native().getPowerState().catch(rethrowNativeError);
}
function isLowPowerModeEnabled() {
return native().isLowPowerModeEnabled().catch(rethrowNativeError);
}
function isAvailable() {
return native().isAvailable();
}
function addLevelListener(listener) {
assertLevelListener(listener);
var remove = native().addLevelListener(listener);
return { remove: function remove1() {
return remove();
} };
}
function addStateListener(listener) {
assertStateListener(listener);
var remove = native().addStateListener(listener);
return { remove: function remove1() {
return remove();
} };
}
function addLowPowerModeListener(listener) {
assertLowPowerModeListener(listener);
var remove = native().addLowPowerModeListener(listener);
return { remove: function remove1() {
return remove();
} };
}
function useBatteryLevel() {
var [level, setLevel] = useState(-1);
useEffect(function() {
var active = true;
var fromEvent = false;
getLevel().then(function(next) {
if (active && !fromEvent) setLevel(next);
}).catch(function() {});
var subscription = addLevelListener(function(event) {
if (active) {
fromEvent = true;
setLevel(event.batteryLevel);
}
});
return function() {
active = false;
subscription.remove();
};
}, []);
return level;
}
function useBatteryState() {
var [state, setState] = useState("unknown");
useEffect(function() {
var active = true;
var fromEvent = false;
getState().then(function(next) {
if (active && !fromEvent) setState(next);
}).catch(function() {});
var subscription = addStateListener(function(event) {
if (active) {
fromEvent = true;
setState(event.batteryState);
}
});
return function() {
active = false;
subscription.remove();
};
}, []);
return state;
}
function useLowPowerMode() {
var [enabled, setEnabled] = useState(false);
useEffect(function() {
var active = true;
var fromEvent = false;
isLowPowerModeEnabled().then(function(next) {
if (active && !fromEvent) setEnabled(next);
}).catch(function() {});
var subscription = addLowPowerModeListener(function(event) {
if (active) {
fromEvent = true;
setEnabled(event.lowPowerMode);
}
});
return function() {
active = false;
subscription.remove();
};
}, []);
return enabled;
}
function usePowerState() {
var [power, setPower] = useState({
batteryLevel: -1,
batteryState: "unknown",
lowPowerMode: false
});
useEffect(function() {
var active = true;
var levelFromEvent = false;
var stateFromEvent = false;
var modeFromEvent = false;
getPowerState().then(function(next) {
if (!active) return;
setPower(function(current) {
return {
batteryLevel: levelFromEvent ? current.batteryLevel : next.batteryLevel,
batteryState: stateFromEvent ? current.batteryState : next.batteryState,
lowPowerMode: modeFromEvent ? current.lowPowerMode : next.lowPowerMode
};
});
}).catch(function() {});
var onLevel = addLevelListener(function(event) {
if (active) {
levelFromEvent = true;
setPower(function(current) {
return {
...current,
batteryLevel: event.batteryLevel
};
});
}
});
var onState = addStateListener(function(event) {
if (active) {
stateFromEvent = true;
setPower(function(current) {
return {
...current,
batteryState: event.batteryState
};
});
}
});
var onMode = addLowPowerModeListener(function(event) {
if (active) {
modeFromEvent = true;
setPower(function(current) {
return {
...current,
lowPowerMode: event.lowPowerMode
};
});
}
});
return function() {
active = false;
onLevel.remove();
onState.remove();
onMode.remove();
};
}, []);
return power;
}
var Battery = Object.freeze({
getLevel,
getState,
getPowerState,
isLowPowerModeEnabled,
isAvailable,
addLevelListener,
addStateListener,
addLowPowerModeListener
});
export { Battery, useBatteryLevel, useBatteryState, useLowPowerMode, usePowerState };
//# sourceMappingURL=index.native.js.map