Files
tv-control/mobile/App.tsx
space 6f66342dea
Some checks failed
Build App / build (push) Has been cancelled
Added spotify and moved away from hardcoded urls
2026-03-01 18:30:31 +01:00

71 lines
1.9 KiB
TypeScript

import { StatusBar } from "expo-status-bar";
import { StyleSheet, View } from "react-native";
import { BottomNav } from "./src/components/BottomNav";
import { colors } from "./src/styles";
import { NotFoundPage } from "./src/pages/NotFound";
import { DataCardsPage } from "./src/pages/datacards";
import { ImagePage } from "./src/pages/image";
import { IndexPage } from "./src/pages/index";
import { SettingsPage } from "./src/pages/settings";
import { TextPage } from "./src/pages/text";
import { Route, RouterProvider, useRouter } from "./src/router";
import { InstanceUrlProvider } from "./src/instanceUrl";
interface Tab {
label: string;
route: Route;
page: React.ComponentType;
hideInNav?: boolean;
}
const TABS: Tab[] = [
{ label: "Home", route: "home", page: IndexPage },
{ label: "Text", route: "text", page: TextPage, hideInNav: true },
{ label: "Image", route: "image", page: ImagePage, hideInNav: true },
{
label: "Data Cards",
route: "datacards",
page: DataCardsPage,
hideInNav: true,
},
{ label: "Settings", route: "settings", page: SettingsPage },
];
export { TABS, type Tab };
function Screen() {
const { route } = useRouter();
return (
<>
{TABS.map((tab) => {
if (tab.route === route) {
const Page = tab.page;
return <Page key={tab.route} />;
}
return null;
})}
{!TABS.some((tab) => tab.route === route) && <NotFoundPage />}
</>
);
}
export default function App() {
return (
<InstanceUrlProvider>
<RouterProvider>
<View style={styles.container}>
<StatusBar style="light" />
<View style={{ flex: 1, marginTop: 12 }}>
<Screen />
</View>
<BottomNav />
</View>
</RouterProvider>
</InstanceUrlProvider>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: colors.bg,
},
});