Stuck in Info Tab in Settings, Update Deps (#571)

update deps (nitro-modules, screens, navigation)

fix issue where going to the info tab of the app settings would lock the user in place
This commit is contained in:
Violet Caulfield
2025-10-22 21:50:16 -05:00
committed by GitHub
parent c562632e95
commit b6df13bcc3
9 changed files with 1059 additions and 1099 deletions

View File

@@ -12,7 +12,7 @@ PODS:
- hermes-engine (0.82.1):
- hermes-engine/Pre-built (= 0.82.1)
- hermes-engine/Pre-built (0.82.1)
- NitroImage (0.6.1):
- NitroImage (0.8.1):
- boost
- DoubleConversion
- fast_float
@@ -42,7 +42,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- NitroModules (0.30.2):
- NitroModules (0.31.1):
- boost
- DoubleConversion
- fast_float
@@ -2931,7 +2931,7 @@ PODS:
- RNWorklets
- SocketRocket
- Yoga
- RNScreens (4.17.1):
- RNScreens (4.18.0):
- boost
- DoubleConversion
- fast_float
@@ -2958,10 +2958,10 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- RNScreens/common (= 4.17.1)
- RNScreens/common (= 4.18.0)
- SocketRocket
- Yoga
- RNScreens/common (4.17.1):
- RNScreens/common (4.18.0):
- boost
- DoubleConversion
- fast_float
@@ -3453,8 +3453,8 @@ SPEC CHECKSUMS:
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
google-cast-sdk: 1fb6724e94cc5ff23b359176e0cf6360586bb97a
hermes-engine: 273e30e7fb618279934b0b95ffab60ecedb7acf5
NitroImage: f2d14e6531629630904d8ceb4037459d6057440a
NitroModules: 72acdf761541be4f8bbb3f0cdca41ae23ce13c50
NitroImage: 76da8995cc5476111ac5069300a3ec5de0f65e9b
NitroModules: 0ba3a58906a86566ea83abc016f8692374c19761
NitroOta: b2adec40232e3da0cc9eeaa3f7e1ec67313b1f17
NitroOtaBundleManager: 09eeec5c1d7e33b868b2374ce64613f23ad348cd
NitroWebImage: 04de36dd513d350fe3d4d3a9279a95817c1a39f1
@@ -3545,7 +3545,7 @@ SPEC CHECKSUMS:
RNGestureHandler: f1dd7f92a0faa2868a919ab53bb9d66eb4ebfcf5
RNReactNativeHapticFeedback: be4f1b4bf0398c30b59b76ed92ecb0a2ff3a69c6
RNReanimated: 732e7d1662f8cc0e533fa32791800de5b5934726
RNScreens: 833237c48c756d40764540246a501b47dadb2cac
RNScreens: d821082c6dd1cb397cc0c98b026eeafaa68be479
RNSentry: 60919c9cdac7e4b35e9f5dd0149f551ec12f35cb
RNWorklets: ab618bf7d1c7fd2cb793b9f0f39c3e29274b3ebf
SDWebImage: 9f177d83116802728e122410fb25ad88f5c7608a

View File

@@ -40,13 +40,13 @@
"@react-native-community/netinfo": "^11.4.1",
"@react-native-masked-view/masked-view": "^0.3.2",
"@react-native-vector-icons/material-design-icons": "^12.3.0",
"@react-navigation/bottom-tabs": "^7.4.9",
"@react-navigation/material-top-tabs": "^7.3.8",
"@react-navigation/native": "^7.1.18",
"@react-navigation/native-stack": "^7.3.28",
"@react-navigation/bottom-tabs": "7.5.0",
"@react-navigation/material-top-tabs": "7.3.9",
"@react-navigation/native": "7.1.18",
"@react-navigation/native-stack": "7.5.0",
"@sentry/react-native": "7.1.0",
"@shopify/flash-list": "^2.1.0",
"@tamagui/config": "1.135.0",
"@tamagui/config": "1.135.4",
"@tanstack/query-async-storage-persister": "5.89.0",
"@tanstack/react-query": "5.89.0",
"@tanstack/react-query-persist-client": "5.89.0",
@@ -76,15 +76,15 @@
"react-native-haptic-feedback": "^2.3.3",
"react-native-linear-gradient": "^2.8.3",
"react-native-mmkv": "3.3.3",
"react-native-nitro-image": "^0.6.1",
"react-native-nitro-modules": "^0.30.2",
"react-native-nitro-image": "^0.8.1",
"react-native-nitro-modules": "^0.31.1",
"react-native-nitro-ota": "^0.2.3",
"react-native-nitro-web-image": "^0.6.1",
"react-native-ota-hot-update": "2.3.1",
"react-native-pager-view": "^6.9.1",
"react-native-reanimated": "4.1.3",
"react-native-safe-area-context": "^5.6.1",
"react-native-screens": "4.17.1",
"react-native-screens": "4.18.0",
"react-native-swipeable-item": "^2.0.9",
"react-native-text-ticker": "^1.15.0",
"react-native-toast-message": "^2.3.3",
@@ -94,7 +94,7 @@
"react-native-worklets": "0.6.1",
"ruby": "^0.6.1",
"scheduler": "^0.26.0",
"tamagui": "1.135.0",
"tamagui": "1.135.4",
"zustand": "^5.0.8"
},
"devDependencies": {

View File

@@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-screens/ios/RNSScreen.mm b/node_modules/react-native-screens/ios/RNSScreen.mm
index 65c18f1..d6abdd9 100644
index 65c18f1..e11b806 100644
--- a/node_modules/react-native-screens/ios/RNSScreen.mm
+++ b/node_modules/react-native-screens/ios/RNSScreen.mm
@@ -928,7 +928,11 @@ - (BOOL)isTransparentModal
@@ -10,7 +10,7 @@ index 65c18f1..d6abdd9 100644
+ @try {
+ [_sheetsScrollView removeObserver:self forKeyPath:@"bounds" context:nil];
+ } @catch (NSException *exception) {
+ RCTLogWarn(@"[RNScreens] Tried to remove non-registered observer in invalidate: %@", exception);
+ RCTLogWarn(@"[RNScreens] Tried to remove observer in invalidate, but it was not registered: %@.", exception);
+ }
}

