ui changes

This commit is contained in:
tapframe 2025-10-18 13:22:34 +05:30
parent 51ae0784cf
commit 8b1a40d2e2
12 changed files with 1596 additions and 153 deletions

View file

@ -460,8 +460,8 @@
"-lc++", "-lc++",
); );
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = com.nuvio.app; PRODUCT_BUNDLE_IDENTIFIER = com.nuviohub.app;
PRODUCT_NAME = "Nuvio"; PRODUCT_NAME = Nuvio;
SWIFT_OBJC_BRIDGING_HEADER = "Nuvio/Nuvio-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Nuvio/Nuvio-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -492,8 +492,8 @@
"-lc++", "-lc++",
); );
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = "com.nuvio.app"; PRODUCT_BUNDLE_IDENTIFIER = com.nuviohub.app;
PRODUCT_NAME = "Nuvio"; PRODUCT_NAME = Nuvio;
SWIFT_OBJC_BRIDGING_HEADER = "Nuvio/Nuvio-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Nuvio/Nuvio-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";

View file

@ -82,7 +82,7 @@
buildConfiguration = "Debug"> buildConfiguration = "Debug">
</AnalyzeAction> </AnalyzeAction>
<ArchiveAction <ArchiveAction
buildConfiguration = "Release" buildConfiguration = "Debug"
revealArchiveInOrganizer = "YES"> revealArchiveInOrganizer = "YES">
</ArchiveAction> </ArchiveAction>
</Scheme> </Scheme>

View file

@ -1,101 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>CADisableMinimumFrameDurationOnPhone</key> <key>CADisableMinimumFrameDurationOnPhone</key>
<true/> <true/>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Nuvio</string> <string>Nuvio</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string> <string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.2.5</string> <string>1.2.5</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
<key>CFBundleURLSchemes</key> <key>CFBundleURLSchemes</key>
<array> <array>
<string>nuvio</string> <string>nuvio</string>
<string>com.nuvio.app</string> <string>com.nuvio.app</string>
</array> </array>
</dict> </dict>
<dict> <dict>
<key>CFBundleURLSchemes</key> <key>CFBundleURLSchemes</key>
<array> <array>
<string>exp+nuvio</string> <string>exp+nuvio</string>
</array> </array>
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>20</string> <string>20</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>12.0</string> <string>12.0</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>LSSupportsOpeningDocumentsInPlace</key> <key>LSSupportsOpeningDocumentsInPlace</key>
<true/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
<dict> <dict>
<key>NSAllowsArbitraryLoads</key> <key>NSAllowsArbitraryLoads</key>
<true/> <true/>
</dict> </dict>
<key>NSBonjourServices</key> <key>NSBonjourServices</key>
<array> <array>
<string>_http._tcp</string> <string>_http._tcp</string>
</array> </array>
<key>NSLocalNetworkUsageDescription</key> <key>RCTNewArchEnabled</key>
<string>Allow $(PRODUCT_NAME) to access your local network</string> <true/>
<key>NSMicrophoneUsageDescription</key> <key>RCTRootViewBackgroundColor</key>
<string>This app does not require microphone access.</string> <integer>4278322180</integer>
<key>RCTNewArchEnabled</key> <key>UIBackgroundModes</key>
<true/> <array>
<key>RCTRootViewBackgroundColor</key> <string>audio</string>
<integer>4278322180</integer> <string>fetch</string>
<key>UIBackgroundModes</key> </array>
<array> <key>UIFileSharingEnabled</key>
<string>audio</string> <true/>
</array> <key>UILaunchStoryboardName</key>
<key>UIFileSharingEnabled</key> <string>SplashScreen</string>
<true/> <key>UIRequiredDeviceCapabilities</key>
<key>UILaunchStoryboardName</key> <array>
<string>SplashScreen</string> <string>arm64</string>
<key>UIRequiredDeviceCapabilities</key> </array>
<array> <key>UIRequiresFullScreen</key>
<string>arm64</string> <false/>
</array> <key>UIStatusBarStyle</key>
<key>UIRequiresFullScreen</key> <string>UIStatusBarStyleDefault</string>
<false/> <key>UISupportedInterfaceOrientations</key>
<key>UIStatusBarStyle</key> <array>
<string>UIStatusBarStyleDefault</string> <string>UIInterfaceOrientationPortrait</string>
<key>UISupportedInterfaceOrientations</key> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<array> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string> </array>
<string>UIInterfaceOrientationLandscapeLeft</string> <key>UISupportedInterfaceOrientations~ipad</key>
<string>UIInterfaceOrientationLandscapeRight</string> <array>
</array> <string>UIInterfaceOrientationPortrait</string>
<key>UISupportedInterfaceOrientations~ipad</key> <string>UIInterfaceOrientationPortraitUpsideDown</string>
<array> <string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationPortrait</string> <string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string> </array>
<string>UIInterfaceOrientationLandscapeLeft</string> <key>UIUserInterfaceStyle</key>
<string>UIInterfaceOrientationLandscapeRight</string> <string>Dark</string>
</array> <key>UIViewControllerBasedStatusBarAppearance</key>
<key>UIUserInterfaceStyle</key> <false/>
<string>Dark</string> </dict>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist> </plist>

