Improve responsiveness of timer page - 1.180 🚀

This commit is contained in:
Brandon Presley 2023-11-12 23:36:22 +13:00
parent bf6863000f
commit 84ff8a110b
4 changed files with 22 additions and 16 deletions

View File

@ -17,7 +17,7 @@ export interface TickEvent {
}
export default function TimerPage() {
const { minutes, seconds } = useTimer();
const { minutes, seconds, update } = useTimer();
const [settings, setSettings] = useState<Settings>();
const { colors } = useTheme();
@ -29,11 +29,13 @@ export default function TimerPage() {
const stop = () => {
NativeModules.AlarmModule.stop();
update();
};
const add = async () => {
console.log(`${TimerPage.name}.add:`, settings);
NativeModules.AlarmModule.add();
update();
};
const progress = useMemo(() => {

View File

@ -85,8 +85,8 @@ android {
applicationId "com.massive"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 36205
versionName "1.179"
versionCode 36206
versionName "1.180"
}
signingConfigs {
release {

View File

@ -1,6 +1,6 @@
{
"name": "massive",
"version": "1.179",
"version": "1.180",
"private": true,
"license": "GPL-3.0-only",
"scripts": {

View File

@ -8,19 +8,23 @@ export default function useTimer() {
const [minutes, setMinutes] = useState("00");
const [seconds, setSeconds] = useState("00");
const update = () => {
const current: number = NativeModules.AlarmModule.getCurrent();
setMinutes(
Math.floor(current / 1000 / 60)
.toString()
.padStart(2, "0")
);
setSeconds(
Math.floor((current / 1000) % 60)
.toString()
.padStart(2, "0")
);
};
useFocusEffect(
useCallback(() => {
const current: number = NativeModules.AlarmModule.getCurrent();
setMinutes(
Math.floor(current / 1000 / 60)
.toString()
.padStart(2, "0")
);
setSeconds(
Math.floor((current / 1000) % 60)
.toString()
.padStart(2, "0")
);
update();
const listener = emitter.addListener("tick", (event: TickEvent) => {
console.log(`${useTimer.name}.tick:`, { event });
setMinutes(event.minutes);
@ -30,5 +34,5 @@ export default function useTimer() {
}, [])
);
return { minutes, seconds };
return { minutes, seconds, update };
}