mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
Refactor various components to utilize the new ThemeContext for dynamic theming. This includes updating styles in the App, NuvioHeader, CatalogSection, and other components to reflect the current theme colors. Additionally, introduce a ThemedApp component to centralize theme management and enhance the overall user experience by ensuring consistent styling throughout the application. Update package dependencies to include react-native-wheel-color-picker for enhanced color selection capabilities.
94 lines
2.5 KiB
TypeScript
94 lines
2.5 KiB
TypeScript
/**
|
|
* Sample React Native App
|
|
* https://github.com/facebook/react-native
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import React from 'react';
|
|
import {
|
|
View,
|
|
StyleSheet
|
|
} from 'react-native';
|
|
import { NavigationContainer } from '@react-navigation/native';
|
|
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
import { StatusBar } from 'expo-status-bar';
|
|
import { Provider as PaperProvider } from 'react-native-paper';
|
|
import { enableScreens } from 'react-native-screens';
|
|
import AppNavigator, {
|
|
CustomNavigationDarkTheme,
|
|
CustomDarkTheme
|
|
} from './src/navigation/AppNavigator';
|
|
import 'react-native-reanimated';
|
|
import { CatalogProvider } from './src/contexts/CatalogContext';
|
|
import { GenreProvider } from './src/contexts/GenreContext';
|
|
import { TraktProvider } from './src/contexts/TraktContext';
|
|
import { ThemeProvider, useTheme } from './src/contexts/ThemeContext';
|
|
|
|
// This fixes many navigation layout issues by using native screen containers
|
|
enableScreens(true);
|
|
|
|
// Inner app component that uses the theme context
|
|
const ThemedApp = () => {
|
|
const { currentTheme } = useTheme();
|
|
|
|
// Create custom themes based on current theme
|
|
const customDarkTheme = {
|
|
...CustomDarkTheme,
|
|
colors: {
|
|
...CustomDarkTheme.colors,
|
|
primary: currentTheme.colors.primary,
|
|
}
|
|
};
|
|
|
|
const customNavigationTheme = {
|
|
...CustomNavigationDarkTheme,
|
|
colors: {
|
|
...CustomNavigationDarkTheme.colors,
|
|
primary: currentTheme.colors.primary,
|
|
card: currentTheme.colors.darkBackground,
|
|
background: currentTheme.colors.darkBackground,
|
|
}
|
|
};
|
|
|
|
return (
|
|
<PaperProvider theme={customDarkTheme}>
|
|
<NavigationContainer
|
|
theme={customNavigationTheme}
|
|
// Disable automatic linking which can cause layout issues
|
|
linking={undefined}
|
|
>
|
|
<View style={[styles.container, { backgroundColor: currentTheme.colors.darkBackground }]}>
|
|
<StatusBar
|
|
style="light"
|
|
/>
|
|
<AppNavigator />
|
|
</View>
|
|
</NavigationContainer>
|
|
</PaperProvider>
|
|
);
|
|
}
|
|
|
|
function App(): React.JSX.Element {
|
|
return (
|
|
<GestureHandlerRootView style={{ flex: 1 }}>
|
|
<GenreProvider>
|
|
<CatalogProvider>
|
|
<TraktProvider>
|
|
<ThemeProvider>
|
|
<ThemedApp />
|
|
</ThemeProvider>
|
|
</TraktProvider>
|
|
</CatalogProvider>
|
|
</GenreProvider>
|
|
</GestureHandlerRootView>
|
|
);
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
container: {
|
|
flex: 1,
|
|
},
|
|
});
|
|
|
|
export default App;
|