View File

@@ -1,5 +1,128 @@
import InfoStack from './info/stack'
import { version } from '../../../../package.json'
import { Text } from '../../Global/helpers/text'
import SettingsListGroup from './settings-list-group'
import { Linking } from 'react-native'
import { ScrollView, XStack } from 'tamagui'
import Icon from '../../Global/components/icon'
import usePatrons from '../../../api/queries/patrons'
import { useQuery } from '@tanstack/react-query'
import INFO_CAPTIONS from '../utils/info-caption'
import { ONE_HOUR } from '../../../constants/query-client'
import { pickRandomItemFromArray } from '../../../utils/random'
import { FlashList } from '@shopify/flash-list'
export default function InfoTab() {
return <InfoStack />
const patrons = usePatrons()
const { data: caption } = useQuery({
queryKey: ['Info_Caption'],
queryFn: () => `${pickRandomItemFromArray(INFO_CAPTIONS)}`,
staleTime: ONE_HOUR,
initialData: 'Live and in stereo',
})
return (
<ScrollView contentInsetAdjustmentBehavior='automatic'>
<SettingsListGroup
settingsList={[
{
title: `Jellify ${version}`,
subTitle: caption,
iconName: 'jellyfish',
iconColor: '$primary',
children: (
<XStack gap={'$3'} marginTop={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL('https://github.com/Jellify-Music/App')
}
>
<Icon name='code-tags' small color='$borderColor' />
<Text>View Source</Text>
</XStack>
<XStack
alignItems='center'
onPress={() => Linking.openURL('https://discord.gg/yf8fBatktn')}
>
<Icon name='chat' small color='$borderColor' />
<Text>Join Discord</Text>
</XStack>
</XStack>
),
},
{
title: 'Caught a bug?',
subTitle: "Let's squash it!",
iconName: 'bug',
iconColor: '$danger',
children: (
<XStack gap={'$3'} marginTop={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL(
'https://github.com/Jellify-Music/App/issues',
)
}
>
<Icon name='github' small color='$borderColor' />
<Text>Report Issue</Text>
</XStack>
</XStack>
),
},
{
title: 'Powered by listeners like you',
subTitle: 'Sponsor on GitHub or Patreon',
iconName: 'heart',
iconColor: '$secondary',
children: (
<XStack justifyContent='flex-start' gap={'$4'} marginVertical={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL(
'https://github.com/sponsors/anultravioletaurora/',
)
}
>
<Icon name='github' small color='$borderColor' />
<Text>Sponsors</Text>
</XStack>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL('https://patreon.com/anultravioletaurora')
}
>
<Icon name='patreon' small color='$borderColor' />
<Text>Patreon</Text>
</XStack>
</XStack>
),
},
{
title: 'Patreon Wall of Fame',
subTitle: 'Thank you to these paid members',
iconName: 'patreon',
iconColor: '$secondary',
children: (
<FlashList
data={patrons}
numColumns={2}
renderItem={({ item }) => (
<XStack alignItems='flex-start' maxWidth={'$20'}>
<Text numberOfLines={1} lineBreakStrategyIOS='standard'>
{item.fullName}
</Text>
</XStack>
)}
/>
),
},
]}
/>
</ScrollView>
)
}

