diff --git a/app.json b/app.json index fd31d80f..c1738ff2 100644 --- a/app.json +++ b/app.json @@ -7,10 +7,6 @@ "icon": "./assets/images/icon.png", "scheme": "streamyfin", "userInterfaceStyle": "dark", - "splash": { - "image": "./assets/images/splash.png", - "resizeMode": "contain" - }, "jsEngine": "hermes", "assetBundlePatterns": [ "**/*" @@ -74,16 +70,13 @@ { "ios": { "deploymentTarget": "15.6", - "useFrameworks": "static", - "newArchEnabled": false + "useFrameworks": "static" }, "android": { - "newArchEnabled": false, - "android": { - "compileSdkVersion": 34, - "targetSdkVersion": 34, - "buildToolsVersion": "34.0.0" - }, + "compileSdkVersion": 35, + "targetSdkVersion": 35, + "buildToolsVersion": "35.0.0", + "kotlinVersion": "2.0.21", "minSdkVersion": 24, "usesCleartextTraffic": true, "packagingOptions": { @@ -129,6 +122,17 @@ ], [ "./plugins/withTrustLocalCerts.js" + ], + [ + "./plugins/withGradleProperties.js" + ], + [ + "expo-splash-screen", + { + "backgroundColor": "#2e2e2e", + "image": "./assets/images/StreamyFinFinal.png", + "imageWidth": 100 + } ] ], "experiments": { @@ -148,6 +152,7 @@ }, "updates": { "url": "https://u.expo.dev/e79219d1-797f-4fbe-9fa1-cfd360690a68" - } + }, + "newArchEnabled": false } } \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 7d5dc622..b38fc3d8 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/modules/vlc-player/android/build.gradle b/modules/vlc-player/android/build.gradle index e00e0eb2..3077d202 100644 --- a/modules/vlc-player/android/build.gradle +++ b/modules/vlc-player/android/build.gradle @@ -1,12 +1,17 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-kapt' +} group = 'expo.modules.vlcplayer' version = '0.6.0' def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle") +def kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.25' + apply from: expoModulesCorePlugin + applyKotlinExpoModulesCorePlugin() useCoreDependencies() useExpoPublishing() @@ -37,8 +42,8 @@ if (useManagedAndroidSdkVersions) { } dependencies { - implementation 'org.videolan.android:libvlc-all:3.6.0-eap12' - implementation "org.jetbrains.kotlin:kotlin-stdlib:1.5.31" + implementation 'org.videolan.android:libvlc-all:3.6.0' + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" } android { diff --git a/package.json b/package.json index 32b4a337..d01b9b64 100644 --- a/package.json +++ b/package.json @@ -10,122 +10,121 @@ "ios:tv": "EXPO_TV=1 expo run:ios", "android": "EXPO_TV=0 expo run:android", "android:tv": "EXPO_TV=1 expo run:android", - "prebuild": "EXPO_TV=0 expo prebuild --clean", - "prebuild:tv": "EXPO_TV=1 expo prebuild --clean", - "prebuild:tv-new": "EXPO_TV=1 node ./scripts/symlink-native-dirs.js; EXPO_TV=1 expo prebuild --clean", + "prebuild": "EXPO_TV=0 bun run clean", + "prebuild:tv": "EXPO_TV=1 bun run clean", + "prebuild:tv-new": "EXPO_TV=1 node ./scripts/symlink-native-dirs.js; bun run prebuild:tv", "test": "jest --watchAll", "lint": "expo lint", "postinstall": "patch-package" }, "dependencies": { - "@bottom-tabs/react-navigation": "0.8.3", - "@config-plugins/ffmpeg-kit-react-native": "^8.0.0", - "@expo/config-plugins": "~8.0.0", + "@bottom-tabs/react-navigation": "0.8.6", + "@config-plugins/ffmpeg-kit-react-native": "^9.0.0", + "@expo/config-plugins": "~9.0.15", "@expo/react-native-action-sheet": "^4.1.0", "@expo/vector-icons": "^14.0.4", - "@futurejj/react-native-visibility-sensor": "^1.3.5", - "@gorhom/bottom-sheet": "^4.6.4", + "@futurejj/react-native-visibility-sensor": "^1.3.10", + "@gorhom/bottom-sheet": "^5.1.0", "@jellyfin/sdk": "^0.11.0", "@kesha-antonov/react-native-background-downloader": "3.2.6", - "@react-native-async-storage/async-storage": "1.23.1", - "@react-native-community/netinfo": "11.3.1", - "@react-native-menu/menu": "^1.1.6", - "@react-navigation/bottom-tabs": "^7.0.0", - "@react-navigation/material-top-tabs": "^6.6.14", - "@react-navigation/native": "^6.1.18", - "@shopify/flash-list": "1.6.4", - "@tanstack/react-query": "^5.59.20", - "@types/lodash": "^4.17.13", + "@react-native-async-storage/async-storage": "2.1.1", + "@react-native-community/netinfo": "11.4.1", + "@react-native-menu/menu": "^1.2.2", + "@react-navigation/bottom-tabs": "^7.2.0", + "@react-navigation/material-top-tabs": "^7.1.0", + "@react-navigation/native": "^7.0.14", + "@shopify/flash-list": "1.7.3", + "@tanstack/react-query": "^5.66.0", + "@types/lodash": "^4.17.15", "@types/react-native-vector-icons": "^6.4.18", "@types/uuid": "^10.0.0", "add": "^2.0.6", - "axios": "^1.7.7", - "expo": "^51", - "expo-asset": "~10.0.10", - "expo-background-fetch": "~12.0.1", - "expo-blur": "~13.0.3", - "expo-brightness": "~12.0.1", - "expo-build-properties": "~0.12.5", - "expo-constants": "~16.0.2", - "expo-crypto": "~13.0.2", - "expo-dev-client": "~4.0.29", - "expo-device": "~6.0.2", - "expo-font": "~12.0.10", - "expo-haptics": "~13.0.1", - "expo-image": "~1.13.0", - "expo-keep-awake": "~13.0.2", - "expo-linear-gradient": "~13.0.2", - "expo-linking": "~6.3.1", + "axios": "^1.7.9", + "expo": "^52.0.31", + "expo-asset": "~11.0.3", + "expo-background-fetch": "~13.0.5", + "expo-blur": "~14.0.3", + "expo-brightness": "~13.0.3", + "expo-build-properties": "~0.13.2", + "expo-constants": "~17.0.5", + "expo-crypto": "~14.0.2", + "expo-dev-client": "~5.0.11", + "expo-device": "~7.0.2", + "expo-font": "~13.0.3", + "expo-haptics": "~14.0.1", + "expo-image": "~2.0.4", + "expo-keep-awake": "~14.0.2", + "expo-linear-gradient": "~14.0.2", + "expo-linking": "~7.0.5", "expo-localization": "~16.0.1", - "expo-network": "~6.0.1", - "expo-notifications": "~0.28.19", - "expo-router": "~3.5.24", - "expo-screen-orientation": "~7.0.5", - "expo-sensors": "~13.0.9", - "expo-splash-screen": "~0.27.7", - "expo-status-bar": "~1.12.1", - "expo-system-ui": "~3.0.7", - "expo-task-manager": "~11.8.2", - "expo-updates": "~0.25.28", - "expo-web-browser": "~13.0.3", + "expo-network": "~7.0.5", + "expo-notifications": "~0.29.13", + "expo-router": "~4.0.17", + "expo-screen-orientation": "~8.0.4", + "expo-sensors": "~14.0.2", + "expo-splash-screen": "~0.29.21", + "expo-status-bar": "~2.0.1", + "expo-system-ui": "~4.0.8", + "expo-task-manager": "~12.0.5", + "expo-updates": "~0.26.17", + "expo-web-browser": "~14.0.2", "ffmpeg-kit-react-native": "^6.0.2", "i18next": "^24.2.2", - "install": "^0.13.0", - "jotai": "^2.10.1", + "jotai": "^2.11.3", "lodash": "^4.17.21", "nativewind": "^2.0.11", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-native": "npm:react-native-tvos@~0.74.5-0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-native": "npm:react-native-tvos@~0.77.0-0", "react-i18next": "^15.4.0", - "react-native-awesome-slider": "^2.5.6", - "react-native-bottom-tabs": "0.8.3", + "react-native-awesome-slider": "^2.9.0", + "react-native-bottom-tabs": "0.8.6", "react-native-circular-progress": "^1.4.1", - "react-native-compressor": "^1.9.0", + "react-native-compressor": "^1.10.3", "react-native-country-flag": "^2.0.2", - "react-native-device-info": "^14.0.1", - "react-native-edge-to-edge": "^1.1.3", - "react-native-gesture-handler": "~2.16.1", + "react-native-device-info": "^14.0.4", + "react-native-edge-to-edge": "^1.4.3", + "react-native-gesture-handler": "~2.23.0", "react-native-get-random-values": "^1.11.0", "react-native-google-cast": "^4.8.3", "react-native-image-colors": "^2.4.0", - "react-native-ios-context-menu": "^2.5.2", - "react-native-ios-utilities": "4.5.3", + "react-native-ios-context-menu": "^3.1.0", + "react-native-ios-utilities": "5.1.1", "react-native-mmkv": "^2.12.2", - "react-native-pager-view": "6.3.0", + "react-native-pager-view": "6.7.0", "react-native-progress": "^5.0.1", - "react-native-reanimated": "~3.10.1", - "react-native-reanimated-carousel": "4.0.0-canary.22", - "react-native-safe-area-context": "4.10.5", - "react-native-screens": "3.31.1", - "react-native-svg": "15.2.0", - "react-native-tab-view": "^3.5.2", + "react-native-reanimated": "~3.16.7", + "react-native-reanimated-carousel": "3.5.1", + "react-native-safe-area-context": "5.2.0", + "react-native-screens": "4.6.0", + "react-native-svg": "15.11.1", + "react-native-tab-view": "^4.0.5", "react-native-udp": "^4.1.7", "react-native-uitextview": "^1.4.0", "react-native-url-polyfill": "^2.0.0", - "react-native-uuid": "^2.0.2", - "react-native-video": "6.8.2", - "react-native-volume-manager": "^1.10.0", + "react-native-uuid": "^2.0.3", + "react-native-video": "6.10.0", + "react-native-volume-manager": "^2.0.8", "react-native-web": "~0.19.13", - "react-native-webview": "13.8.6", - "sonner-native": "^0.14.2", + "react-native-webview": "13.13.2", + "sonner-native": "^0.17.0", "tailwindcss": "3.3.2", "use-debounce": "^10.0.4", - "uuid": "^10.0.0", - "zeego": "^1.10.0", - "zod": "^3.23.8" + "uuid": "^11.0.5", + "zeego": "^2.0.4", + "zod": "^3.24.1" }, "devDependencies": { "@react-native-community/cli": "15.1.3", "@react-native-tvos/config-tv": "^0.1.1", - "@babel/core": "^7.26.0", + "@babel/core": "^7.26.8", "@types/jest": "^29.5.14", - "@types/react": "~18.2.79", - "@types/react-test-renderer": "^18.0.7", + "@types/react": "~19.0.8", + "@types/react-test-renderer": "^19.0.0", "patch-package": "^8.0.0", "postinstall-postinstall": "^2.1.0", - "react-test-renderer": "18.2.0", - "typescript": "~5.3.3" + "react-test-renderer": "19.0.0", + "typescript": "~5.7.3" }, "private": true, "expo": { diff --git a/plugins/withGradleProperties.js b/plugins/withGradleProperties.js new file mode 100644 index 00000000..38ca08ac --- /dev/null +++ b/plugins/withGradleProperties.js @@ -0,0 +1,40 @@ +const { withGradleProperties } = require('expo/config-plugins'); + +function setGradlePropertiesValue(config, key, value) { + return withGradleProperties(config, exportedConfig => { + const props = exportedConfig.modResults; + const keyIdx = props.findIndex(item => item.type === 'property' && item.key === key); + const property = { + type: 'property', + key, + value + }; + + if (keyIdx >= 0) { + props.splice(keyIdx, 1, property); + } + else { + props.push(property); + } + + return exportedConfig; + }); +} + +module.exports = function withCustomPlugin(config) { + // Expo 52 is not setting this + // https://github.com/expo/expo/issues/32558 + config = setGradlePropertiesValue( + config, + 'android.enableJetifier', + 'true', + ); + + // Increase memory + config = setGradlePropertiesValue( + config, + 'org.gradle.jvmargs', + '-Xmx4096m -XX:MaxMetaspaceSize=1024m', + ); + return config; +}; \ No newline at end of file