Add global progress bar for ongoing timer - 1.175 🚀

Closes #182
This commit is contained in:
Brandon Presley 2023-11-12 11:52:31 +13:00
parent 70fec83ec3
commit 75263af8b3
3 changed files with 17 additions and 9 deletions

20
App.tsx
View File

@ -9,6 +9,7 @@ import {
MD3DarkTheme as PaperDarkTheme, MD3DarkTheme as PaperDarkTheme,
MD3LightTheme as PaperDefaultTheme, MD3LightTheme as PaperDefaultTheme,
Provider as PaperProvider, Provider as PaperProvider,
ProgressBar,
Snackbar, Snackbar,
} from "react-native-paper"; } from "react-native-paper";
import MaterialIcon from "react-native-vector-icons/MaterialCommunityIcons"; import MaterialIcon from "react-native-vector-icons/MaterialCommunityIcons";
@ -18,6 +19,8 @@ import { emitter } from "./emitter";
import { TOAST } from "./toast"; import { TOAST } from "./toast";
import { ThemeContext } from "./use-theme"; import { ThemeContext } from "./use-theme";
import AppStack from "./AppStack"; import AppStack from "./AppStack";
import useTimer from "./use-timer";
import { TickEvent } from "./TimerPage";
export const CombinedDefaultTheme = { export const CombinedDefaultTheme = {
...NavigationDefaultTheme, ...NavigationDefaultTheme,
@ -42,6 +45,7 @@ const App = () => {
const [initialized, setInitialized] = useState(false); const [initialized, setInitialized] = useState(false);
const [snackbar, setSnackbar] = useState(""); const [snackbar, setSnackbar] = useState("");
const [appTheme, setAppTheme] = useState("system"); const [appTheme, setAppTheme] = useState("system");
const [progress, setProgress] = useState(0);
const [lightColor, setLightColor] = useState<string>( const [lightColor, setLightColor] = useState<string>(
CombinedDefaultTheme.colors.primary CombinedDefaultTheme.colors.primary
@ -60,13 +64,15 @@ const App = () => {
if (settings.darkColor) setDarkColor(settings.darkColor); if (settings.darkColor) setDarkColor(settings.darkColor);
setInitialized(true); setInitialized(true);
})(); })();
const description = emitter.addListener( const descriptions = [
TOAST, emitter.addListener(TOAST, ({ value }: { value: string }) => {
({ value }: { value: string }) => {
setSnackbar(value); setSnackbar(value);
} }),
); emitter.addListener("tick", (event: TickEvent) => {
return description.remove; setProgress((Number(event.minutes) * 60 + Number(event.seconds)) / 210);
}),
];
return () => descriptions.forEach((description) => description.remove());
}, []); }, []);
const paperTheme = useMemo(() => { const paperTheme = useMemo(() => {
@ -122,6 +128,8 @@ const App = () => {
> >
{snackbar} {snackbar}
</Snackbar> </Snackbar>
{progress > 0 && <ProgressBar progress={progress} />}
</PaperProvider> </PaperProvider>
); );
}; };

View File

@ -85,8 +85,8 @@ android {
applicationId "com.massive" applicationId "com.massive"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 36200 versionCode 36201
versionName "1.174" versionName "1.175"
} }
signingConfigs { signingConfigs {
release { release {

View File

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