fix deleting playlists, bump deps (#702)

* fix issue on deleting playlists where they wouldn't actually disappear, 

bump project dependencies

fix issue where song info text would overlap with the menu button

* fix maestro tests that were failing
This commit is contained in:
Violet Caulfield
2025-11-20 16:54:23 -06:00
committed by GitHub
parent ad83096f1c
commit 2e9199663d
8 changed files with 96 additions and 95 deletions
+12 -12
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)
- NitroModules (0.31.8):
- NitroModules (0.31.9):
- boost
- DoubleConversion
- fast_float
@@ -2714,13 +2714,13 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- RNDeviceInfo (14.1.1):
- RNDeviceInfo (15.0.1):
- React-Core
- RNDnsLookup (1.0.6):
- React
- RNFS (2.20.0):
- React-Core
- RNGestureHandler (2.29.1):
- RNGestureHandler (2.28.0):
- boost
- DoubleConversion
- fast_float
@@ -2776,7 +2776,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- RNReanimated (4.1.3):
- RNReanimated (4.1.5):
- boost
- DoubleConversion
- fast_float
@@ -2803,11 +2803,11 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- RNReanimated/reanimated (= 4.1.3)
- RNReanimated/reanimated (= 4.1.5)
- RNWorklets
- SocketRocket
- Yoga
- RNReanimated/reanimated (4.1.3):
- RNReanimated/reanimated (4.1.5):
- boost
- DoubleConversion
- fast_float
@@ -2834,11 +2834,11 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- RNReanimated/reanimated/apple (= 4.1.3)
- RNReanimated/reanimated/apple (= 4.1.5)
- RNWorklets
- SocketRocket
- Yoga
- RNReanimated/reanimated/apple (4.1.3):
- RNReanimated/reanimated/apple (4.1.5):
- boost
- DoubleConversion
- fast_float
@@ -3384,7 +3384,7 @@ SPEC CHECKSUMS:
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
google-cast-sdk: 1fb6724e94cc5ff23b359176e0cf6360586bb97a
hermes-engine: 273e30e7fb618279934b0b95ffab60ecedb7acf5
NitroModules: 54a650fd5533accfe10e85ce037bf06f1e70640c
NitroModules: 224bf833d249b0c7ce32831368f2887008579b13
NitroOta: b4f7cdbe660e8f07f80f5eb9f169d70f698ea284
NitroOtaBundleManager: 5e7c0f8c3f76cc06f9fe07a63879fe35496c27c7
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
@@ -3468,12 +3468,12 @@ SPEC CHECKSUMS:
ReactCommon: 804dc80944fa90b86800b43c871742ec005ca424
RNCAsyncStorage: 29f0230e1a25f36c20b05f65e2eb8958d6526e82
RNCMaskedView: 5ef8c95cbab95334a32763b72896a7b7d07e6299
RNDeviceInfo: bcce8752b5043a623fe3c26789679b473f705d3c
RNDeviceInfo: 36d7f232bfe7c9b5c494cb7793230424ed32c388
RNDnsLookup: db4a89381b80ec1a5153088518d2c4f8e51f2521
RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8
RNGestureHandler: e1cf8ef3f11045536eed6bd4f132b003ef5f9a5f
RNGestureHandler: f1dd7f92a0faa2868a919ab53bb9d66eb4ebfcf5
RNReactNativeHapticFeedback: be4f1b4bf0398c30b59b76ed92ecb0a2ff3a69c6
RNReanimated: 732e7d1662f8cc0e533fa32791800de5b5934726
RNReanimated: ac06da53579693ab451941ef89f5a55afeab0dd9
RNScreens: d821082c6dd1cb397cc0c98b026eeafaa68be479
RNSentry: d48cee794dd35d77930dcf89b983dc8c6498ec0d
RNWorklets: ab618bf7d1c7fd2cb793b9f0f39c3e29274b3ebf
-3
View File
@@ -12,9 +12,6 @@ appId: com.cosmonautical.jellify
- assertVisible:
id: "discover-recently-added"
- assertVisible:
id: "discover-public-playlists"
- assertVisible:
id: "discover-suggested-artists"
+1 -1
View File
@@ -16,7 +16,7 @@ appId: com.cosmonautical.jellify
- assertVisible:
text: "Theme"
- assertVisible:
text: "System"
text: "Match Device"
- assertVisible:
text: "Light"
- assertVisible:
+7 -7
View File
@@ -43,10 +43,10 @@
"@react-native-community/netinfo": "^11.4.1",
"@react-native-masked-view/masked-view": "^0.3.2",
"@react-native-vector-icons/material-design-icons": "12.4.0",
"@react-navigation/bottom-tabs": "7.8.5",
"@react-navigation/material-top-tabs": "7.4.3",
"@react-navigation/native": "7.1.20",
"@react-navigation/native-stack": "7.6.3",
"@react-navigation/bottom-tabs": "7.8.6",
"@react-navigation/material-top-tabs": "7.4.4",
"@react-navigation/native": "7.1.21",
"@react-navigation/native-stack": "7.6.4",
"@sentry/react-native": "7.6.0",
"@shopify/flash-list": "2.2.0",
"@tamagui/config": "1.137.1",
@@ -69,7 +69,7 @@
"react-native-blurhash": "2.1.1",
"react-native-carplay": "^2.4.1-beta.0",
"react-native-config": "1.5.6",
"react-native-device-info": "^14.1.1",
"react-native-device-info": "15.0.1",
"react-native-dns-lookup": "^1.0.6",
"react-native-draggable-flatlist": "^4.0.3",
"react-native-flashdrag-list": "^0.2.5",
@@ -79,10 +79,10 @@
"react-native-haptic-feedback": "^2.3.3",
"react-native-linear-gradient": "^2.8.3",
"react-native-mmkv": "3.3.3",
"react-native-nitro-modules": "^0.31.3",
"react-native-nitro-modules": "0.31.9",
"react-native-nitro-ota": "^0.4.0",
"react-native-pager-view": "^6.9.1",
"react-native-reanimated": "4.1.3",
"react-native-reanimated": "4.1.5",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.18.0",
"react-native-swipeable-item": "^2.0.9",
+12 -7
View File
@@ -17,6 +17,7 @@ import { QueuingType } from '../../enums/queuing-type'
import { useNetworkStatus } from '../../stores/network'
import useStreamingDeviceProfile from '../../stores/device-profile'
import { useApi } from '../../stores'
import useIsLightMode from '../../hooks/use-is-light-mode'
export default function ArtistHeader(): React.JSX.Element {
const { width } = useSafeAreaFrame()
@@ -33,6 +34,8 @@ export default function ArtistHeader(): React.JSX.Element {
const theme = useTheme()
const isLightMode = useIsLightMode()
const navigation = useNavigation<NativeStackNavigationProp<BaseStackParamList>>()
const playArtist = async (shuffled: boolean = false) => {
@@ -76,18 +79,20 @@ export default function ArtistHeader(): React.JSX.Element {
cornered
/>
<LinearGradient
colors={['transparent', theme.background.val]}
style={{
flex: 1,
}}
/>
{!isLightMode && (
<LinearGradient
colors={['transparent', theme.background.val]}
style={{
flex: 1,
}}
/>
)}
</ZStack>
<YStack alignItems='center' marginHorizontal={'$3'} backgroundColor={'$background'}>
<XStack alignItems='flex-end' justifyContent='flex-start' flex={1}>
<XStack alignItems='center' flex={1} justifyContent='space-between'>
<H5 flexGrow={1} fontWeight={'bold'} maxWidth={'75%'}>
<H5 flexGrow={1} fontWeight={'bold'}>
{artist.Name}
</H5>
</XStack>
@@ -105,7 +105,7 @@ export default function SongInfo({ swipeX }: SongInfoProps = {}): React.JSX.Elem
return (
<XStack>
<YStack justifyContent='flex-start' flexGrow={1} gap={'$0.25'}>
<YStack justifyContent='flex-start' flex={1} gap={'$0.25'}>
<TextTicker {...TextTickerConfig} style={{ height: getToken('$9') }}>
<Text bold fontSize={'$6'}>
{trackTitle}
+18 -19
View File
@@ -1,15 +1,15 @@
import { View, XStack } from 'tamagui'
import { Spinner, View, XStack } from 'tamagui'
import Button from '../../components/Global/helpers/button'
import { Text } from '../../components/Global/helpers/text'
import { useMutation } from '@tanstack/react-query'
import { BaseItemDto } from '@jellyfin/sdk/lib/generated-client/models'
import { deletePlaylist } from '../../api/mutations/playlists'
import { queryClient } from '../../constants/query-client'
import { QueryKeys } from '../../enums/query-keys'
import Icon from '../../components/Global/components/icon'
import { LibraryDeletePlaylistProps } from './types'
import useHapticFeedback from '../../hooks/use-haptic-feedback'
import { useApi } from '../../stores'
import { useApi, useJellifyLibrary } from '../../stores'
import { UserPlaylistsQueryKey } from '../../api/queries/playlist/keys'
export default function DeletePlaylist({
navigation,
@@ -17,6 +17,8 @@ export default function DeletePlaylist({
}: LibraryDeletePlaylistProps): React.JSX.Element {
const api = useApi()
const [library] = useJellifyLibrary()
const trigger = useHapticFeedback()
const useDeletePlaylist = useMutation({
@@ -26,21 +28,10 @@ export default function DeletePlaylist({
navigation.goBack()
navigation.goBack()
// Burnt.alert({
// title: `Playlist deleted`,
// message: `Deleted ${playlist.Name ?? 'Untitled Playlist'}`,
// duration: 1,
// preset: 'done',
// })
// Refresh favorite playlists component in library
queryClient.invalidateQueries({
queryKey: [QueryKeys.FavoritePlaylists],
})
// Refresh home screen user playlists
queryClient.invalidateQueries({
queryKey: [QueryKeys.Playlists],
queryKey: UserPlaylistsQueryKey(library),
})
},
onError: () => {
@@ -71,11 +62,19 @@ export default function DeletePlaylist({
borderWidth={'$1'}
borderColor={'$danger'}
onPress={() => useDeletePlaylist.mutate(route.params.playlist)}
icon={() => <Icon name='trash-can-outline' small color={'$danger'} />}
icon={() =>
useDeletePlaylist.isPending && (
<Icon name='trash-can-outline' small color={'$danger'} />
)
}
>
<Text bold color={'$danger'}>
Delete
</Text>
{useDeletePlaylist.isPending ? (
<Spinner color={'$danger'} />
) : (
<Text bold color={'$danger'}>
Delete
</Text>
)}
</Button>
</XStack>
</View>
+45 -45
View File
@@ -2135,21 +2135,21 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
"@react-navigation/bottom-tabs@7.8.5":
version "7.8.5"
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.8.5.tgz#def0fddd299a665b45a4604d8ae95702860610f4"
integrity sha512-Zm9UOTfEtBLL7Wm+JBc0v/lh72cen9a8WVN5KSCEN7EtiQIPXbQUZg1ktEzme600HhxvaNZzzSz0X+w2E5nG5w==
"@react-navigation/bottom-tabs@7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.8.6.tgz#0432b971e2945e196ca92f23c134ba928f08b349"
integrity sha512-0wGtU+I1rCUjvAqKtzD2dwQaTICFf5J233vkg20cLrx8LNQPAgSsbnsDSM6S315OOoVLCIL1dcrNv7ExLBlWfw==
dependencies:
"@react-navigation/elements" "^2.8.2"
"@react-navigation/elements" "^2.8.3"
color "^4.2.3"
sf-symbols-typescript "^2.1.0"
"@react-navigation/core@^7.13.1":
version "7.13.1"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.13.1.tgz#ad013f2adcd8604e947dc8c6e52e8fbfc97a6582"
integrity sha512-aPf1vjQhMytPC9CmJu28hT5eTaBJuqIf9T6IRICtap5HHgFLrsYizLZrg3D0H2AoPyOoijMPWzwf7VCBzfGvrg==
"@react-navigation/core@^7.13.2":
version "7.13.2"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.13.2.tgz#25c67bf578eb4329b8bf6c4ed9ef348871964f95"
integrity sha512-A0pFeZlKp+FJob2lVr7otDt3M4rsSJrnAfXWoWR9JVeFtfEXsH/C0s7xtpDCMRUO58kzSBoTF1GYzoMC5DLD4g==
dependencies:
"@react-navigation/routers" "^7.5.1"
"@react-navigation/routers" "^7.5.2"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.3.11"
@@ -2158,49 +2158,49 @@
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
"@react-navigation/elements@^2.8.2":
version "2.8.2"
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.8.2.tgz#7aa74ac3870303bc86e12c09c3e821efdc63bf03"
integrity sha512-K5NWIMar81oAoRAgLwrWcLpXzY2K5yG3gNU/56uyC12u+i5SyIVAv+ygP36UXvrNLzDigg8OdRSdEBb8ePqQtA==
"@react-navigation/elements@^2.8.3":
version "2.8.3"
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.8.3.tgz#d8f15b3d1ed2a1a5c8bf766a97382505e39851be"
integrity sha512-0c5nSDPP3bUFujgkSVqqMShaAup3XIxNe1KTK9LSmwKgWEneyo6OPIjIdiEwPlZvJZKi7ag5hDjacQLGwO0LGA==
dependencies:
color "^4.2.3"
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
"@react-navigation/material-top-tabs@7.4.3":
version "7.4.3"
resolved "https://registry.yarnpkg.com/@react-navigation/material-top-tabs/-/material-top-tabs-7.4.3.tgz#e9284e2851a91f349afb7365b779e9de7ac2ca61"
integrity sha512-CI0jJmal0grOvCRIe2aTYUowEDnLh44J+xCwZkbRnCsMNie1sqCfbGFxuOOb/OiMuPRdvi8uCrlARNgTUMsLOg==
"@react-navigation/material-top-tabs@7.4.4":
version "7.4.4"
resolved "https://registry.yarnpkg.com/@react-navigation/material-top-tabs/-/material-top-tabs-7.4.4.tgz#1f07c5f95ee63d75cd8d62cab6414b29bcc97efe"
integrity sha512-8OCT+tW4dlkEPhjmQWFEw867CKTL3och5N9TLt56lA+3pm55x1kljsVO6DF6BxF41iHrhIJIr09UrojVJDr5TQ==
dependencies:
"@react-navigation/elements" "^2.8.2"
"@react-navigation/elements" "^2.8.3"
color "^4.2.3"
react-native-tab-view "^4.2.0"
"@react-navigation/native-stack@7.6.3":
version "7.6.3"
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.6.3.tgz#ed39844ebd9e58099de267de4f06f9cbc426120b"
integrity sha512-F0f0+3K1mVWiQEZbyZen0LAl7Gc4qpbWM4Tpva5aCqBAECZyn7/uLbVhSXtC/EwzMqQ+ojPLtceFQhXhJqfqfg==
"@react-navigation/native-stack@7.6.4":
version "7.6.4"
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.6.4.tgz#35200b7ae008db0998e6de61b84b37956dba3e31"
integrity sha512-Lj4+m6gVPYOURf/yRAOvvqGL5LCVq9Pg3qdfGUR9SXPU61Kf386WZMOBJAusXQDkszavEusV+ROKYGPXkgIgDQ==
dependencies:
"@react-navigation/elements" "^2.8.2"
"@react-navigation/elements" "^2.8.3"
color "^4.2.3"
sf-symbols-typescript "^2.1.0"
warn-once "^0.1.1"
"@react-navigation/native@7.1.20":
version "7.1.20"
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.20.tgz#60e83c62482e1203f72e9ad68c84c7bb81cb98c3"
integrity sha512-15luFq+35M2IOMHgbTJ0XDkPY7gm3YlR3yQKTuOTOHs+EeAUX71DlUuqcWMRqB0tt+OT6HimDQR7OboTB0N30g==
"@react-navigation/native@7.1.21":
version "7.1.21"
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.21.tgz#77228e0c556a35e5d6aa7e571a17465ae796f789"
integrity sha512-mhpAewdivBL01ibErr91FUW9bvKhfAF6Xv/yr6UOJtDhv0jU6iUASUcA3i3T8VJCOB/vxmoke7VDp8M+wBFs/Q==
dependencies:
"@react-navigation/core" "^7.13.1"
"@react-navigation/core" "^7.13.2"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.3.11"
use-latest-callback "^0.2.4"
"@react-navigation/routers@^7.5.1":
version "7.5.1"
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.5.1.tgz#b8f6e9b491fdc1bc7164fdac4fa4faa82f397daf"
integrity sha512-pxipMW/iEBSUrjxz2cDD7fNwkqR4xoi0E/PcfTQGCcdJwLoaxzab5kSadBLj1MTJyT0YRrOXL9umHpXtp+Dv4w==
"@react-navigation/routers@^7.5.2":
version "7.5.2"
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.5.2.tgz#c885a66a76286f1c4c94261814ceddad628fbbea"
integrity sha512-kymreY5aeTz843E+iPAukrsOtc7nabAH6novtAPREmmGu77dQpfxPB2ZWpKb5nRErIRowp1kYRoN2Ckl+S6JYw==
dependencies:
nanoid "^3.3.11"
@@ -8377,10 +8377,10 @@ react-native-config@1.5.6:
resolved "https://registry.yarnpkg.com/react-native-config/-/react-native-config-1.5.6.tgz#78e250d769be74ac0eff0eccf99ef658f33dabbf"
integrity sha512-UB3LEco0FGGbbGvS+DfH2VmGKiP/y5C2MkmfBmfsIaxHSbM1KOTMKYG7YRf6xFhZbJ/01BedHG7SIny5i7N9BQ==
react-native-device-info@^14.1.1:
version "14.1.1"
resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-14.1.1.tgz#f50c03902f87e4a99b1c51ed85163b795f02b3ea"
integrity sha512-lXFpe6DJmzbQXNLWxlMHP2xuTU5gwrKAvI8dCAZuERhW9eOXSubOQIesk9lIBnsi9pI19GMrcpJEvs4ARPRYmw==
react-native-device-info@15.0.1:
version "15.0.1"
resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-15.0.1.tgz#8a2716861bb8e491e0627f326bcc007c77d2e8f6"
integrity sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==
react-native-dns-lookup@^1.0.6:
version "1.0.6"
@@ -8441,10 +8441,10 @@ react-native-mmkv@3.3.3:
resolved "https://registry.yarnpkg.com/react-native-mmkv/-/react-native-mmkv-3.3.3.tgz#1f0326f6314e23725af8145964343224d074e6cd"
integrity sha512-GMsfOmNzx0p5+CtrCFRVtpOOMYNJXuksBVARSQrCFaZwjUyHJdQzcN900GGaFFNTxw2fs8s5Xje//RDKj9+PZA==
react-native-nitro-modules@^0.31.3:
version "0.31.3"
resolved "https://registry.yarnpkg.com/react-native-nitro-modules/-/react-native-nitro-modules-0.31.3.tgz#19d26c3c677921687a42ed9c9943050034b3aebe"
integrity sha512-jGHBfSTzSo6eXcb0X4/N1sfYdHm2E+koE2fifLZ3gtArD+3ZeThyFvERhB2fzd4JOqtcIJL/5VLIjxlbjISQ/g==
react-native-nitro-modules@0.31.9:
version "0.31.9"
resolved "https://registry.yarnpkg.com/react-native-nitro-modules/-/react-native-nitro-modules-0.31.9.tgz#52eded23fbd120063d2f4e843e1ccb0d7e31c229"
integrity sha512-w7NtHq4wP6LZgvDs7zbFU3B2uHpRx/bJlSTckw0By8NyEX39fURPGgHyi4a67q1O7I3iFJvbRNWUiiOBbNvHDg==
react-native-nitro-ota@^0.4.0:
version "0.4.0"
@@ -8456,10 +8456,10 @@ react-native-pager-view@^6.9.1:
resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-6.9.1.tgz#a9e6d9323935cc2ae1d46d7816b66f76dc3eff8e"
integrity sha512-uUT0MMMbNtoSbxe9pRvdJJKEi9snjuJ3fXlZhG8F2vVMOBJVt/AFtqMPUHu9yMflmqOr08PewKzj9EPl/Yj+Gw==
react-native-reanimated@4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-4.1.3.tgz#de29587b8ff7febada32497793803215faeac636"
integrity sha512-GP8wsi1u3nqvC1fMab/m8gfFwFyldawElCcUSBJQgfrXeLmsPPUOpDw44lbLeCpcwUuLa05WTVePdTEwCLTUZg==
react-native-reanimated@4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-4.1.5.tgz#5106f9d5dc61f06ca54b9813f280bbfde7785987"
integrity sha512-UA6VUbxwhRjEw2gSNrvhkusUq3upfD3Cv+AnB07V+kC8kpvwRVI+ivwY95ePbWNFkFpP+Y2Sdw1WHpHWEV+P2Q==
dependencies:
react-native-is-edge-to-edge "^1.2.1"
semver "7.7.2"