View File

@@ -1,128 +0,0 @@
import { version } from '../../../../../package.json'
import { Text } from '../../../Global/helpers/text'
import SettingsListGroup from '../settings-list-group'
import { FlatList, Linking } from 'react-native'
import { ScrollView, Separator, XStack, YStack } from 'tamagui'
import Icon from '../../../Global/components/icon'
import usePatrons from '../../../../api/queries/patrons'
import { useQuery } from '@tanstack/react-query'
import INFO_CAPTIONS from '../../utils/info-caption'
import { ONE_HOUR } from '../../../../constants/query-client'
import { pickRandomItemFromArray } from '../../../../utils/random'
import { FlashList } from '@shopify/flash-list'
export default function InfoTabIndex() {
const patrons = usePatrons()
const { data: caption } = useQuery({
queryKey: ['Info_Caption'],
queryFn: () => `${pickRandomItemFromArray(INFO_CAPTIONS)}`,
staleTime: ONE_HOUR,
initialData: 'Live and in stereo',
})
return (
<ScrollView contentInsetAdjustmentBehavior='automatic'>
<SettingsListGroup
settingsList={[
{
title: `Jellify ${version}`,
subTitle: caption,
iconName: 'jellyfish',
iconColor: '$primary',
children: (
<XStack gap={'$3'} marginTop={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL('https://github.com/Jellify-Music/App')
}
>
<Icon name='code-tags' small color='$borderColor' />
<Text>View Source</Text>
</XStack>
<XStack
alignItems='center'
onPress={() => Linking.openURL('https://discord.gg/yf8fBatktn')}
>
<Icon name='chat' small color='$borderColor' />
<Text>Join Discord</Text>
</XStack>
</XStack>
),
},
{
title: 'Caught a bug?',
subTitle: "Let's squash it!",
iconName: 'bug',
iconColor: '$danger',
children: (
<XStack gap={'$3'} marginTop={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL(
'https://github.com/Jellify-Music/App/issues',
)
}
>
<Icon name='github' small color='$borderColor' />
<Text>Report Issue</Text>
</XStack>
</XStack>
),
},
{
title: 'Powered by listeners like you',
subTitle: 'Sponsor on GitHub or Patreon',
iconName: 'heart',
iconColor: '$secondary',
children: (
<XStack justifyContent='flex-start' gap={'$4'} marginVertical={'$2'}>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL(
'https://github.com/sponsors/anultravioletaurora/',
)
}
>
<Icon name='github' small color='$borderColor' />
<Text>Sponsors</Text>
</XStack>
<XStack
alignItems='center'
onPress={() =>
Linking.openURL('https://patreon.com/anultravioletaurora')
}
>
<Icon name='patreon' small color='$borderColor' />
<Text>Patreon</Text>
</XStack>
</XStack>
),
},
{
title: 'Patreon Wall of Fame',
subTitle: 'Thank you to these paid members',
iconName: 'patreon',
iconColor: '$secondary',
children: (
<FlashList
data={patrons}
numColumns={2}
renderItem={({ item }) => (
<XStack alignItems='flex-start' maxWidth={'$20'}>
<Text numberOfLines={1} lineBreakStrategyIOS='standard'>
{item.fullName}
</Text>
</XStack>
)}
/>
),
},
]}
/>
</ScrollView>
)
}

View File

@@ -1,26 +0,0 @@
import InfoTabIndex from '.'
import InfoTabStorage from './storage'
import { createNativeStackNavigator } from '@react-navigation/native-stack'
const infoStack = createNativeStackNavigator()
export default function InfoStack() {
return (
<infoStack.Navigator>
<infoStack.Screen
name='Index'
component={InfoTabIndex}
options={{
headerShown: false,
}}
/>
<infoStack.Screen
name='Storage'
component={InfoTabStorage}
options={{
headerShown: false,
}}
/>
</infoStack.Navigator>
)
}

View File

@@ -1,9 +0,0 @@
import { View } from 'react-native'
import { Text } from '../../../Global/helpers/text'
export default function InfoTabStorage() {
return (
<View>
<Text>Storage</Text>
</View>
)
}

View File

@@ -1,7 +0,0 @@
export type InfoTabStackParamList = {
Index: undefined
Storage: undefined
}
export type InfoTabNativeStackNavigationProp =
NativeNativeStackNavigationProp<InfoTabStackParamList>

1823
yarn.lock

File diff suppressed because it is too large Load Diff