Storage Fixes (#825)

* hotfix for m4a extensions when downloading - they should be playable when downloaded now 

hotfix for constant sign out issues post MMKV v4 upgrade

upgrade nitro ota

* bump bundle version for iOS
This commit is contained in:
Violet Caulfield
2025-12-13 17:11:02 -06:00
committed by GitHub
parent 4343cf2caf
commit d84d500fe2
7 changed files with 29 additions and 25 deletions

View File

@@ -46,7 +46,7 @@
"react-native-mmkv": "^4.1.0",
"react-native-nitro-fetch": "^0.1.6",
"react-native-nitro-modules": "0.31.10",
"react-native-nitro-ota": "0.7.2",
"react-native-nitro-ota": "0.8.2",
"react-native-pager-view": "^7.0.2",
"react-native-reanimated": "4.2.0",
"react-native-safe-area-context": "5.6.2",
@@ -1932,7 +1932,7 @@
"react-native-nitro-modules": ["react-native-nitro-modules@0.31.10", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-hcvjTu9YJE9fMmnAUvhG8CxvYLpOuMQ/2eyi/S6GyrecezF6Rmk/uRQEL6v09BRFWA/xRVZNQVulQPS+2HS3mQ=="],
"react-native-nitro-ota": ["react-native-nitro-ota@0.7.2", "", { "peerDependencies": { "react": "*", "react-native": "*", "react-native-nitro-modules": "^0.29.8" } }, "sha512-DUa2/QhFJBhSbzrTHGrc+qm1pSuJctccUcHlHZXjPV4fCEpi+4Y17QqI9U4D9MUnnP77afKEZJKFy+0NQeSAdA=="],
"react-native-nitro-ota": ["react-native-nitro-ota@0.8.2", "", { "peerDependencies": { "react": "*", "react-native": "*", "react-native-nitro-modules": "^0.29.8" } }, "sha512-UhL+62PAj5yXQnpTqkMUBN1NX6oerAdA5lifg3XncLT3Nipswy3aZa7rDATYsXPBrWp4w8VvxfEKy4PWk7Ifxw=="],
"react-native-pager-view": ["react-native-pager-view@7.0.2", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-yj/v6BN/WGuV1VBVWaCjYOjQlhTaqJs4Ocismw0XRSsHGqO2wuQdWF8it5iFnfibQVBBED0/GC7qKOlQ4FBzNg=="],

View File

@@ -94,8 +94,6 @@
/* Begin PBXFileSystemSynchronizedRootGroup section */
CFE47DDB2EA56B0200EB6067 /* icons */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
path = icons;
sourceTree = "<group>";
};
@@ -399,10 +397,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-frameworks.sh\"\n";
@@ -416,10 +418,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Jellify/Pods-Jellify-resources.sh\"\n";
@@ -707,10 +713,7 @@
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_LDFLAGS = "$(inherited) ";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -798,10 +801,7 @@
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_LDFLAGS = "$(inherited) ";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -931,10 +931,7 @@
"-DFOLLY_CFG_NO_COROUTINES=1",
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
);
OTHER_LDFLAGS = (
"$(inherited)",
" ",
);
OTHER_LDFLAGS = "$(inherited) ";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;

View File

@@ -23,7 +23,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>12</string>
<string>13</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
@@ -39,7 +39,7 @@
<string>_CC1AD845._googlecast._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>${PRODUCT_NAME} uses the local network to connect to one&apos;s Jellyfin server for streaming music</string>
<string>${PRODUCT_NAME} uses the local network to connect to one's Jellyfin server for streaming music</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>RCTNewArchEnabled</key>

View File

@@ -103,7 +103,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- NitroOta (0.7.2):
- NitroOta (0.8.2):
- boost
- DoubleConversion
- fast_float
@@ -134,7 +134,7 @@ PODS:
- SocketRocket
- SSZipArchive
- Yoga
- NitroOtaBundleManager (0.7.2):
- NitroOtaBundleManager (0.8.2):
- boost
- DoubleConversion
- fast_float
@@ -3597,8 +3597,8 @@ SPEC CHECKSUMS:
NitroFetch: 660adfb47f84b28db664f97b50e5dc28506ab6c1
NitroMmkv: ce1df9b9f0e06dfbde2455d863047e0411fceb6e
NitroModules: 5bc319d441f4983894ea66b1d392c519536e6d23
NitroOta: 7755c4728f7348584cebb2d428480b1ed0cd2679
NitroOtaBundleManager: 482abb17f0ca629ad551da43f13e76e59dba9568
NitroOta: 00fe2398bd004702e7c43735e8a1e0d778b4a554
NitroOtaBundleManager: bb64fef2e363730c06fd5a08081e33c589787693
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
Protobuf: 164aea2ae380c3951abdc3e195220c01d17400e0
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669

View File

@@ -78,7 +78,7 @@
"react-native-mmkv": "^4.1.0",
"react-native-nitro-fetch": "^0.1.6",
"react-native-nitro-modules": "0.31.10",
"react-native-nitro-ota": "0.7.2",
"react-native-nitro-ota": "0.8.2",
"react-native-pager-view": "^7.0.2",
"react-native-reanimated": "4.2.0",
"react-native-safe-area-context": "5.6.2",

View File

@@ -27,8 +27,16 @@ const getExtensionFromUrl = (url: string): string | null => {
const normalizeExtension = (ext: string | undefined | null) => {
if (!ext) return null
let extension
const clean = ext.toLowerCase()
return clean === 'mpeg' ? 'mp3' : clean
if (clean.includes('mpeg')) extension = 'mp3'
else if (clean.includes('m4a')) extension = 'm4a'
else extension = clean
return extension
}
const extensionFromContentType = (contentType: string | undefined): string | null => {

View File

@@ -5,7 +5,6 @@ import { StateStorage } from 'zustand/middleware'
import AsyncStorage from '@react-native-async-storage/async-storage'
export const storage = createMMKV()
storage.recrypt('jellify-storage')
const storageFunctions = {
setItem: async (key: string, value: string) => {