View file

@ -1,10 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict/>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array/>
</dict>
</plist> </plist>

View file

@ -1,10 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict/>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array/>
</dict>
</plist> </plist>

16
package-lock.json generated
View file

@ -17,6 +17,7 @@
"@expo/metro-runtime": "~6.1.2", "@expo/metro-runtime": "~6.1.2",
"@expo/vector-icons": "^15.0.2", "@expo/vector-icons": "^15.0.2",
"@gorhom/bottom-sheet": "^5.2.6", "@gorhom/bottom-sheet": "^5.2.6",
"@legendapp/list": "^2.0.13",
"@lottiefiles/dotlottie-react": "^0.6.5", "@lottiefiles/dotlottie-react": "^0.6.5",
"@react-native-async-storage/async-storage": "2.2.0", "@react-native-async-storage/async-storage": "2.2.0",
"@react-native-community/blur": "^4.4.1", "@react-native-community/blur": "^4.4.1",
@ -80,7 +81,7 @@
"react-native-svg": "15.12.1", "react-native-svg": "15.12.1",
"react-native-url-polyfill": "^2.0.0", "react-native-url-polyfill": "^2.0.0",
"react-native-vector-icons": "^10.3.0", "react-native-vector-icons": "^10.3.0",
"react-native-video": "^6.12.0", "react-native-video": "^6.17.0",
"react-native-web": "^0.21.0", "react-native-web": "^0.21.0",
"react-native-wheel-color-picker": "^1.3.1", "react-native-wheel-color-picker": "^1.3.1",
"react-native-worklets": "^0.6.1", "react-native-worklets": "^0.6.1",
@ -2813,6 +2814,19 @@
"@jridgewell/sourcemap-codec": "^1.4.14" "@jridgewell/sourcemap-codec": "^1.4.14"
} }
}, },
"node_modules/@legendapp/list": {
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/@legendapp/list/-/list-2.0.13.tgz",
"integrity": "sha512-OL9rvxRDDqiQ07+QhldcRqCX5+VihtXbbZaoey0TVWJqQN5XPh9b9Buefax3/HjNRzCaYTx1lCoeW5dz20j+cA==",
"license": "MIT",
"dependencies": {
"use-sync-external-store": "^1.5.0"
},
"peerDependencies": {
"react": "*",
"react-native": "*"
}
},
"node_modules/@lottiefiles/dotlottie-react": { "node_modules/@lottiefiles/dotlottie-react": {
"version": "0.6.5", "version": "0.6.5",
"resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.6.5.tgz", "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-react/-/dotlottie-react-0.6.5.tgz",

View file

@ -17,6 +17,7 @@
"@expo/metro-runtime": "~6.1.2", "@expo/metro-runtime": "~6.1.2",
"@expo/vector-icons": "^15.0.2", "@expo/vector-icons": "^15.0.2",
"@gorhom/bottom-sheet": "^5.2.6", "@gorhom/bottom-sheet": "^5.2.6",
"@legendapp/list": "^2.0.13",
"@lottiefiles/dotlottie-react": "^0.6.5", "@lottiefiles/dotlottie-react": "^0.6.5",
"@react-native-async-storage/async-storage": "2.2.0", "@react-native-async-storage/async-storage": "2.2.0",
"@react-native-community/blur": "^4.4.1", "@react-native-community/blur": "^4.4.1",
@ -80,7 +81,7 @@
"react-native-svg": "15.12.1", "react-native-svg": "15.12.1",
"react-native-url-polyfill": "^2.0.0", "react-native-url-polyfill": "^2.0.0",
"react-native-vector-icons": "^10.3.0", "react-native-vector-icons": "^10.3.0",
"react-native-video": "^6.12.0", "react-native-video": "^6.17.0",
"react-native-web": "^0.21.0", "react-native-web": "^0.21.0",
"react-native-wheel-color-picker": "^1.3.1", "react-native-wheel-color-picker": "^1.3.1",
"react-native-worklets": "^0.6.1", "react-native-worklets": "^0.6.1",

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
import React, { useCallback, useMemo, useRef } from 'react'; import React, { useCallback, useMemo, useRef } from 'react';
import { View, Text, StyleSheet, TouchableOpacity, Platform, Dimensions } from 'react-native'; import { View, Text, StyleSheet, TouchableOpacity, Platform, Dimensions } from 'react-native';
import { FlashList } from '@shopify/flash-list'; import { LegendList } from '@legendapp/list';
import { NavigationProp, useNavigation } from '@react-navigation/native'; import { NavigationProp, useNavigation } from '@react-navigation/native';
import { MaterialIcons } from '@expo/vector-icons'; import { MaterialIcons } from '@expo/vector-icons';
import { LinearGradient } from 'expo-linear-gradient'; import { LinearGradient } from 'expo-linear-gradient';
@ -98,7 +98,7 @@ const CatalogSection = ({ catalog }: CatalogSectionProps) => {
</TouchableOpacity> </TouchableOpacity>
</View> </View>
<FlashList <LegendList
data={catalog.items} data={catalog.items}
renderItem={renderContentItem} renderItem={renderContentItem}
keyExtractor={keyExtractor} keyExtractor={keyExtractor}
@ -108,8 +108,8 @@ const CatalogSection = ({ catalog }: CatalogSectionProps) => {
ItemSeparatorComponent={ItemSeparator} ItemSeparatorComponent={ItemSeparator}
onEndReachedThreshold={0.7} onEndReachedThreshold={0.7}
onEndReached={() => {}} onEndReached={() => {}}
scrollEventThrottle={64} recycleItems={true}
removeClippedSubviews={true} maintainVisibleContentPosition
/> />
</Animated.View> </Animated.View>
); );

View file

@ -310,11 +310,6 @@ const TrailerModal: React.FC<TrailerModalProps> = memo(({
{contentTitle} {contentTitle}
</Text> </Text>
</View> </View>
<View style={styles.footerMeta}>
<Text style={[styles.footerMetaText, { color: currentTheme.colors.textMuted }]}>
{trailer.size}p HD
</Text>
</View>
</View> </View>
</View> </View>
</View> </View>

View file

@ -570,12 +570,6 @@ const TrailersSection: React.FC<TrailersSectionProps> = memo(({
/> />
{/* Subtle Gradient Overlay */} {/* Subtle Gradient Overlay */}
<View style={styles.thumbnailGradient} /> <View style={styles.thumbnailGradient} />
{/* Quality Badge */}
<View style={styles.qualityBadge}>
<Text style={styles.qualityText}>
{trailer.size}p
</Text>
</View>
</View> </View>
{/* Trailer Info */} {/* Trailer Info */}
@ -797,21 +791,6 @@ const styles = StyleSheet.create({
}, },
// Badges
qualityBadge: {
position: 'absolute',
bottom: 8,
right: 8,
backgroundColor: 'rgba(0,0,0,0.8)',
paddingHorizontal: 6,
paddingVertical: 2,
borderRadius: 8,
},
qualityText: {
color: '#fff',
fontSize: 10,
fontWeight: '600',
},
// Trailer Info Styles // Trailer Info Styles
trailerInfo: { trailerInfo: {

View file

@ -19,7 +19,7 @@ import {
InteractionManager, InteractionManager,
AppState AppState
} from 'react-native'; } from 'react-native';
import { FlashList } from '@shopify/flash-list'; import { LegendList } from '@legendapp/list';
import { useNavigation, useFocusEffect } from '@react-navigation/native'; import { useNavigation, useFocusEffect } from '@react-navigation/native';
import { NavigationProp } from '@react-navigation/native'; import { NavigationProp } from '@react-navigation/native';
import { RootStackParamList } from '../navigation/AppNavigator'; import { RootStackParamList } from '../navigation/AppNavigator';
@ -764,7 +764,7 @@ const HomeScreen = () => {
backgroundColor="transparent" backgroundColor="transparent"
translucent translucent
/> />
<FlashList <LegendList
data={listData} data={listData}
renderItem={renderListItem} renderItem={renderListItem}
keyExtractor={keyExtractor} keyExtractor={keyExtractor}
@ -774,8 +774,8 @@ const HomeScreen = () => {
ListFooterComponent={ListFooterComponent} ListFooterComponent={ListFooterComponent}
onEndReached={handleLoadMoreCatalogs} onEndReached={handleLoadMoreCatalogs}
onEndReachedThreshold={0.6} onEndReachedThreshold={0.6}
removeClippedSubviews={true} recycleItems={true}
scrollEventThrottle={64} maintainVisibleContentPosition
onScroll={handleScroll} onScroll={handleScroll}
/> />
{/* Toasts are rendered globally at root */} {/* Toasts are rendered globally at root */}