Compare commits

..

25 Commits

Author SHA1 Message Date
Lei Nelissen
2f8cf6e081 Merge pull request #105 from leinelissen/feat/rename
feat: Rename Jellyfin Audio Player to Fintunes
2022-11-17 21:25:09 +01:00
Lei Nelissen
0a7f6abf3e fix: Rename Jellyfin Audio Player to Fintunes in translation files 2022-11-17 21:12:52 +01:00
Lei Nelissen
398e38e748 chore: Update fastlane snapshots 2022-11-17 21:08:19 +01:00
Lei Nelissen
d072292008 fix: Depcreated createReducer calls 2022-11-17 21:08:07 +01:00
Lei Nelissen
2c7abb72ba chore: migrated from deprecated createReducer syntax 2022-11-13 16:28:05 +01:00
Lei Nelissen
e5d1dea925 chore: linter 2022-11-13 12:11:41 +01:00
Lei Nelissen
9807b0e920 fix: jumpy progress animations 2022-11-13 12:09:48 +01:00
Lei Nelissen
7ed389ead6 fix: Only show single line for tracks without artists or albums 2022-11-13 12:09:36 +01:00
Lei Nelissen
0ffc5b6489 fix: Input icon alignment on Android 2022-11-13 11:25:57 +01:00
Lei Nelissen
cce15ab46b chore: patch for sentry 2022-11-13 11:04:51 +01:00
Lei Nelissen
d81c4c3c92 chore: linter 2022-11-12 17:47:43 +01:00
Lei Nelissen
b2bd211758 fix: BlurView on Android 2022-11-12 17:43:24 +01:00
Lei Nelissen
cd10ddd260 fix: Ensure proper spacing in downloads screen 2022-11-12 17:30:30 +01:00
Lei Nelissen
f8812bc75c chore: remove redundant console.log 2022-11-12 17:27:18 +01:00
Lei Nelissen
68de2ca80e fix: margin on connection notice 2022-11-12 17:27:12 +01:00
Lei Nelissen
e0493c4a55 fix: Blur obscuring buttons on Android 2022-11-12 17:27:04 +01:00
Lei Nelissen
f50e5914ec chore: fix android build issues 2022-11-12 17:20:02 +01:00
Lei Nelissen
c7aec30e39 chore: Upgrade to latest react-native 2022-11-12 16:22:39 +01:00
Lei Nelissen
c19b9d8920 Add screenshotting 2022-10-01 13:04:24 +02:00
Lei Nelissen
a402757c96 Remove ClosePlayer 2022-10-01 13:01:40 +02:00
Lei Nelissen
4d025d5411 Base commit 2022-10-01 13:01:40 +02:00
Lei Nelissen
b41031eeac fix: Remove any restrictions on bitrate and samplerate 2022-08-14 15:39:49 +02:00
Lei Nelissen
f0e8dc998c chore: update Fastlane plugins 2022-08-14 15:39:27 +02:00
Lei Nelissen
8e0809bcdc chore: Release v1.2.7 2022-08-14 00:49:48 +02:00
Lei Nelissen
5b54760e4e feat: Allow FLAC playback 2022-08-14 00:30:20 +02:00
123 changed files with 8912 additions and 8508 deletions

5
.gitignore vendored
View File

@@ -69,4 +69,7 @@ fastlane/Appfile
certificates/ certificates/
.env .env
sentry.properties sentry.properties
screenshots
fastlane/Preview.html

1
.node-version Normal file
View File

@@ -0,0 +1 @@
16

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
legacy-peer-deps=true

View File

@@ -1,51 +1,103 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
CFPropertyList (3.0.3) CFPropertyList (3.0.5)
addressable (2.8.0) rexml
public_suffix (>= 2.0.2, < 5.0) activesupport (6.1.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.1.1) aws-eventstream (1.2.0)
aws-partitions (1.488.0) aws-partitions (1.660.0)
aws-sdk-core (3.119.0) aws-sdk-core (3.167.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.59.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
jmespath (~> 1.0) aws-sdk-s3 (1.117.1)
aws-sdk-kms (1.46.0) aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-core (~> 3, >= 3.119.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.99.0)
aws-sdk-core (~> 3, >= 3.119.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.4)
aws-sigv4 (1.2.4) aws-sigv4 (1.5.2)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4) babosa (1.0.4)
claide (1.0.3) claide (1.1.0)
cocoapods (1.11.3)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.11.3)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.4.0, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.3.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.8.0)
nap (~> 1.0)
ruby-macho (>= 1.0, < 3.0)
xcodeproj (>= 1.21.0, < 2.0)
cocoapods-core (1.11.3)
activesupport (>= 5.0, < 7)
addressable (~> 2.8)
algoliasearch (~> 1.0)
concurrent-ruby (~> 1.1)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
netrc (~> 0.11)
public_suffix (~> 4.0)
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.6.3)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored (1.2) colored (1.2)
colored2 (3.1.2) colored2 (3.1.2)
commander (4.6.0) commander (4.6.0)
highline (~> 2.0.0) highline (~> 2.0.0)
concurrent-ruby (1.1.10)
declarative (0.0.20) declarative (0.0.20)
digest-crc (0.6.4) digest-crc (0.6.4)
rake (>= 12.0.0, < 14.0.0) rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701) domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0) unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6) dotenv (2.8.1)
emoji_regex (3.2.2) emoji_regex (3.2.3)
excon (0.85.0) escape (0.0.4)
faraday (1.7.0) ethon (0.15.0)
ffi (>= 1.15.0)
excon (0.94.0)
faraday (1.10.2)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1) faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1) faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0) faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1) faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0) faraday-patron (~> 1.0)
faraday-rack (~> 1.0) faraday-rack (~> 1.0)
multipart-post (>= 1.2, < 3) faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4) ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7) faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0) faraday (>= 0.8.0)
@@ -54,14 +106,17 @@ GEM
faraday-em_synchrony (1.0.0) faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0) faraday-excon (1.1.0)
faraday-httpclient (1.0.1) faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1) faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0) faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0) faraday-patron (1.0.0)
faraday-rack (1.0.0) faraday-rack (1.0.0)
faraday_middleware (1.1.0) faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.2.5) fastimage (2.2.6)
fastlane (2.191.0) fastlane (2.211.0)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0) addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
@@ -87,6 +142,7 @@ GEM
mini_magick (>= 4.9.4, < 5.0.0) mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0) multipart-post (~> 2.0.0)
naturally (~> 2.2) naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0) plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0) rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3) security (= 0.1.3)
@@ -99,11 +155,17 @@ GEM
xcodeproj (>= 1.13.0, < 2.0.0) xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0) xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3) xcpretty-travis-formatter (>= 0.0.3)
fastlane-plugin-sentry (1.8.1) fastlane-plugin-load_json (0.0.1)
fastlane-plugin-sentry (1.14.0)
os (~> 1.1, >= 1.1.4)
fastlane-plugin-versioning_android (0.1.0)
ffi (1.15.5)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3) gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.10.0) google-apis-androidpublisher_v3 (0.31.0)
google-apis-core (>= 0.4, < 2.a) google-apis-core (>= 0.9.1, < 2.a)
google-apis-core (0.4.1) google-apis-core (0.9.1)
addressable (~> 2.5, >= 2.5.1) addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a) googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a) httpclient (>= 2.8.1, < 3.a)
@@ -112,64 +174,72 @@ GEM
retriable (>= 2.0, < 4.a) retriable (>= 2.0, < 4.a)
rexml rexml
webrick webrick
google-apis-iamcredentials_v1 (0.6.0) google-apis-iamcredentials_v1 (0.16.0)
google-apis-core (>= 0.4, < 2.a) google-apis-core (>= 0.9.1, < 2.a)
google-apis-playcustomapp_v1 (0.5.0) google-apis-playcustomapp_v1 (0.12.0)
google-apis-core (>= 0.4, < 2.a) google-apis-core (>= 0.9.1, < 2.a)
google-apis-storage_v1 (0.6.0) google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.4, < 2.a) google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0) google-cloud-core (1.6.0)
google-cloud-env (~> 1.0) google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0) google-cloud-errors (~> 1.0)
google-cloud-env (1.5.0) google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 2.0) faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.1.0) google-cloud-errors (1.3.0)
google-cloud-storage (1.34.1) google-cloud-storage (1.44.0)
addressable (~> 2.5) addressable (~> 2.8)
digest-crc (~> 0.4) digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1) google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.1) google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6) google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a) googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0) mini_mime (~> 1.0)
googleauth (0.17.0) googleauth (1.3.0)
faraday (>= 0.17.3, < 2.0) faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0) jwt (>= 1.4, < 3.0)
memoist (~> 0.16) memoist (~> 0.16)
multi_json (~> 1.11) multi_json (~> 1.11)
os (>= 0.9, < 2.0) os (>= 0.9, < 2.0)
signet (~> 0.14) signet (>= 0.16, < 2.a)
highline (2.0.3) highline (2.0.3)
http-cookie (1.0.4) http-cookie (1.0.5)
domain_name (~> 0.5) domain_name (~> 0.5)
httpclient (2.8.3) httpclient (2.8.3)
jmespath (1.4.0) i18n (1.10.0)
json (2.5.1) concurrent-ruby (~> 1.0)
jwt (2.2.3) jmespath (1.6.1)
json (2.6.2)
jwt (2.5.0)
memoist (0.16.2) memoist (0.16.2)
mini_magick (4.11.0) mini_magick (4.11.0)
mini_mime (1.1.0) mini_mime (1.1.2)
minitest (5.15.0)
molinillo (0.8.0)
multi_json (1.15.0) multi_json (1.15.0)
multipart-post (2.0.0) multipart-post (2.0.0)
nanaimo (0.3.0) nanaimo (0.3.0)
nap (1.1.0)
naturally (2.2.1) naturally (2.2.1)
os (1.1.1) netrc (0.11.0)
optparse (0.1.1)
os (1.1.4)
plist (3.6.0) plist (3.6.0)
public_suffix (4.0.6) public_suffix (4.0.7)
rake (13.0.6) rake (13.0.6)
representable (3.1.1) representable (3.2.0)
declarative (< 0.1.0) declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0) trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0) uber (< 0.2.0)
retriable (3.1.2) retriable (3.1.2)
rexml (3.2.5) rexml (3.2.5)
rouge (2.0.7) rouge (2.0.7)
ruby-macho (2.5.1)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
rubyzip (2.3.2) rubyzip (2.3.2)
security (0.1.3) security (0.1.3)
signet (0.15.0) signet (0.17.0)
addressable (~> 2.3) addressable (~> 2.8)
faraday (>= 0.17.3, < 2.0) faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0) jwt (>= 1.5, < 3.0)
multi_json (~> 1.10) multi_json (~> 1.10)
simctl (1.6.8) simctl (1.6.8)
@@ -178,19 +248,23 @@ GEM
terminal-notifier (2.0.0) terminal-notifier (2.0.0)
terminal-table (1.8.0) terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1) unicode-display_width (~> 1.1, >= 1.1.1)
trailblazer-option (0.1.1) trailblazer-option (0.1.2)
tty-cursor (0.7.1) tty-cursor (0.7.1)
tty-screen (0.8.1) tty-screen (0.8.1)
tty-spinner (0.9.3) tty-spinner (0.9.3)
tty-cursor (~> 0.7) tty-cursor (~> 0.7)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
uber (0.1.0) uber (0.1.0)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.7) unf_ext (0.0.8.2)
unicode-display_width (1.7.0) unicode-display_width (1.8.0)
webrick (1.7.0) webrick (1.7.0)
word_wrap (1.0.0) word_wrap (1.0.0)
xcodeproj (1.21.0) xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0) CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3) atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0) claide (>= 1.0.2, < 2.0)
@@ -201,13 +275,17 @@ GEM
rouge (~> 2.0.7) rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1) xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7) xcpretty (~> 0.2, >= 0.0.7)
zeitwerk (2.6.0)
PLATFORMS PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
cocoapods (~> 1.11, >= 1.11.2)
fastlane (~> 2.153) fastlane (~> 2.153)
fastlane-plugin-load_json
fastlane-plugin-sentry fastlane-plugin-sentry
fastlane-plugin-versioning_android
BUNDLED WITH BUNDLED WITH
1.17.2 1.17.2

View File

@@ -35,12 +35,12 @@ android_library(
android_build_config( android_build_config(
name = "build_config", name = "build_config",
package = "com.jellyfinaudioplayer", package = "nl.moeilijkedingen.jellyfinaudioplayer",
) )
android_resource( android_resource(
name = "res", name = "res",
package = "com.jellyfinaudioplayer", package = "nl.moeilijkedingen.jellyfinaudioplayer",
res = "src/main/res", res = "src/main/res",
) )

View File

@@ -79,7 +79,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
*/ */
project.ext.react = [ project.ext.react = [
enableHermes: false, // clean and rebuild if changing enableHermes: true, // clean and rebuild if changing
] ]
apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native/react.gradle"
@@ -135,35 +135,22 @@ android {
compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig { defaultConfig {
applicationId "com.jellyfinaudioplayer" applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 10 versionCode 11
versionName "1.2.6" versionName "1.2.7"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) { if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture. // We configure the CMake build only if you decide to opt-in for the New Architecture.
externalNativeBuild { externalNativeBuild {
ndkBuild { cmake {
arguments "APP_PLATFORM=android-21", arguments "-DPROJECT_BUILD_DIR=$buildDir",
"APP_STL=c++_shared", "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"NDK_TOOLCHAIN_VERSION=clang", "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
"GENERATED_SRC_DIR=$buildDir/generated/source", "-DNODE_MODULES_DIR=$rootDir/../node_modules",
"PROJECT_BUILD_DIR=$buildDir", "-DANDROID_STL=c++_shared"
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build"
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
cppFlags "-std=c++17"
// Make sure this target name is the same you specify inside the
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
targets "rndiffapp_appmodules"
// Fix for windows limit on number of character in file paths and in command lines
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
arguments "NDK_OUT=${rootProject.projectDir.getParent()}\\.cxx",
"NDK_APP_SHORT_COMMANDS=true"
}
} }
} }
if (!enableSeparateBuildPerCPUArchitecture) { if (!enableSeparateBuildPerCPUArchitecture) {
@@ -177,8 +164,8 @@ android {
if (isNewArchitectureEnabled()) { if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture. // We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild { externalNativeBuild {
ndkBuild { cmake {
path "$projectDir/src/main/jni/Android.mk" path "$projectDir/src/main/jni/CMakeLists.txt"
} }
} }
def reactAndroidProjectDir = project(':ReactAndroid').projectDir def reactAndroidProjectDir = project(':ReactAndroid').projectDir
@@ -200,15 +187,15 @@ android {
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
// Due to a bug inside AGP, we have to explicitly set a dependency // Due to a bug inside AGP, we have to explicitly set a dependency
// between configureNdkBuild* tasks and the preBuild tasks. // between configureCMakeDebug* tasks and the preBuild tasks.
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
configureNdkBuildRelease.dependsOn(preReleaseBuild) configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
configureNdkBuildDebug.dependsOn(preDebugBuild) configureCMakeDebug.dependsOn(preDebugBuild)
reactNativeArchitectures().each { architecture -> reactNativeArchitectures().each { architecture ->
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { tasks.findByName("configureCMakeDebug[${architecture}]")?.configure {
dependsOn("preDebugBuild") dependsOn("preDebugBuild")
} }
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure {
dependsOn("preReleaseBuild") dependsOn("preReleaseBuild")
} }
} }
@@ -283,9 +270,10 @@ dependencies {
} }
if (enableHermes) { if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/"; //noinspection GradleDynamicVersion
debugImplementation files(hermesPath + "hermes-debug.aar") implementation("com.facebook.react:hermes-engine:+") { // From node_modules
releaseImplementation files(hermesPath + "hermes-release.aar") exclude group:'com.facebook.fbjni'
}
} else { } else {
implementation jscFlavor implementation jscFlavor
} }
@@ -298,12 +286,12 @@ if (isNewArchitectureEnabled()) {
configurations.all { configurations.all {
resolutionStrategy.dependencySubstitution { resolutionStrategy.dependencySubstitution {
substitute(module("com.facebook.react:react-native")) substitute(module("com.facebook.react:react-native"))
.using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") .using(project(":ReactAndroid"))
.because("On New Architecture we're building React Native from source")
substitute(module("com.facebook.react:hermes-engine"))
.using(project(":ReactAndroid:hermes-engine"))
.because("On New Architecture we're building Hermes from source")
} }
resolutionStrategy {
force 'com.google.android.exoplayer:exoplayer-core:2.11.4'
}
} }
} }

View File

@@ -4,7 +4,7 @@
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root * <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree. * directory of this source tree.
*/ */
package com.jellyfinaudioplayer; package nl.moeilijkedingen.jellyfinaudioplayer;
import android.content.Context; import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient; import com.facebook.flipper.android.AndroidFlipperClient;

View File

@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jellyfinaudioplayer"> package="nl.moeilijkedingen.jellyfinaudioplayer">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />

View File

@@ -1,7 +1,8 @@
package com.jellyfinaudioplayer; package nl.moeilijkedingen.jellyfinaudioplayer;;
import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivity;
import android.os.Bundle; import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
public class MainActivity extends ReactActivity { public class MainActivity extends ReactActivity {
@@ -11,11 +12,37 @@ public class MainActivity extends ReactActivity {
*/ */
@Override @Override
protected String getMainComponentName() { protected String getMainComponentName() {
return "JellyfinAudioPlayer"; return "Fintunes";
} }
/**
* Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
* you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer
* (Paper).
*/
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected ReactActivityDelegate createReactActivityDelegate() {
super.onCreate(null); return new MainActivityDelegate(this, getMainComponentName());
} }
}
public static class MainActivityDelegate extends ReactActivityDelegate {
public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
super(activity, mainComponentName);
}
@Override
protected ReactRootView createRootView() {
ReactRootView reactRootView = new ReactRootView(getContext());
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
return reactRootView;
}
@Override
protected boolean isConcurrentRootEnabled() {
// If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).
// More on this on https://reactjs.org/blog/2022/03/29/react-v18.html
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
}
}
}

View File

@@ -1,4 +1,4 @@
package com.jellyfinaudioplayer; package nl.moeilijkedingen.jellyfinaudioplayer;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
@@ -70,7 +70,7 @@ public class MainApplication extends Application implements ReactApplication {
We use reflection here to pick up the class that initializes Flipper, We use reflection here to pick up the class that initializes Flipper,
since Flipper library is not available in release mode since Flipper library is not available in release mode
*/ */
Class<?> aClass = Class.forName("com.jellyfinaudioplayer.ReactNativeFlipper"); Class<?> aClass = Class.forName("nl.moeilijkedingen.jellyfinaudioplayer.ReactNativeFlipper");
aClass aClass
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
.invoke(null, context, reactInstanceManager); .invoke(null, context, reactInstanceManager);

View File

@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.13)
# Define the library name here.
project(rndiffapp_appmodules)
# This file includes all the necessary to let you build your application with the New Architecture.
include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)

View File

@@ -0,0 +1,32 @@
#include "MainApplicationModuleProvider.h"
#include <rncli.h>
#include <rncore.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string &moduleName,
const JavaTurboModule::InitParams &params) {
// Here you can provide your own module provider for TurboModules coming from
// either your application or from external libraries. The approach to follow
// is similar to the following (for a library called `samplelibrary`:
//
// auto module = samplelibrary_ModuleProvider(moduleName, params);
// if (module != nullptr) {
// return module;
// }
// return rncore_ModuleProvider(moduleName, params);
// Module providers autolinked by RN CLI
auto rncli_module = rncli_ModuleProvider(moduleName, params);
if (rncli_module != nullptr) {
return rncli_module;
}
return rncore_ModuleProvider(moduleName, params);
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,16 @@
#pragma once
#include <memory>
#include <string>
#include <ReactCommon/JavaTurboModule.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string &moduleName,
const JavaTurboModule::InitParams &params);
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,45 @@
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainApplicationModuleProvider.h"
namespace facebook {
namespace react {
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
MainApplicationTurboModuleManagerDelegate::initHybrid(
jni::alias_ref<jhybridobject>) {
return makeCxxInstance();
}
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
registerHybrid({
makeNativeMethod(
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
makeNativeMethod(
"canCreateTurboModule",
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
});
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string &name,
const std::shared_ptr<CallInvoker> &jsInvoker) {
// Not implemented yet: provide pure-C++ NativeModules here.
return nullptr;
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string &name,
const JavaTurboModule::InitParams &params) {
return MainApplicationModuleProvider(name, params);
}
bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
const std::string &name) {
return getTurboModule(name, nullptr) != nullptr ||
getTurboModule(name, {.moduleName = name}) != nullptr;
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,38 @@
#include <memory>
#include <string>
#include <ReactCommon/TurboModuleManagerDelegate.h>
#include <fbjni/fbjni.h>
namespace facebook {
namespace react {
class MainApplicationTurboModuleManagerDelegate
: public jni::HybridClass<
MainApplicationTurboModuleManagerDelegate,
TurboModuleManagerDelegate> {
public:
// Adapt it to the package you used for your Java class.
static constexpr auto kJavaDescriptor =
"Lcom/rndiffapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
static void registerNatives();
std::shared_ptr<TurboModule> getTurboModule(
const std::string &name,
const std::shared_ptr<CallInvoker> &jsInvoker) override;
std::shared_ptr<TurboModule> getTurboModule(
const std::string &name,
const JavaTurboModule::InitParams &params) override;
/**
* Test-only method. Allows user to verify whether a TurboModule can be
* created by instances of this class.
*/
bool canCreateTurboModule(const std::string &name);
};
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,65 @@
#include "MainComponentsRegistry.h"
#include <CoreComponentsRegistry.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/components/rncore/ComponentDescriptors.h>
#include <rncli.h>
namespace facebook {
namespace react {
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
std::shared_ptr<ComponentDescriptorProviderRegistry const>
MainComponentsRegistry::sharedProviderRegistry() {
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
// Autolinked providers registered by RN CLI
rncli_registerProviders(providerRegistry);
// Custom Fabric Components go here. You can register custom
// components coming from your App or from 3rd party libraries here.
//
// providerRegistry->add(concreteComponentDescriptorProvider<
// AocViewerComponentDescriptor>());
return providerRegistry;
}
jni::local_ref<MainComponentsRegistry::jhybriddata>
MainComponentsRegistry::initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate) {
auto instance = makeCxxInstance(delegate);
auto buildRegistryFunction =
[](EventDispatcher::Weak const &eventDispatcher,
ContextContainer::Shared const &contextContainer)
-> ComponentDescriptorRegistry::Shared {
auto registry = MainComponentsRegistry::sharedProviderRegistry()
->createComponentDescriptorRegistry(
{eventDispatcher, contextContainer});
auto mutableRegistry =
std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
mutableRegistry->setFallbackComponentDescriptor(
std::make_shared<UnimplementedNativeViewComponentDescriptor>(
ComponentDescriptorParameters{
eventDispatcher, contextContainer, nullptr}));
return registry;
};
delegate->buildRegistryFunction = buildRegistryFunction;
return instance;
}
void MainComponentsRegistry::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
});
}
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,32 @@
#pragma once
#include <ComponentFactory.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
namespace facebook {
namespace react {
class MainComponentsRegistry
: public facebook::jni::HybridClass<MainComponentsRegistry> {
public:
// Adapt it to the package you used for your Java class.
constexpr static auto kJavaDescriptor =
"Lcom/rndiffapp/newarchitecture/components/MainComponentsRegistry;";
static void registerNatives();
MainComponentsRegistry(ComponentFactory *delegate);
private:
static std::shared_ptr<ComponentDescriptorProviderRegistry const>
sharedProviderRegistry();
static jni::local_ref<jhybriddata> initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate);
};
} // namespace react
} // namespace facebook

View File

@@ -0,0 +1,11 @@
#include <fbjni/fbjni.h>
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainComponentsRegistry.h"
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
return facebook::jni::initialize(vm, [] {
facebook::react::MainApplicationTurboModuleManagerDelegate::
registerNatives();
facebook::react::MainComponentsRegistry::registerNatives();
});
}

View File

@@ -1,3 +1,3 @@
<resources> <resources>
<string name="app_name">JellyfinAudioPlayer</string> <string name="app_name">Fintunes</string>
</resources> </resources>

View File

@@ -4,10 +4,11 @@ import org.apache.tools.ant.taskdefs.condition.Os
buildscript { buildscript {
ext { ext {
buildToolsVersion = "31.0.0" buildToolsVersion = "33.0.0"
kotlin_version = "1.7.20"
minSdkVersion = 21 minSdkVersion = 21
compileSdkVersion = 31 compileSdkVersion = 33
targetSdkVersion = 31 targetSdkVersion = 33
if (System.properties['os.arch'] == "aarch64") { if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64 // For M1 Users we need to use the NDK 24 which added support for aarch64
@@ -26,9 +27,9 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath("com.android.tools.build:gradle:7.0.4") classpath("com.android.tools.build:gradle:7.2.1")
classpath("com.facebook.react:react-native-gradle-plugin") classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:4.1.2") classpath("de.undercouch:gradle-download-task:5.0.1")
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
} }
@@ -53,12 +54,5 @@ allprojects {
} }
google() google()
maven { url 'https://www.jitpack.io' } maven { url 'https://www.jitpack.io' }
jcenter() {
content {
includeGroup("com.google.android.exoplayer")
includeGroupByRegex("com.eightbitlab.*")
}
}
} }
} }

Binary file not shown.

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -1,4 +1,4 @@
rootProject.name = 'JellyfinAudioPlayer' rootProject.name = 'Fintunes'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app' include ':app'
includeBuild('../node_modules/react-native-gradle-plugin') includeBuild('../node_modules/react-native-gradle-plugin')
@@ -6,4 +6,6 @@ includeBuild('../node_modules/react-native-gradle-plugin')
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
include(":ReactAndroid") include(":ReactAndroid")
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
include(":ReactAndroid:hermes-engine")
project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine')
} }

View File

@@ -1,4 +1,4 @@
{ {
"name": "JellyfinAudioPlayer", "name": "Fintunes",
"displayName": "Jellyfin Player" "displayName": "Fintunes"
} }

3
fastlane/Deliverfile Normal file
View File

@@ -0,0 +1,3 @@
# The Deliverfile allows you to store various App Store Connect metadata
# For more information, check out the docs
# https://docs.fastlane.tools/actions/deliver/

View File

@@ -3,7 +3,7 @@ default_platform(:ios)
package = load_json(json_path: "package.json") package = load_json(json_path: "package.json")
platform :ios do platform :ios do
lane :beta do before_all do
get_certificates( get_certificates(
output_path: 'certificates/' output_path: 'certificates/'
) )
@@ -14,24 +14,40 @@ platform :ios do
) )
update_code_signing_settings( update_code_signing_settings(
use_automatic_signing: true, use_automatic_signing: true,
path: "ios/JellyfinAudioPlayer.xcodeproj" path: "ios/Fintunes.xcodeproj"
) )
increment_version_number( increment_version_number(
version_number: package["version"], version_number: package["version"],
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj", xcodeproj: "ios/Fintunes.xcodeproj",
); );
increment_build_number( increment_build_number(
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj", xcodeproj: "ios/Fintunes.xcodeproj",
) )
end
lane :release do
build_app( build_app(
scheme: "Jellyfin Player", scheme: "Fintunes",
output_directory: "build", output_directory: "build",
workspace: "ios/JellyfinAudioPlayer.xcworkspace", workspace: "ios/Fintunes.xcworkspace",
export_method: "app-store",
)
upload_to_app_store
end
lane :beta do
build_app(
scheme: "Fintunes",
output_directory: "build",
workspace: "ios/Fintunes.xcworkspace",
export_method: "app-store", export_method: "app-store",
) )
upload_to_testflight upload_to_testflight
end
after_all do
build_number = get_build_number( build_number = get_build_number(
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj", xcodeproj: "ios/Fintunes.xcodeproj",
) )
Dir.chdir("..") do Dir.chdir("..") do
sh( sh(
@@ -50,8 +66,8 @@ platform :ios do
finalize: true finalize: true
) )
sentry_upload_dsym( sentry_upload_dsym(
dsym_path: 'build/Jellyfin Player.app.dSYM.zip', dsym_path: 'build/Fintunes.app.dSYM.zip',
info_plist: 'ios/JellyfinAudioPlayer/Info.plist', info_plist: 'ios/Fintunes/Info.plist',
) )
sentry_upload_file( sentry_upload_file(
version: "1.0+#{build_number}", version: "1.0+#{build_number}",
@@ -67,6 +83,11 @@ platform :ios do
rewrite: true rewrite: true
) )
end end
lane :screenshots do
capture_screenshots
# upload_to_app_store
end
end end
platform :android do platform :android do

View File

@@ -15,6 +15,14 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
## iOS ## iOS
### ios release
```sh
[bundle exec] fastlane ios release
```
### ios beta ### ios beta
```sh ```sh
@@ -23,6 +31,14 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
### ios screenshots
```sh
[bundle exec] fastlane ios screenshots
```
---- ----

43
fastlane/Snapfile Normal file
View File

@@ -0,0 +1,43 @@
# Uncomment the lines below you want to change by removing the # in the beginning
# A list of devices you want to take the screenshots from
devices([
"iPhone 14 Plus",
"iPhone 14 Pro Max",
"iPhone 14 Pro",
"iPhone 8 Plus",
])
languages([
"en-US",
"es-ES",
"fr-FR",
"ja",
"nl-NL",
"zh-Hans",
])
# The name of the scheme which contains the UI Tests
scheme("Fintunes")
workspace("ios/Fintunes.xcworkspace")
# Where should the resulting screenshots be stored?
output_directory("./fastlane/screenshots")
# remove the '#' to clear all previously generated screenshots before creating new ones
clear_previous_screenshots(true)
# Remove the '#' to set the status bar to 9:41 AM, and show full battery and reception. See also override_status_bar_arguments for custom options.
# override_status_bar(true)
# Arguments to pass to the app on launch. See https://docs.fastlane.tools/actions/snapshot/#launch-arguments
# launch_arguments(["-favColor red"])
# For more information about all available options run
# fastlane action snapshot
# Enabling this option will prevent displaying the simulator window
headless(false)
# Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
dark_mode(false)

1
fastlane/metadata/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
review_information

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
jellyfin, audio, player, streaming, downloads, music

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
Fintunes

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
A streaming audio player for Jellyfin, with support for search and downloads.

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
https://github.com/leinelissen/jellyfin-audio-player

View File

@@ -0,0 +1 @@
MUSIC

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@

11
ios/.xcode.env Normal file
View File

@@ -0,0 +1,11 @@
# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.
# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)

View File

@@ -7,15 +7,16 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* JellyfinAudioPlayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* JellyfinAudioPlayerTests.m */; };
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
463612208457EBB4B723000A /* libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 842AB597D56E84A4ACDC4735 /* libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a */; }; 38B3606A2D29107567360ACF /* libPods-Fintunes-FintunesTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EBC468D2DE6EB8FF02B72B7 /* libPods-Fintunes-FintunesTests.a */; };
4C04FC6E055249ABB204D3BC /* Inter-VariableFont_slnt,wght.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4B4A0465FF364579B28CF5D7 /* Inter-VariableFont_slnt,wght.ttf */; }; 4C04FC6E055249ABB204D3BC /* Inter-VariableFont_slnt,wght.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4B4A0465FF364579B28CF5D7 /* Inter-VariableFont_slnt,wght.ttf */; };
4FA1B23D2550A94C007A035E /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FA1B23C2550A94C007A035E /* File.swift */; }; 4FA1B23D2550A94C007A035E /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FA1B23C2550A94C007A035E /* File.swift */; };
A807E2BB233D6F9347D8A95C /* libPods-JellyfinAudioPlayer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71370E61E2CC6BD9372ADCF3 /* libPods-JellyfinAudioPlayer.a */; }; AB393FCA2857CC8400773469 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB393FC92857CC8400773469 /* SnapshotHelper.swift */; };
AB4A8DFE2857C8DA005A1ED0 /* FintunesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4A8DFD2857C8DA005A1ED0 /* FintunesUITests.swift */; };
D7439709FB704B4FE23C538F /* libPods-Fintunes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 12335560B9820FD5AD98AB8F /* libPods-Fintunes.a */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@@ -24,36 +25,40 @@
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1; proxyType = 1;
remoteGlobalIDString = 13B07F861A680F5B00A75B9A; remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = JellyfinAudioPlayer; remoteInfo = Fintunes;
};
AB4A8E012857C8DA005A1ED0 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
remoteInfo = Fintunes;
}; };
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
00E356EE1AD99517003FC87E /* JellyfinAudioPlayerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JellyfinAudioPlayerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356EE1AD99517003FC87E /* FintunesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FintunesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 0973197F4BDB99413C326AD0 /* Pods-Fintunes.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fintunes.release.xcconfig"; path = "Target Support Files/Pods-Fintunes/Pods-Fintunes.release.xcconfig"; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* JellyfinAudioPlayerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JellyfinAudioPlayerTests.m; sourceTree = "<group>"; }; 12335560B9820FD5AD98AB8F /* libPods-Fintunes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Fintunes.a"; sourceTree = BUILT_PRODUCTS_DIR; };
13B07F961A680F5B00A75B9A /* Jellyfin Player.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Jellyfin Player.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* Fintunes.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Fintunes.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = JellyfinAudioPlayer/AppDelegate.h; sourceTree = "<group>"; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Fintunes/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = JellyfinAudioPlayer/AppDelegate.m; sourceTree = "<group>"; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Fintunes/AppDelegate.m; sourceTree = "<group>"; };
13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; }; 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = JellyfinAudioPlayer/Images.xcassets; sourceTree = "<group>"; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Fintunes/Images.xcassets; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = JellyfinAudioPlayer/Info.plist; sourceTree = "<group>"; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Fintunes/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = JellyfinAudioPlayer/main.m; sourceTree = "<group>"; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Fintunes/main.m; sourceTree = "<group>"; };
2710519FCC41B05FDE6738DF /* Pods-JellyfinAudioPlayer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer.release.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer.release.xcconfig"; sourceTree = "<group>"; };
39572B38534BBDBB596C8C95 /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.release.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.release.xcconfig"; sourceTree = "<group>"; };
4B4A0465FF364579B28CF5D7 /* Inter-VariableFont_slnt,wght.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-VariableFont_slnt,wght.ttf"; path = "../src/assets/fonts/Inter-VariableFont_slnt,wght.ttf"; sourceTree = "<group>"; }; 4B4A0465FF364579B28CF5D7 /* Inter-VariableFont_slnt,wght.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-VariableFont_slnt,wght.ttf"; path = "../src/assets/fonts/Inter-VariableFont_slnt,wght.ttf"; sourceTree = "<group>"; };
4FA1B23B2550A94B007A035E /* JellyfinAudioPlayer-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JellyfinAudioPlayer-Bridging-Header.h"; sourceTree = "<group>"; }; 4FA1B23B2550A94B007A035E /* Fintunes-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Fintunes-Bridging-Header.h"; sourceTree = "<group>"; };
4FA1B23C2550A94C007A035E /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; }; 4FA1B23C2550A94C007A035E /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
590BEA7DE65819C5B5FDAD06 /* Pods-JellyfinAudioPlayer-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-tvOSTests/Pods-JellyfinAudioPlayer-tvOSTests.release.xcconfig"; sourceTree = "<group>"; }; 5370B45C5DDCD952C6569B8D /* Pods-Fintunes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fintunes.debug.xcconfig"; path = "Target Support Files/Pods-Fintunes/Pods-Fintunes.debug.xcconfig"; sourceTree = "<group>"; };
71370E61E2CC6BD9372ADCF3 /* libPods-JellyfinAudioPlayer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JellyfinAudioPlayer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7D43C7610851B9666193E3F6 /* libPods-Fintunes-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Fintunes-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
7D43C7610851B9666193E3F6 /* libPods-JellyfinAudioPlayer-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JellyfinAudioPlayer-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8EBC468D2DE6EB8FF02B72B7 /* libPods-Fintunes-FintunesTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Fintunes-FintunesTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
842AB597D56E84A4ACDC4735 /* libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; AB393FC92857CC8400773469 /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = "<group>"; };
86AD8F7165272727927424B9 /* Pods-JellyfinAudioPlayer-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-tvOSTests/Pods-JellyfinAudioPlayer-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; }; AB4A8DFB2857C8DA005A1ED0 /* FintunesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FintunesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
8DAD3DCD6450C4255A20940E /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.debug.xcconfig"; sourceTree = "<group>"; }; AB4A8DFD2857C8DA005A1ED0 /* FintunesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FintunesUITests.swift; sourceTree = "<group>"; };
B179EFCC51AF0F281E73F0B8 /* Pods-JellyfinAudioPlayer-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-tvOS.release.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-tvOS/Pods-JellyfinAudioPlayer-tvOS.release.xcconfig"; sourceTree = "<group>"; }; AFAE700A256C6B0ED0D20FE3 /* Pods-Fintunes-FintunesTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fintunes-FintunesTests.release.xcconfig"; path = "Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests.release.xcconfig"; sourceTree = "<group>"; };
D21A80A7EA4E141F298B3249 /* Pods-JellyfinAudioPlayer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer.debug.xcconfig"; sourceTree = "<group>"; }; B20CBCFF11E124551F286B84 /* Pods-Fintunes-FintunesTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fintunes-FintunesTests.debug.xcconfig"; path = "Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests.debug.xcconfig"; sourceTree = "<group>"; };
DEB1E90737138C4BD6E5323D /* Pods-JellyfinAudioPlayer-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinAudioPlayer-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinAudioPlayer-tvOS/Pods-JellyfinAudioPlayer-tvOS.debug.xcconfig"; sourceTree = "<group>"; }; E35451F7979C52C1692C4C9F /* libPods-Fintunes-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Fintunes-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
E35451F7979C52C1692C4C9F /* libPods-JellyfinAudioPlayer-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-JellyfinAudioPlayer-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@@ -63,7 +68,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
463612208457EBB4B723000A /* libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a in Frameworks */, 38B3606A2D29107567360ACF /* libPods-Fintunes-FintunesTests.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -71,31 +76,21 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
A807E2BB233D6F9347D8A95C /* libPods-JellyfinAudioPlayer.a in Frameworks */, D7439709FB704B4FE23C538F /* libPods-Fintunes.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
AB4A8DF82857C8DA005A1ED0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
00E356EF1AD99517003FC87E /* JellyfinAudioPlayerTests */ = { 13B07FAE1A68108700A75B9A /* Fintunes */ = {
isa = PBXGroup;
children = (
00E356F21AD99517003FC87E /* JellyfinAudioPlayerTests.m */,
00E356F01AD99517003FC87E /* Supporting Files */,
);
path = JellyfinAudioPlayerTests;
sourceTree = "<group>";
};
00E356F01AD99517003FC87E /* Supporting Files */ = {
isa = PBXGroup;
children = (
00E356F11AD99517003FC87E /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
13B07FAE1A68108700A75B9A /* JellyfinAudioPlayer */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
@@ -105,9 +100,9 @@
13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
13B07FB71A68108700A75B9A /* main.m */, 13B07FB71A68108700A75B9A /* main.m */,
4FA1B23C2550A94C007A035E /* File.swift */, 4FA1B23C2550A94C007A035E /* File.swift */,
4FA1B23B2550A94B007A035E /* JellyfinAudioPlayer-Bridging-Header.h */, 4FA1B23B2550A94B007A035E /* Fintunes-Bridging-Header.h */,
); );
name = JellyfinAudioPlayer; name = Fintunes;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
@@ -115,10 +110,10 @@
children = ( children = (
ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
ED2971642150620600B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
71370E61E2CC6BD9372ADCF3 /* libPods-JellyfinAudioPlayer.a */, E35451F7979C52C1692C4C9F /* libPods-Fintunes-tvOS.a */,
842AB597D56E84A4ACDC4735 /* libPods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.a */, 7D43C7610851B9666193E3F6 /* libPods-Fintunes-tvOSTests.a */,
E35451F7979C52C1692C4C9F /* libPods-JellyfinAudioPlayer-tvOS.a */, 12335560B9820FD5AD98AB8F /* libPods-Fintunes.a */,
7D43C7610851B9666193E3F6 /* libPods-JellyfinAudioPlayer-tvOSTests.a */, 8EBC468D2DE6EB8FF02B72B7 /* libPods-Fintunes-FintunesTests.a */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -126,14 +121,10 @@
46001D7383D71A837AAF6E07 /* Pods */ = { 46001D7383D71A837AAF6E07 /* Pods */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D21A80A7EA4E141F298B3249 /* Pods-JellyfinAudioPlayer.debug.xcconfig */, 5370B45C5DDCD952C6569B8D /* Pods-Fintunes.debug.xcconfig */,
2710519FCC41B05FDE6738DF /* Pods-JellyfinAudioPlayer.release.xcconfig */, 0973197F4BDB99413C326AD0 /* Pods-Fintunes.release.xcconfig */,
8DAD3DCD6450C4255A20940E /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.debug.xcconfig */, B20CBCFF11E124551F286B84 /* Pods-Fintunes-FintunesTests.debug.xcconfig */,
39572B38534BBDBB596C8C95 /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.release.xcconfig */, AFAE700A256C6B0ED0D20FE3 /* Pods-Fintunes-FintunesTests.release.xcconfig */,
DEB1E90737138C4BD6E5323D /* Pods-JellyfinAudioPlayer-tvOS.debug.xcconfig */,
B179EFCC51AF0F281E73F0B8 /* Pods-JellyfinAudioPlayer-tvOS.release.xcconfig */,
86AD8F7165272727927424B9 /* Pods-JellyfinAudioPlayer-tvOSTests.debug.xcconfig */,
590BEA7DE65819C5B5FDAD06 /* Pods-JellyfinAudioPlayer-tvOSTests.release.xcconfig */,
); );
path = Pods; path = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -148,9 +139,9 @@
83CBB9F61A601CBA00E9B192 = { 83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
13B07FAE1A68108700A75B9A /* JellyfinAudioPlayer */, 13B07FAE1A68108700A75B9A /* Fintunes */,
832341AE1AAA6A7D00B99B32 /* Libraries */, 832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* JellyfinAudioPlayerTests */, AB4A8DFC2857C8DA005A1ED0 /* FintunesUITests */,
83CBBA001A601CBA00E9B192 /* Products */, 83CBBA001A601CBA00E9B192 /* Products */,
2D16E6871FA4F8E400B85C8A /* Frameworks */, 2D16E6871FA4F8E400B85C8A /* Frameworks */,
46001D7383D71A837AAF6E07 /* Pods */, 46001D7383D71A837AAF6E07 /* Pods */,
@@ -164,12 +155,22 @@
83CBBA001A601CBA00E9B192 /* Products */ = { 83CBBA001A601CBA00E9B192 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
13B07F961A680F5B00A75B9A /* Jellyfin Player.app */, 13B07F961A680F5B00A75B9A /* Fintunes.app */,
00E356EE1AD99517003FC87E /* JellyfinAudioPlayerTests.xctest */, 00E356EE1AD99517003FC87E /* FintunesTests.xctest */,
AB4A8DFB2857C8DA005A1ED0 /* FintunesUITests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
AB4A8DFC2857C8DA005A1ED0 /* FintunesUITests */ = {
isa = PBXGroup;
children = (
AB4A8DFD2857C8DA005A1ED0 /* FintunesUITests.swift */,
AB393FC92857CC8400773469 /* SnapshotHelper.swift */,
);
path = FintunesUITests;
sourceTree = "<group>";
};
CFCEB457E84E4C5195253CD7 /* Resources */ = { CFCEB457E84E4C5195253CD7 /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -181,9 +182,9 @@
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
00E356ED1AD99517003FC87E /* JellyfinAudioPlayerTests */ = { 00E356ED1AD99517003FC87E /* FintunesTests */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "JellyfinAudioPlayerTests" */; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FintunesTests" */;
buildPhases = ( buildPhases = (
BBD71961640F29097BE9932A /* [CP] Check Pods Manifest.lock */, BBD71961640F29097BE9932A /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */, 00E356EA1AD99517003FC87E /* Sources */,
@@ -197,14 +198,14 @@
dependencies = ( dependencies = (
00E356F51AD99517003FC87E /* PBXTargetDependency */, 00E356F51AD99517003FC87E /* PBXTargetDependency */,
); );
name = JellyfinAudioPlayerTests; name = FintunesTests;
productName = JellyfinAudioPlayerTests; productName = FintunesTests;
productReference = 00E356EE1AD99517003FC87E /* JellyfinAudioPlayerTests.xctest */; productReference = 00E356EE1AD99517003FC87E /* FintunesTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test"; productType = "com.apple.product-type.bundle.unit-test";
}; };
13B07F861A680F5B00A75B9A /* JellyfinAudioPlayer */ = { 13B07F861A680F5B00A75B9A /* Fintunes */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "JellyfinAudioPlayer" */; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Fintunes" */;
buildPhases = ( buildPhases = (
E68FAF43791AC236CF4BF8CB /* [CP] Check Pods Manifest.lock */, E68FAF43791AC236CF4BF8CB /* [CP] Check Pods Manifest.lock */,
FD10A7F022414F080027D42C /* Start Packager */, FD10A7F022414F080027D42C /* Start Packager */,
@@ -219,17 +220,36 @@
); );
dependencies = ( dependencies = (
); );
name = JellyfinAudioPlayer; name = Fintunes;
productName = JellyfinAudioPlayer; productName = Fintunes;
productReference = 13B07F961A680F5B00A75B9A /* Jellyfin Player.app */; productReference = 13B07F961A680F5B00A75B9A /* Fintunes.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
AB4A8DFA2857C8DA005A1ED0 /* FintunesUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = AB4A8E052857C8DB005A1ED0 /* Build configuration list for PBXNativeTarget "FintunesUITests" */;
buildPhases = (
AB4A8DF72857C8DA005A1ED0 /* Sources */,
AB4A8DF82857C8DA005A1ED0 /* Frameworks */,
AB4A8DF92857C8DA005A1ED0 /* Resources */,
);
buildRules = (
);
dependencies = (
AB4A8E022857C8DA005A1ED0 /* PBXTargetDependency */,
);
name = FintunesUITests;
productName = FintunesUITests;
productReference = AB4A8DFB2857C8DA005A1ED0 /* FintunesUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
/* Begin PBXProject section */ /* Begin PBXProject section */
83CBB9F71A601CBA00E9B192 /* Project object */ = { 83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 1340;
LastUpgradeCheck = 1130; LastUpgradeCheck = 1130;
TargetAttributes = { TargetAttributes = {
00E356ED1AD99517003FC87E = { 00E356ED1AD99517003FC87E = {
@@ -243,9 +263,15 @@
LastSwiftMigration = 1210; LastSwiftMigration = 1210;
ProvisioningStyle = Automatic; ProvisioningStyle = Automatic;
}; };
AB4A8DFA2857C8DA005A1ED0 = {
CreatedOnToolsVersion = 13.4.1;
DevelopmentTeam = 238P3C58WC;
ProvisioningStyle = Automatic;
TestTargetID = 13B07F861A680F5B00A75B9A;
};
}; };
}; };
buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "JellyfinAudioPlayer" */; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Fintunes" */;
compatibilityVersion = "Xcode 3.2"; compatibilityVersion = "Xcode 3.2";
developmentRegion = en; developmentRegion = en;
hasScannedForEncodings = 0; hasScannedForEncodings = 0;
@@ -258,8 +284,9 @@
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
targets = ( targets = (
13B07F861A680F5B00A75B9A /* JellyfinAudioPlayer */, 13B07F861A680F5B00A75B9A /* Fintunes */,
00E356ED1AD99517003FC87E /* JellyfinAudioPlayerTests */, 00E356ED1AD99517003FC87E /* FintunesTests */,
AB4A8DFA2857C8DA005A1ED0 /* FintunesUITests */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@@ -282,6 +309,13 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
AB4A8DF92857C8DA005A1ED0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
@@ -300,7 +334,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; shellScript = "set -e\nexport SENTRY_PROPERTIES=sentry.properties\nexport EXTRA_PACKAGER_ARGS=\"--sourcemap-output $DERIVED_FILE_DIR/main.jsbundle.map\"\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\nSENTRY_CLI_PATH=\"../node_modules/@sentry/cli/bin/sentry-cli\"\n/bin/sh -c \"$WITH_ENVIRONMENT \\\"$SENTRY_CLI_PATH react-native xcode $REACT_NATIVE_XCODE\\\"\"";
}; };
2917566AA57EE087FC9FCCE9 /* [CP] Embed Pods Frameworks */ = { 2917566AA57EE087FC9FCCE9 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
@@ -308,20 +342,22 @@
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer-frameworks.sh", "${PODS_ROOT}/Target Support Files/Pods-Fintunes/Pods-Fintunes-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer-frameworks.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fintunes/Pods-Fintunes-frameworks.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
A02366876E56A727F566EC3A /* [CP] Embed Pods Frameworks */ = { A02366876E56A727F566EC3A /* [CP] Embed Pods Frameworks */ = {
@@ -330,20 +366,22 @@
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests-frameworks.sh", "${PODS_ROOT}/Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests-frameworks.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests-frameworks.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
B9FB8FC65CEFF9AFAC71127E /* [CP] Copy Pods Resources */ = { B9FB8FC65CEFF9AFAC71127E /* [CP] Copy Pods Resources */ = {
@@ -352,7 +390,7 @@
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer-resources.sh", "${PODS_ROOT}/Target Support Files/Pods-Fintunes/Pods-Fintunes-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
); );
name = "[CP] Copy Pods Resources"; name = "[CP] Copy Pods Resources";
@@ -361,7 +399,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer/Pods-JellyfinAudioPlayer-resources.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fintunes/Pods-Fintunes-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
BBD71961640F29097BE9932A /* [CP] Check Pods Manifest.lock */ = { BBD71961640F29097BE9932A /* [CP] Check Pods Manifest.lock */ = {
@@ -379,7 +417,7 @@
outputFileListPaths = ( outputFileListPaths = (
); );
outputPaths = ( outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests-checkManifestLockResult.txt", "$(DERIVED_FILE_DIR)/Pods-Fintunes-FintunesTests-checkManifestLockResult.txt",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
@@ -392,7 +430,7 @@
files = ( files = (
); );
inputPaths = ( inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests-resources.sh", "${PODS_ROOT}/Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
); );
name = "[CP] Copy Pods Resources"; name = "[CP] Copy Pods Resources";
@@ -401,7 +439,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests/Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests-resources.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Fintunes-FintunesTests/Pods-Fintunes-FintunesTests-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
E68FAF43791AC236CF4BF8CB /* [CP] Check Pods Manifest.lock */ = { E68FAF43791AC236CF4BF8CB /* [CP] Check Pods Manifest.lock */ = {
@@ -419,7 +457,7 @@
outputFileListPaths = ( outputFileListPaths = (
); );
outputPaths = ( outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-JellyfinAudioPlayer-checkManifestLockResult.txt", "$(DERIVED_FILE_DIR)/Pods-Fintunes-checkManifestLockResult.txt",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
@@ -452,7 +490,6 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
00E356F31AD99517003FC87E /* JellyfinAudioPlayerTests.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -466,14 +503,28 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
AB4A8DF72857C8DA005A1ED0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
AB4A8DFE2857C8DA005A1ED0 /* FintunesUITests.swift in Sources */,
AB393FCA2857CC8400773469 /* SnapshotHelper.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */ /* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = 13B07F861A680F5B00A75B9A /* JellyfinAudioPlayer */; target = 13B07F861A680F5B00A75B9A /* Fintunes */;
targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
}; };
AB4A8E022857C8DA005A1ED0 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 13B07F861A680F5B00A75B9A /* Fintunes */;
targetProxy = AB4A8E012857C8DA005A1ED0 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */ /* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */ /* Begin PBXVariantGroup section */
@@ -483,7 +534,7 @@
13B07FB21A68108700A75B9A /* Base */, 13B07FB21A68108700A75B9A /* Base */,
); );
name = LaunchScreen.xib; name = LaunchScreen.xib;
path = JellyfinAudioPlayer; path = Fintunes;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
/* End PBXVariantGroup section */ /* End PBXVariantGroup section */
@@ -491,7 +542,7 @@
/* Begin XCBuildConfiguration section */ /* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = { 00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 8DAD3DCD6450C4255A20940E /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.debug.xcconfig */; baseConfigurationReference = B20CBCFF11E124551F286B84 /* Pods-Fintunes-FintunesTests.debug.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
@@ -501,7 +552,7 @@
"DEBUG=1", "DEBUG=1",
"$(inherited)", "$(inherited)",
); );
INFOPLIST_FILE = JellyfinAudioPlayerTests/Info.plist; INFOPLIST_FILE = FintunesTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
@@ -515,20 +566,20 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/JellyfinAudioPlayer.app/JellyfinAudioPlayer"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Fintunes.app/Fintunes";
}; };
name = Debug; name = Debug;
}; };
00E356F71AD99517003FC87E /* Release */ = { 00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 39572B38534BBDBB596C8C95 /* Pods-JellyfinAudioPlayer-JellyfinAudioPlayerTests.release.xcconfig */; baseConfigurationReference = AFAE700A256C6B0ED0D20FE3 /* Pods-Fintunes-FintunesTests.release.xcconfig */;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)"; BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEVELOPMENT_TEAM = 238P3C58WC; DEVELOPMENT_TEAM = 238P3C58WC;
INFOPLIST_FILE = JellyfinAudioPlayerTests/Info.plist; INFOPLIST_FILE = FintunesTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0; IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
@@ -544,39 +595,40 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb"; PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/JellyfinAudioPlayer.app/JellyfinAudioPlayer"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Fintunes.app/Fintunes";
}; };
name = Release; name = Release;
}; };
13B07F941A680F5B00A75B9A /* Debug */ = { 13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = D21A80A7EA4E141F298B3249 /* Pods-JellyfinAudioPlayer.debug.xcconfig */; baseConfigurationReference = 5370B45C5DDCD952C6569B8D /* Pods-Fintunes.debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 38; CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = 238P3C58WC; DEVELOPMENT_TEAM = 238P3C58WC;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
GCC_PREPROCESSOR_DEFINITIONS = ( GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)", "$(inherited)",
"FB_SONARKIT_ENABLED=1", "FB_SONARKIT_ENABLED=1",
); );
INFOPLIST_FILE = JellyfinAudioPlayer/Info.plist; INFOPLIST_FILE = Fintunes/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift", "$(SDKROOT)/usr/lib/swift",
"$(inherited)", "$(inherited)",
); );
MARKETING_VERSION = 2.0.0;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
"-lc++", "-lc++",
); );
PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.jellyfinaudioplayer; PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.jellyfinaudioplayer;
PRODUCT_NAME = "Jellyfin Player"; PRODUCT_NAME = Fintunes;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "JellyfinAudioPlayer-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Fintunes-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
@@ -585,30 +637,31 @@
}; };
13B07F951A680F5B00A75B9A /* Release */ = { 13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
baseConfigurationReference = 2710519FCC41B05FDE6738DF /* Pods-JellyfinAudioPlayer.release.xcconfig */; baseConfigurationReference = 0973197F4BDB99413C326AD0 /* Pods-Fintunes.release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 38; CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = 238P3C58WC; DEVELOPMENT_TEAM = 238P3C58WC;
INFOPLIST_FILE = JellyfinAudioPlayer/Info.plist; INFOPLIST_FILE = Fintunes/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = ( LIBRARY_SEARCH_PATHS = (
"$(SDKROOT)/usr/lib/swift", "$(SDKROOT)/usr/lib/swift",
"$(inherited)", "$(inherited)",
); );
MARKETING_VERSION = 2.0.0;
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
"-ObjC", "-ObjC",
"-lc++", "-lc++",
); );
PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.jellyfinaudioplayer; PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.jellyfinaudioplayer;
PRODUCT_NAME = "Jellyfin Player"; PRODUCT_NAME = Fintunes;
PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb"; PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "JellyfinAudioPlayer-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Fintunes-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@@ -619,7 +672,7 @@
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
@@ -647,7 +700,7 @@
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
@@ -672,7 +725,8 @@
); );
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "Jellyfin Player"; PRODUCT_NAME = Fintunes;
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos; SDKROOT = iphoneos;
}; };
name = Debug; name = Debug;
@@ -682,7 +736,7 @@
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "c++17";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_ARC = YES;
@@ -710,7 +764,7 @@
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -727,16 +781,80 @@
"\"$(inherited)\"", "\"$(inherited)\"",
); );
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
PRODUCT_NAME = "Jellyfin Player"; PRODUCT_NAME = Fintunes;
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos; SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES; VALIDATE_PRODUCT = YES;
}; };
name = Release; name = Release;
}; };
AB4A8E032857C8DB005A1ED0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 6;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = 238P3C58WC;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.FintunesUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = Fintunes;
};
name = Debug;
};
AB4A8E042857C8DB005A1ED0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 6;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 238P3C58WC;
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
MARKETING_VERSION = 1.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = nl.moeilijkedingen.FintunesUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "915c5213-22f6-4f9d-8065-2a06300f9bfb";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = Fintunes;
};
name = Release;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "JellyfinAudioPlayerTests" */ = { 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FintunesTests" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
00E356F61AD99517003FC87E /* Debug */, 00E356F61AD99517003FC87E /* Debug */,
@@ -745,7 +863,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "JellyfinAudioPlayer" */ = { 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Fintunes" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
13B07F941A680F5B00A75B9A /* Debug */, 13B07F941A680F5B00A75B9A /* Debug */,
@@ -754,7 +872,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "JellyfinAudioPlayer" */ = { 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Fintunes" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
83CBBA201A601CBA00E9B192 /* Debug */, 83CBBA201A601CBA00E9B192 /* Debug */,
@@ -763,6 +881,15 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
AB4A8E052857C8DB005A1ED0 /* Build configuration list for PBXNativeTarget "FintunesUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
AB4A8E032857C8DB005A1ED0 /* Debug */,
AB4A8E042857C8DB005A1ED0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */ /* End XCConfigurationList section */
}; };
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@@ -15,9 +15,23 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Jellyfin Player.app" BuildableName = "Fintunes.app"
BlueprintName = "JellyfinAudioPlayer" BlueprintName = "Fintunes"
ReferencedContainer = "container:JellyfinAudioPlayer.xcodeproj"> ReferencedContainer = "container:Fintunes.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "AB4A8DFA2857C8DA005A1ED0"
BuildableName = "FintunesUITests.xctest"
BlueprintName = "FintunesUITests"
ReferencedContainer = "container:Fintunes.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
</BuildActionEntries> </BuildActionEntries>
@@ -32,10 +46,10 @@
skipped = "NO"> skipped = "NO">
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "00E356ED1AD99517003FC87E" BlueprintIdentifier = "AB4A8DFA2857C8DA005A1ED0"
BuildableName = "JellyfinAudioPlayerTests.xctest" BuildableName = "FintunesUITests.xctest"
BlueprintName = "JellyfinAudioPlayerTests" BlueprintName = "FintunesUITests"
ReferencedContainer = "container:JellyfinAudioPlayer.xcodeproj"> ReferencedContainer = "container:Fintunes.xcodeproj">
</BuildableReference> </BuildableReference>
</TestableReference> </TestableReference>
</Testables> </Testables>
@@ -55,9 +69,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Jellyfin Player.app" BuildableName = "Fintunes.app"
BlueprintName = "JellyfinAudioPlayer" BlueprintName = "Fintunes"
ReferencedContainer = "container:JellyfinAudioPlayer.xcodeproj"> ReferencedContainer = "container:Fintunes.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
</LaunchAction> </LaunchAction>
@@ -72,9 +86,9 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "13B07F861A680F5B00A75B9A" BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
BuildableName = "Jellyfin Player.app" BuildableName = "Fintunes.app"
BlueprintName = "JellyfinAudioPlayer" BlueprintName = "Fintunes"
ReferencedContainer = "container:JellyfinAudioPlayer.xcodeproj"> ReferencedContainer = "container:Fintunes.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
</ProfileAction> </ProfileAction>

View File

@@ -2,7 +2,7 @@
<Workspace <Workspace
version = "1.0"> version = "1.0">
<FileRef <FileRef
location = "group:JellyfinAudioPlayer.xcodeproj"> location = "group:Fintunes.xcodeproj">
</FileRef> </FileRef>
<FileRef <FileRef
location = "group:Pods/Pods.xcodeproj"> location = "group:Pods/Pods.xcodeproj">

View File

@@ -2,7 +2,7 @@
<!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>PreviewsEnabled</key> <key>IDEDidComputeMac32BitWarning</key>
<false/> <true/>
</dict> </dict>
</plist> </plist>

View File

@@ -41,7 +41,7 @@
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
#endif #endif
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"JellyfinAudioPlayer", nil); UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Fintunes", nil);
if (@available(iOS 13.0, *)) { if (@available(iOS 13.0, *)) {
rootView.backgroundColor = [UIColor systemBackgroundColor]; rootView.backgroundColor = [UIColor systemBackgroundColor];

View File

@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>en</string> <string>en</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string> <string>Fintunes</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -17,11 +17,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.2.6</string> <string>2.0.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>38</string> <string>6</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<true/> <true/>
<key>NSAppTransportSecurity</key> <key>NSAppTransportSecurity</key>
@@ -30,7 +30,11 @@
<true/> <true/>
</dict> </dict>
<key>NSLocationWhenInUseUsageDescription</key> <key>NSLocationWhenInUseUsageDescription</key>
<string/> <string></string>
<key>UIAppFonts</key>
<array>
<string>Inter-VariableFont_slnt,wght.ttf</string>
</array>
<key>UIBackgroundModes</key> <key>UIBackgroundModes</key>
<array> <array>
<string>audio</string> <string>audio</string>
@@ -50,9 +54,5 @@
</array> </array>
<key>UIViewControllerBasedStatusBarAppearance</key> <key>UIViewControllerBasedStatusBarAppearance</key>
<false/> <false/>
<key>UIAppFonts</key>
<array>
<string>Inter-VariableFont_slnt,wght.ttf</string>
</array>
</dict> </dict>
</plist> </plist>

View File

@@ -0,0 +1,61 @@
//
// FintunesUITests.swift
// FintunesUITests
//
// Created by Lei Nelissen on 13/06/2022.
//
import XCTest
class FintunesUITests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// In UI tests its important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
// Use XCTAssert and related functions to verify your tests produce the correct results.
snapshot("04RecentAlbums");
app.otherElements["all-albums"].tap();
snapshot("05AlbumsScreen");
app.buttons["search-tab"].tap();
app.textFields["search-input"].tap();
app.textFields["search-input"].typeText("bicep");
snapshot("03SearchScreen");
if app.otherElements["search-result-157a37e93a7aec945f8ea3107abb458a"].waitForExistence(timeout: 5) {
app.otherElements["search-result-157a37e93a7aec945f8ea3107abb458a"].tap();
app.otherElements["search-result-157a37e93a7aec945f8ea3107abb458a"].tap();
snapshot("02AlbumScreen");
}
if app.otherElements["play-album"].waitForExistence(timeout: 5) {
app.otherElements["play-album"].tap();
}
if app.otherElements["open-player-modal"].waitForExistence(timeout: 5) {
app.otherElements["open-player-modal"].tap();
snapshot("01PlayModal");
}
}
// func testLaunchPerformance() throws {
// if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
// // This measures how long it takes to launch your application.
// measure(metrics: [XCTApplicationLaunchMetric()]) {
// XCUIApplication().launch()
// }
// }
// }
}

View File

@@ -0,0 +1,309 @@
//
// SnapshotHelper.swift
// Example
//
// Created by Felix Krause on 10/8/15.
//
// -----------------------------------------------------
// IMPORTANT: When modifying this file, make sure to
// increment the version number at the very
// bottom of the file to notify users about
// the new SnapshotHelper.swift
// -----------------------------------------------------
import Foundation
import XCTest
var deviceLanguage = ""
var locale = ""
func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations)
}
func snapshot(_ name: String, waitForLoadingIndicator: Bool) {
if waitForLoadingIndicator {
Snapshot.snapshot(name)
} else {
Snapshot.snapshot(name, timeWaitingForIdle: 0)
}
}
/// - Parameters:
/// - name: The name of the snapshot
/// - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait.
func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
Snapshot.snapshot(name, timeWaitingForIdle: timeout)
}
enum SnapshotError: Error, CustomDebugStringConvertible {
case cannotFindSimulatorHomeDirectory
case cannotRunOnPhysicalDevice
var debugDescription: String {
switch self {
case .cannotFindSimulatorHomeDirectory:
return "Couldn't find simulator home location. Please, check SIMULATOR_HOST_HOME env variable."
case .cannotRunOnPhysicalDevice:
return "Can't use Snapshot on a physical device."
}
}
}
@objcMembers
open class Snapshot: NSObject {
static var app: XCUIApplication?
static var waitForAnimations = true
static var cacheDirectory: URL?
static var screenshotsDirectory: URL? {
return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true)
}
open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
Snapshot.app = app
Snapshot.waitForAnimations = waitForAnimations
do {
let cacheDir = try getCacheDirectory()
Snapshot.cacheDirectory = cacheDir
setLanguage(app)
setLocale(app)
setLaunchArguments(app)
} catch let error {
NSLog(error.localizedDescription)
}
}
class func setLanguage(_ app: XCUIApplication) {
guard let cacheDirectory = self.cacheDirectory else {
NSLog("CacheDirectory is not set - probably running on a physical device?")
return
}
let path = cacheDirectory.appendingPathComponent("language.txt")
do {
let trimCharacterSet = CharacterSet.whitespacesAndNewlines
deviceLanguage = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"]
} catch {
NSLog("Couldn't detect/set language...")
}
}
class func setLocale(_ app: XCUIApplication) {
guard let cacheDirectory = self.cacheDirectory else {
NSLog("CacheDirectory is not set - probably running on a physical device?")
return
}
let path = cacheDirectory.appendingPathComponent("locale.txt")
do {
let trimCharacterSet = CharacterSet.whitespacesAndNewlines
locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
} catch {
NSLog("Couldn't detect/set locale...")
}
if locale.isEmpty && !deviceLanguage.isEmpty {
locale = Locale(identifier: deviceLanguage).identifier
}
if !locale.isEmpty {
app.launchArguments += ["-AppleLocale", "\"\(locale)\""]
}
}
class func setLaunchArguments(_ app: XCUIApplication) {
guard let cacheDirectory = self.cacheDirectory else {
NSLog("CacheDirectory is not set - probably running on a physical device?")
return
}
let path = cacheDirectory.appendingPathComponent("snapshot-launch_arguments.txt")
app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"]
do {
let launchArguments = try String(contentsOf: path, encoding: String.Encoding.utf8)
let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: [])
let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location: 0, length: launchArguments.count))
let results = matches.map { result -> String in
(launchArguments as NSString).substring(with: result.range)
}
app.launchArguments += results
} catch {
NSLog("Couldn't detect/set launch_arguments...")
}
}
open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
if timeout > 0 {
waitForLoadingIndicatorToDisappear(within: timeout)
}
NSLog("snapshot: \(name)") // more information about this, check out https://docs.fastlane.tools/actions/snapshot/#how-does-it-work
if Snapshot.waitForAnimations {
sleep(1) // Waiting for the animation to be finished (kind of)
}
#if os(OSX)
guard let app = self.app else {
NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
return
}
app.typeKey(XCUIKeyboardKeySecondaryFn, modifierFlags: [])
#else
guard self.app != nil else {
NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
return
}
let screenshot = XCUIScreen.main.screenshot()
#if os(iOS) && !targetEnvironment(macCatalyst)
let image = XCUIDevice.shared.orientation.isLandscape ? fixLandscapeOrientation(image: screenshot.image) : screenshot.image
#else
let image = screenshot.image
#endif
guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return }
do {
// The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices
let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ")
let range = NSRange(location: 0, length: simulator.count)
simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "")
let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png")
#if swift(<5.0)
try UIImagePNGRepresentation(image)?.write(to: path, options: .atomic)
#else
try image.pngData()?.write(to: path, options: .atomic)
#endif
} catch let error {
NSLog("Problem writing screenshot: \(name) to \(screenshotsDir)/\(simulator)-\(name).png")
NSLog(error.localizedDescription)
}
#endif
}
class func fixLandscapeOrientation(image: UIImage) -> UIImage {
#if os(watchOS)
return image
#else
if #available(iOS 10.0, *) {
let format = UIGraphicsImageRendererFormat()
format.scale = image.scale
let renderer = UIGraphicsImageRenderer(size: image.size, format: format)
return renderer.image { context in
image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
}
} else {
return image
}
#endif
}
class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) {
#if os(tvOS)
return
#endif
guard let app = self.app else {
NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
return
}
let networkLoadingIndicator = app.otherElements.deviceStatusBars.networkLoadingIndicators.element
let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator)
_ = XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout)
}
class func getCacheDirectory() throws -> URL {
let cachePath = "Library/Caches/tools.fastlane"
// on OSX config is stored in /Users/<username>/Library
// and on iOS/tvOS/WatchOS it's in simulator's home dir
#if os(OSX)
let homeDir = URL(fileURLWithPath: NSHomeDirectory())
return homeDir.appendingPathComponent(cachePath)
#elseif arch(i386) || arch(x86_64) || arch(arm64)
guard let simulatorHostHome = ProcessInfo().environment["SIMULATOR_HOST_HOME"] else {
throw SnapshotError.cannotFindSimulatorHomeDirectory
}
let homeDir = URL(fileURLWithPath: simulatorHostHome)
return homeDir.appendingPathComponent(cachePath)
#else
throw SnapshotError.cannotRunOnPhysicalDevice
#endif
}
}
private extension XCUIElementAttributes {
var isNetworkLoadingIndicator: Bool {
if hasAllowListedIdentifier { return false }
let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20)
let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3)
return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize
}
var hasAllowListedIdentifier: Bool {
let allowListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"]
return allowListedIdentifiers.contains(identifier)
}
func isStatusBar(_ deviceWidth: CGFloat) -> Bool {
if elementType == .statusBar { return true }
guard frame.origin == .zero else { return false }
let oldStatusBarSize = CGSize(width: deviceWidth, height: 20)
let newStatusBarSize = CGSize(width: deviceWidth, height: 44)
return [oldStatusBarSize, newStatusBarSize].contains(frame.size)
}
}
private extension XCUIElementQuery {
var networkLoadingIndicators: XCUIElementQuery {
let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in
guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
return element.isNetworkLoadingIndicator
}
return self.containing(isNetworkLoadingIndicator)
}
var deviceStatusBars: XCUIElementQuery {
guard let app = Snapshot.app else {
fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
}
let deviceWidth = app.windows.firstMatch.frame.width
let isStatusBar = NSPredicate { (evaluatedObject, _) in
guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
return element.isStatusBar(deviceWidth)
}
return self.containing(isStatusBar)
}
}
private extension CGFloat {
func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool {
return numberA...numberB ~= self
}
}
// Please don't remove the lines below
// They are used to detect outdated configuration files
// SnapshotHelperVersion [1.29]

View File

@@ -1,24 +0,0 @@
<?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">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.2.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>38</string>
</dict>
</plist>

View File

@@ -1,65 +0,0 @@
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import <React/RCTLog.h>
#import <React/RCTRootView.h>
#define TIMEOUT_SECONDS 600
#define TEXT_TO_LOOK_FOR @"Welcome to React"
@interface JellyfinAudioPlayerTests : XCTestCase
@end
@implementation JellyfinAudioPlayerTests
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
{
if (test(view)) {
return YES;
}
for (UIView *subview in [view subviews]) {
if ([self findSubviewInView:subview matching:test]) {
return YES;
}
}
return NO;
}
- (void)testRendersWelcomeScreen
{
UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
BOOL foundElement = NO;
__block NSString *redboxError = nil;
#ifdef DEBUG
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
#endif
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
}
#ifdef DEBUG
RCTSetLogFunction(RCTDefaultLogFunction);
#endif
XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
}
@end

View File

@@ -1,9 +1,10 @@
require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/react-native/node_modules/@react-native-community/cli-platform-ios/native_modules' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '12.0' platform :ios, '12.4'
install! 'cocoapods', :deterministic_uuids => false
target 'JellyfinAudioPlayer' do target 'Fintunes' do
config = use_native_modules! config = use_native_modules!
# Flags change depending on the env values. # Flags change depending on the env values.
@@ -11,26 +12,32 @@ target 'JellyfinAudioPlayer' do
use_react_native!( use_react_native!(
:path => config[:reactNativePath], :path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods # Hermes is now enabled by default. Disable by setting this flag to false.
:hermes_enabled => flags[:hermes_enabled], # Upcoming versions of React Native may rely on get_default_flags(), but
# we make it explicit here to aid in the React Native upgrade process.
:hermes_enabled => true,
:fabric_enabled => flags[:fabric_enabled], :fabric_enabled => flags[:fabric_enabled],
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
:flipper_configuration => FlipperConfiguration.enabled,
# An absolute path to your application root. # An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.." :app_path => "#{Pod::Config.instance.installation_root}/.."
) )
target 'JellyfinAudioPlayerTests' do target 'FintunesTests' do
inherit! :complete inherit! :complete
# Pods for testing # Pods for testing
end end
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
use_flipper!()
post_install do |installer| post_install do |installer|
react_native_post_install(installer) react_native_post_install(
installer,
# Set `mac_catalyst_enabled` to `true` in order to apply patches
# necessary for Mac Catalyst builds
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer)
end end
end end

View File

@@ -2,19 +2,19 @@ PODS:
- boost (1.76.0) - boost (1.76.0)
- CocoaAsyncSocket (7.6.5) - CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- FBLazyVector (0.68.2) - FBLazyVector (0.70.5)
- FBReactNativeSpec (0.68.2): - FBReactNativeSpec (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTRequired (= 0.68.2) - RCTRequired (= 0.70.5)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Core (= 0.68.2) - React-Core (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- Flipper (0.125.0): - Flipper (0.125.0):
- Flipper-Folly (~> 2.6) - Flipper-Folly (~> 2.6)
- Flipper-RSocket (~> 1.4) - Flipper-RSocket (~> 1.4)
- Flipper-Boost-iOSX (1.76.0.1.11) - Flipper-Boost-iOSX (1.76.0.1.11)
- Flipper-DoubleConversion (3.2.0) - Flipper-DoubleConversion (3.2.0.1)
- Flipper-Fmt (7.1.7) - Flipper-Fmt (7.1.7)
- Flipper-Folly (2.6.10): - Flipper-Folly (2.6.10):
- Flipper-Boost-iOSX - Flipper-Boost-iOSX
@@ -23,7 +23,7 @@ PODS:
- Flipper-Glog - Flipper-Glog
- libevent (~> 2.1.12) - libevent (~> 2.1.12)
- OpenSSL-Universal (= 1.1.1100) - OpenSSL-Universal (= 1.1.1100)
- Flipper-Glog (0.5.0.4) - Flipper-Glog (0.5.0.5)
- Flipper-PeerTalk (0.0.4) - Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.4.3): - Flipper-RSocket (1.4.3):
- Flipper-Folly (~> 2.6) - Flipper-Folly (~> 2.6)
@@ -73,350 +73,371 @@ PODS:
- FlipperKit/FlipperKitNetworkPlugin - FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1) - fmt (6.2.1)
- glog (0.3.5) - glog (0.3.5)
- hermes-engine (0.70.5)
- libevent (2.1.12) - libevent (2.1.12)
- libwebp (1.2.1): - libwebp (1.2.4):
- libwebp/demux (= 1.2.1) - libwebp/demux (= 1.2.4)
- libwebp/mux (= 1.2.1) - libwebp/mux (= 1.2.4)
- libwebp/webp (= 1.2.1) - libwebp/webp (= 1.2.4)
- libwebp/demux (1.2.1): - libwebp/demux (1.2.4):
- libwebp/webp - libwebp/webp
- libwebp/mux (1.2.1): - libwebp/mux (1.2.4):
- libwebp/demux - libwebp/demux
- libwebp/webp (1.2.1) - libwebp/webp (1.2.4)
- OpenSSL-Universal (1.1.1100) - OpenSSL-Universal (1.1.1100)
- RCT-Folly (2021.06.28.00-v2): - RCT-Folly (2021.07.22.00):
- boost - boost
- DoubleConversion - DoubleConversion
- fmt (~> 6.2.1) - fmt (~> 6.2.1)
- glog - glog
- RCT-Folly/Default (= 2021.06.28.00-v2) - RCT-Folly/Default (= 2021.07.22.00)
- RCT-Folly/Default (2021.06.28.00-v2): - RCT-Folly/Default (2021.07.22.00):
- boost - boost
- DoubleConversion - DoubleConversion
- fmt (~> 6.2.1) - fmt (~> 6.2.1)
- glog - glog
- RCTRequired (0.68.2) - RCT-Folly/Futures (2021.07.22.00):
- RCTTypeSafety (0.68.2): - boost
- FBLazyVector (= 0.68.2) - DoubleConversion
- RCT-Folly (= 2021.06.28.00-v2) - fmt (~> 6.2.1)
- RCTRequired (= 0.68.2) - glog
- React-Core (= 0.68.2) - libevent
- React (0.68.2): - RCTRequired (0.70.5)
- React-Core (= 0.68.2) - RCTTypeSafety (0.70.5):
- React-Core/DevSupport (= 0.68.2) - FBLazyVector (= 0.70.5)
- React-Core/RCTWebSocket (= 0.68.2) - RCTRequired (= 0.70.5)
- React-RCTActionSheet (= 0.68.2) - React-Core (= 0.70.5)
- React-RCTAnimation (= 0.68.2) - React (0.70.5):
- React-RCTBlob (= 0.68.2) - React-Core (= 0.70.5)
- React-RCTImage (= 0.68.2) - React-Core/DevSupport (= 0.70.5)
- React-RCTLinking (= 0.68.2) - React-Core/RCTWebSocket (= 0.70.5)
- React-RCTNetwork (= 0.68.2) - React-RCTActionSheet (= 0.70.5)
- React-RCTSettings (= 0.68.2) - React-RCTAnimation (= 0.70.5)
- React-RCTText (= 0.68.2) - React-RCTBlob (= 0.70.5)
- React-RCTVibration (= 0.68.2) - React-RCTImage (= 0.70.5)
- React-RCTLinking (= 0.70.5)
- React-RCTNetwork (= 0.70.5)
- React-RCTSettings (= 0.70.5)
- React-RCTText (= 0.70.5)
- React-RCTVibration (= 0.70.5)
- react-airplay (1.2.0): - react-airplay (1.2.0):
- React-Core - React-Core
- React-callinvoker (0.68.2) - React-bridging (0.70.5):
- React-Codegen (0.68.2): - RCT-Folly (= 2021.07.22.00)
- FBReactNativeSpec (= 0.68.2) - React-jsi (= 0.70.5)
- RCT-Folly (= 2021.06.28.00-v2) - React-callinvoker (0.70.5)
- RCTRequired (= 0.68.2) - React-Codegen (0.70.5):
- RCTTypeSafety (= 0.68.2) - FBReactNativeSpec (= 0.70.5)
- React-Core (= 0.68.2) - RCT-Folly (= 2021.07.22.00)
- React-jsi (= 0.68.2) - RCTRequired (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - React-Core (= 0.70.5)
- React-Core (0.68.2): - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.70.5)
- React-Core (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.68.2) - React-Core/Default (= 0.70.5)
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/CoreModulesHeaders (0.68.2): - React-Core/CoreModulesHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/Default (0.68.2): - React-Core/Default (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/DevSupport (0.68.2): - React-Core/DevSupport (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.68.2) - React-Core/Default (= 0.70.5)
- React-Core/RCTWebSocket (= 0.68.2) - React-Core/RCTWebSocket (= 0.70.5)
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-jsinspector (= 0.68.2) - React-jsinspector (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTActionSheetHeaders (0.68.2): - React-Core/RCTActionSheetHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTAnimationHeaders (0.68.2): - React-Core/RCTAnimationHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTBlobHeaders (0.68.2): - React-Core/RCTBlobHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTImageHeaders (0.68.2): - React-Core/RCTImageHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTLinkingHeaders (0.68.2): - React-Core/RCTLinkingHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTNetworkHeaders (0.68.2): - React-Core/RCTNetworkHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTSettingsHeaders (0.68.2): - React-Core/RCTSettingsHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTTextHeaders (0.68.2): - React-Core/RCTTextHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTVibrationHeaders (0.68.2): - React-Core/RCTVibrationHeaders (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-Core/RCTWebSocket (0.68.2): - React-Core/RCTWebSocket (0.70.5):
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Core/Default (= 0.68.2) - React-Core/Default (= 0.70.5)
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.68.2) - React-jsiexecutor (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- Yoga - Yoga
- React-CoreModules (0.68.2): - React-CoreModules (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/CoreModulesHeaders (= 0.68.2) - React-Core/CoreModulesHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-RCTImage (= 0.68.2) - React-RCTImage (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-cxxreact (0.68.2): - React-cxxreact (0.70.5):
- boost (= 1.76.0) - boost (= 1.76.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-callinvoker (= 0.68.2) - React-callinvoker (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-jsinspector (= 0.68.2) - React-jsinspector (= 0.70.5)
- React-logger (= 0.68.2) - React-logger (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- React-runtimeexecutor (= 0.68.2) - React-runtimeexecutor (= 0.70.5)
- React-jsi (0.68.2): - React-hermes (0.70.5):
- DoubleConversion
- glog
- hermes-engine
- RCT-Folly (= 2021.07.22.00)
- RCT-Folly/Futures (= 2021.07.22.00)
- React-cxxreact (= 0.70.5)
- React-jsi (= 0.70.5)
- React-jsiexecutor (= 0.70.5)
- React-jsinspector (= 0.70.5)
- React-perflogger (= 0.70.5)
- React-jsi (0.70.5):
- boost (= 1.76.0) - boost (= 1.76.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-jsi/Default (= 0.68.2) - React-jsi/Default (= 0.70.5)
- React-jsi/Default (0.68.2): - React-jsi/Default (0.70.5):
- boost (= 1.76.0) - boost (= 1.76.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-jsiexecutor (0.68.2): - React-jsiexecutor (0.70.5):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-cxxreact (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-perflogger (= 0.68.2) - React-perflogger (= 0.70.5)
- React-jsinspector (0.68.2) - React-jsinspector (0.70.5)
- React-logger (0.68.2): - React-logger (0.70.5):
- glog - glog
- react-native-blur (0.8.0): - react-native-blur (4.3.0):
- React
- react-native-flipper (0.146.0):
- React-Core - React-Core
- react-native-netinfo (8.3.0): - react-native-flipper (0.174.0):
- React-Core - React-Core
- react-native-safe-area-context (4.2.5): - react-native-netinfo (9.3.6):
- React-Core
- react-native-safe-area-context (4.4.1):
- RCT-Folly - RCT-Folly
- RCTRequired - RCTRequired
- RCTTypeSafety - RCTTypeSafety
- React - React-Core
- ReactCommon/turbomodule/core - ReactCommon/turbomodule/core
- react-native-skia (0.1.124): - react-native-skia (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-skia/Api (= 0.1.124) - react-native-skia/Api (= 0.1.157)
- react-native-skia/Jsi (= 0.1.124) - react-native-skia/Jsi (= 0.1.157)
- react-native-skia/RNSkia (= 0.1.124) - react-native-skia/RNSkia (= 0.1.157)
- react-native-skia/SkiaHeaders (= 0.1.124) - react-native-skia/SkiaHeaders (= 0.1.157)
- react-native-skia/Utils (= 0.1.124) - react-native-skia/Utils (= 0.1.157)
- react-native-skia/Api (0.1.124): - react-native-skia/Api (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-skia/Jsi (0.1.124): - react-native-skia/Jsi (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-skia/RNSkia (0.1.124): - react-native-skia/RNSkia (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-skia/SkiaHeaders (0.1.124): - react-native-skia/SkiaHeaders (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-skia/Utils (0.1.124): - react-native-skia/Utils (0.1.157):
- React - React
- React-callinvoker - React-callinvoker
- React-Core - React-Core
- react-native-track-player (2.2.0-rc3): - react-native-track-player (3.2.0):
- React-Core - React-Core
- SwiftAudioEx (= 0.14.7) - SwiftAudioEx (= 0.15.3)
- react-native-webview (11.18.2): - react-native-webview (11.23.1):
- React-Core - React-Core
- React-perflogger (0.68.2) - React-perflogger (0.70.5)
- React-RCTActionSheet (0.68.2): - React-RCTActionSheet (0.70.5):
- React-Core/RCTActionSheetHeaders (= 0.68.2) - React-Core/RCTActionSheetHeaders (= 0.70.5)
- React-RCTAnimation (0.68.2): - React-RCTAnimation (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTAnimationHeaders (= 0.68.2) - React-Core/RCTAnimationHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTBlob (0.68.2): - React-RCTBlob (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTBlobHeaders (= 0.68.2) - React-Core/RCTBlobHeaders (= 0.70.5)
- React-Core/RCTWebSocket (= 0.68.2) - React-Core/RCTWebSocket (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-RCTNetwork (= 0.68.2) - React-RCTNetwork (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTImage (0.68.2): - React-RCTImage (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTImageHeaders (= 0.68.2) - React-Core/RCTImageHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- React-RCTNetwork (= 0.68.2) - React-RCTNetwork (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTLinking (0.68.2): - React-RCTLinking (0.70.5):
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTLinkingHeaders (= 0.68.2) - React-Core/RCTLinkingHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTNetwork (0.68.2): - React-RCTNetwork (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTNetworkHeaders (= 0.68.2) - React-Core/RCTNetworkHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTSettings (0.68.2): - React-RCTSettings (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- RCTTypeSafety (= 0.68.2) - RCTTypeSafety (= 0.70.5)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTSettingsHeaders (= 0.68.2) - React-Core/RCTSettingsHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-RCTText (0.68.2): - React-RCTText (0.70.5):
- React-Core/RCTTextHeaders (= 0.68.2) - React-Core/RCTTextHeaders (= 0.70.5)
- React-RCTVibration (0.68.2): - React-RCTVibration (0.70.5):
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-Codegen (= 0.68.2) - React-Codegen (= 0.70.5)
- React-Core/RCTVibrationHeaders (= 0.68.2) - React-Core/RCTVibrationHeaders (= 0.70.5)
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (= 0.68.2) - ReactCommon/turbomodule/core (= 0.70.5)
- React-runtimeexecutor (0.68.2): - React-runtimeexecutor (0.70.5):
- React-jsi (= 0.68.2) - React-jsi (= 0.70.5)
- ReactCommon/turbomodule/core (0.68.2): - ReactCommon/turbomodule/core (0.70.5):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2021.06.28.00-v2) - RCT-Folly (= 2021.07.22.00)
- React-callinvoker (= 0.68.2) - React-bridging (= 0.70.5)
- React-Core (= 0.68.2) - React-callinvoker (= 0.70.5)
- React-cxxreact (= 0.68.2) - React-Core (= 0.70.5)
- React-jsi (= 0.68.2) - React-cxxreact (= 0.70.5)
- React-logger (= 0.68.2) - React-jsi (= 0.70.5)
- React-perflogger (= 0.68.2) - React-logger (= 0.70.5)
- RNCAsyncStorage (1.17.6): - React-perflogger (= 0.70.5)
- RNCAsyncStorage (1.17.11):
- React-Core - React-Core
- RNFastImage (8.5.11): - RNFastImage (8.6.3):
- React-Core - React-Core
- SDWebImage (~> 5.11.1) - SDWebImage (~> 5.11.1)
- SDWebImageWebPCoder (~> 0.8.4) - SDWebImageWebPCoder (~> 0.8.4)
- RNFS (2.20.0): - RNFS (2.20.0):
- React-Core - React-Core
- RNGestureHandler (2.4.2): - RNGestureHandler (2.8.0):
- React-Core - React-Core
- RNLocalize (2.2.1): - RNLocalize (2.2.4):
- React-Core - React-Core
- RNReanimated (2.8.0): - RNReanimated (2.12.0):
- DoubleConversion - DoubleConversion
- FBLazyVector - FBLazyVector
- FBReactNativeSpec - FBReactNativeSpec
@@ -443,25 +464,25 @@ PODS:
- React-RCTText - React-RCTText
- ReactCommon/turbomodule/core - ReactCommon/turbomodule/core
- Yoga - Yoga
- RNScreens (3.13.1): - RNScreens (3.18.2):
- React-Core - React-Core
- React-RCTImage - React-RCTImage
- RNSentry (3.4.2): - RNSentry (4.8.0):
- React-Core - React-Core
- Sentry (= 7.11.0) - Sentry (= 7.29.0)
- RNSVG (12.3.0): - RNSVG (13.5.0):
- React-Core - React-Core
- SDWebImage (5.11.1): - SDWebImage (5.11.1):
- SDWebImage/Core (= 5.11.1) - SDWebImage/Core (= 5.11.1)
- SDWebImage/Core (5.11.1) - SDWebImage/Core (5.11.1)
- SDWebImageWebPCoder (0.8.4): - SDWebImageWebPCoder (0.8.5):
- libwebp (~> 1.0) - libwebp (~> 1.0)
- SDWebImage/Core (~> 5.10) - SDWebImage/Core (~> 5.10)
- Sentry (7.11.0): - Sentry (7.29.0):
- Sentry/Core (= 7.11.0) - Sentry/Core (= 7.29.0)
- Sentry/Core (7.11.0) - Sentry/Core (7.29.0)
- SocketRocket (0.6.0) - SocketRocket (0.6.0)
- SwiftAudioEx (0.14.7) - SwiftAudioEx (0.15.3)
- Yoga (1.14.0) - Yoga (1.14.0)
- YogaKit (1.18.1): - YogaKit (1.18.1):
- Yoga (~> 1.14) - Yoga (~> 1.14)
@@ -473,10 +494,10 @@ DEPENDENCIES:
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- Flipper (= 0.125.0) - Flipper (= 0.125.0)
- Flipper-Boost-iOSX (= 1.76.0.1.11) - Flipper-Boost-iOSX (= 1.76.0.1.11)
- Flipper-DoubleConversion (= 3.2.0) - Flipper-DoubleConversion (= 3.2.0.1)
- Flipper-Fmt (= 7.1.7) - Flipper-Fmt (= 7.1.7)
- Flipper-Folly (= 2.6.10) - Flipper-Folly (= 2.6.10)
- Flipper-Glog (= 0.5.0.4) - Flipper-Glog (= 0.5.0.5)
- Flipper-PeerTalk (= 0.0.4) - Flipper-PeerTalk (= 0.0.4)
- Flipper-RSocket (= 1.4.3) - Flipper-RSocket (= 1.4.3)
- FlipperKit (= 0.125.0) - FlipperKit (= 0.125.0)
@@ -493,12 +514,15 @@ DEPENDENCIES:
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.125.0) - FlipperKit/SKIOSNetworkPlugin (= 0.125.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes/hermes-engine.podspec`)
- libevent (~> 2.1.12)
- OpenSSL-Universal (= 1.1.1100) - OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
- React (from `../node_modules/react-native/`) - React (from `../node_modules/react-native/`)
- react-airplay (from `../node_modules/react-airplay`) - react-airplay (from `../node_modules/react-airplay`)
- React-bridging (from `../node_modules/react-native/ReactCommon`)
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`) - React-Codegen (from `build/generated/ios`)
- React-Core (from `../node_modules/react-native/`) - React-Core (from `../node_modules/react-native/`)
@@ -506,6 +530,7 @@ DEPENDENCIES:
- React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
- React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
@@ -574,6 +599,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/React/FBReactNativeSpec" :path: "../node_modules/react-native/React/FBReactNativeSpec"
glog: glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes/hermes-engine.podspec"
RCT-Folly: RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired: RCTRequired:
@@ -584,6 +611,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/" :path: "../node_modules/react-native/"
react-airplay: react-airplay:
:path: "../node_modules/react-airplay" :path: "../node_modules/react-airplay"
React-bridging:
:path: "../node_modules/react-native/ReactCommon"
React-callinvoker: React-callinvoker:
:path: "../node_modules/react-native/ReactCommon/callinvoker" :path: "../node_modules/react-native/ReactCommon/callinvoker"
React-Codegen: React-Codegen:
@@ -594,6 +623,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/React/CoreModules" :path: "../node_modules/react-native/React/CoreModules"
React-cxxreact: React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact" :path: "../node_modules/react-native/ReactCommon/cxxreact"
React-hermes:
:path: "../node_modules/react-native/ReactCommon/hermes"
React-jsi: React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi" :path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor: React-jsiexecutor:
@@ -664,73 +695,76 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234 boost: a7c83b31436843459a1961bfd74b96033dc77234
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
FBLazyVector: a7a655862f6b09625d11c772296b01cd5164b648 FBLazyVector: affa4ba1bfdaac110a789192f4d452b053a86624
FBReactNativeSpec: 81ce99032d5b586fddd6a38d450f8595f7e04be4 FBReactNativeSpec: fe8b5f1429cfe83a8d72dc8ed61dc7704cac8745
Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 3d3d04a078d4f3a1b6c6916587f159dc11f232c4 Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
Flipper-Glog: 87bc98ff48de90cb5b0b5114ed3da79d85ee2dd4 Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541 Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 476ee3e89abb49e07f822b48323c51c57124b572 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
hermes-engine: 7fe5fc6ef707b7fdcb161b63898ec500e285653d
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda
RCTRequired: 3e917ea5377751094f38145fdece525aa90545a0 RCTRequired: 21229f84411088e5d8538f21212de49e46cc83e2
RCTTypeSafety: c43c072a4bd60feb49a9570b0517892b4305c45e RCTTypeSafety: 62eed57a32924b09edaaf170a548d1fc96223086
React: 176dd882de001854ced260fad41bb68a31aa4bd0 React: f0254ccddeeef1defe66c6b1bb9133a4f040792b
react-airplay: 8197767f12cae11a7623b1507d29a89482a720ad react-airplay: 8197767f12cae11a7623b1507d29a89482a720ad
React-callinvoker: c2864d1818d6e64928d2faf774a3800dfc38fe1f React-bridging: e46911666b7ec19538a620a221d6396cd293d687
React-Codegen: 98b6f97f0a7abf7d67e4ce435c77c05b7a95cf05 React-callinvoker: 66b62e2c34546546b2f21ab0b7670346410a2b53
React-Core: fdaa2916b1c893f39f02cff0476d1fb0cab1e352 React-Codegen: b6999435966df3bdf82afa3f319ba0d6f9a8532a
React-CoreModules: fd8705b80699ec36c2cdd635c2ce9d874b9cfdfc React-Core: dabbc9d1fe0a11d884e6ee1599789cf8eb1058a5
React-cxxreact: 1832d971f7b0cb2c7b943dc0ec962762c90c906e React-CoreModules: 5b6b7668f156f73a56420df9ec68ca2ec8f2e818
React-jsi: 72af715135abe8c3f0dcf3b2548b71d048b69a7e React-cxxreact: c7ca2baee46db22a30fce9e639277add3c3f6ad1
React-jsiexecutor: b7b553412f2ec768fe6c8f27cd6bafdb9d8719e6 React-hermes: c93e1d759ad5560dfea54d233013d7d2c725c286
React-jsinspector: c5989c77cb89ae6a69561095a61cce56a44ae8e8 React-jsi: a565dcb49130ed20877a9bb1105ffeecbb93d02d
React-logger: a0833912d93b36b791b7a521672d8ee89107aff1 React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c React-jsinspector: badd81696361249893a80477983e697aab3c1a34
react-native-flipper: 5b0191d194d8581f1a25efd07fd6048323dc9c04 React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c
react-native-netinfo: 3671b091c4843fda5e153612866ef4024b8f5d62 react-native-blur: 50c9feabacbc5f49b61337ebc32192c6be7ec3c3
react-native-safe-area-context: ebf8c413eb8b5f7c392a036a315eb7b46b96845f react-native-flipper: b269b4d4e1ec04f7f443f5edf15100a13e760bf0
react-native-skia: 69a2b9b42999325db20e18ef459bf4dfc1b51a69 react-native-netinfo: f80db8cac2151405633324cb645c60af098ee461
react-native-track-player: c4a4c5ec8090aec5b97a3f634dab8bdb657491a0 react-native-safe-area-context: 99b24a0c5acd0d5dcac2b1a7f18c49ea317be99a
react-native-webview: 8ec7ddf9eb4ddcd92b32cee7907efec19a9ec7cb react-native-skia: 7f9a3bd36c4247005e87005d912dcf6db76a6289
React-perflogger: a18b4f0bd933b8b24ecf9f3c54f9bf65180f3fe6 react-native-track-player: 0c26d981b5097910486cbbeb6d8f5352d41be069
React-RCTActionSheet: 547fe42fdb4b6089598d79f8e1d855d7c23e2162 react-native-webview: d33e2db8925d090871ffeb232dfa50cb3a727581
React-RCTAnimation: bc9440a1c37b06ae9ebbb532d244f607805c6034 React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931
React-RCTBlob: a1295c8e183756d7ef30ba6e8f8144dfe8a19215 React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247
React-RCTImage: a30d1ee09b1334067fbb6f30789aae2d7ac150c9 React-RCTAnimation: 578eebac706428e68466118e84aeacf3a282b4da
React-RCTLinking: ffc6d5b88d1cb9aca13c54c2ec6507fbf07f2ac4 React-RCTBlob: f47a0aa61e7d1fb1a0e13da832b0da934939d71a
React-RCTNetwork: f807a2facab6cf5cf36d592e634611de9cf12d81 React-RCTImage: 60f54b66eed65d86b6dffaf4733d09161d44929d
React-RCTSettings: 861806819226ed8332e6a8f90df2951a34bb3e7f React-RCTLinking: 91073205aeec4b29450ca79b709277319368ac9e
React-RCTText: f3fb464cc41a50fc7a1aba4deeb76a9ad8282cb9 React-RCTNetwork: ca91f2c9465a7e335c8a5fae731fd7f10572213b
React-RCTVibration: 79040b92bfa9c3c2d2cb4f57e981164ec7ab9374 React-RCTSettings: 1a9a5d01337d55c18168c1abe0f4a589167d134a
React-runtimeexecutor: b960b687d2dfef0d3761fbb187e01812ebab8b23 React-RCTText: c591e8bd9347a294d8416357ca12d779afec01d5
ReactCommon: 095366164a276d91ea704ce53cb03825c487a3f2 React-RCTVibration: 8e5c8c5d17af641f306d7380d8d0fe9b3c142c48
RNCAsyncStorage: 466b9df1a14bccda91da86e0b7d9a345d78e1673 React-runtimeexecutor: 7401c4a40f8728fd89df4a56104541b760876117
RNFastImage: 1f2cab428712a4baaf78d6169eaec7f622556dd7 ReactCommon: c9246996e73bf75a2c6c3ff15f1e16707cdc2da9
RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60
RNFastImage: 5c9c9fed9c076e521b3f509fe79e790418a544e8
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
RNGestureHandler: 61628a2c859172551aa2100d3e73d1e57878392f RNGestureHandler: 62232ba8f562f7dea5ba1b3383494eb5bf97a4d3
RNLocalize: cbcb55d0e19c78086ea4eea20e03fe8000bbbced RNLocalize: 0df7970cfc60389f00eb62fd7c097dc75af3fb4f
RNReanimated: 64573e25e078ae6bec03b891586d50b9ec284393 RNReanimated: 2a91e85fcd343f8af3c58d3425b99fdd285590a5
RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19 RNScreens: 34cc502acf1b916c582c60003dc3089fa01dc66d
RNSentry: 2cd1daa124b0d9fd0dfc2cb6094fdd168cb579bc RNSentry: db7fd7b66efda28885e4e904a8b5e7349aec61c1
RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8 RNSVG: 38ca962c970dbce1ca38991a5aebf26d163f9efb
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815 SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
Sentry: 0c5cd63d714187b4a39c331c1f0eb04ba7868341 Sentry: 4272663eb0eda312024d795ca3f5a562a8ce5e18
SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
SwiftAudioEx: 3a4024e48f3b3e45dac6bf2668d7adbe7b83f50e SwiftAudioEx: 83eabba2940924fc1c0d5cb0896049921365229c
Yoga: 99652481fcd320aefa4a7ef90095b95acd181952 Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 85fc028e296eda015f9e9d002b5f5c9dbff66827 PODFILE CHECKSUM: 9735b44bd285aab03d16f4b0a062c94bf98c573c
COCOAPODS: 1.11.3 COCOAPODS: 1.11.3

14609
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,85 +1,84 @@
{ {
"name": "JellyfinAudioPlayer", "name": "fintunes",
"version": "1.2.6", "version": "2.0.0",
"main": "src/index.js", "main": "src/index.js",
"private": true, "private": true,
"scripts": { "scripts": {
"android": "react-native run-android", "android": "react-native run-android",
"ios": "react-native run-ios --scheme \"Jellyfin Player\"", "ios": "react-native run-ios --scheme \"Fintunes\"",
"start": "react-native start", "start": "react-native start",
"test": "jest", "test": "jest",
"lint": "eslint . --ext .js,.jsx,.ts,.tsx && tsc --noEmit", "lint": "eslint . --ext .js,.jsx,.ts,.tsx && tsc --noEmit",
"build:ios": "react-native bundle --entry-file='index.ts' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'" "build:ios": "react-native bundle --entry-file='index.ts' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'"
}, },
"dependencies": { "dependencies": {
"@react-native-async-storage/async-storage": "^1.17.6", "@react-native-async-storage/async-storage": "^1.17.11",
"@react-native-community/blur": "^3.6.0", "@react-native-community/blur": "^4.3.0",
"@react-native-community/netinfo": "^8.3.0", "@react-native-community/netinfo": "^9.3.6",
"@react-navigation/bottom-tabs": "^6.3.1", "@react-navigation/bottom-tabs": "^6.4.0",
"@react-navigation/native": "^6.0.10", "@react-navigation/native": "^6.0.13",
"@react-navigation/native-stack": "^6.6.2", "@react-navigation/native-stack": "^6.9.1",
"@react-navigation/stack": "^6.2.1", "@react-navigation/stack": "^6.3.4",
"@reduxjs/toolkit": "^1.8.1", "@reduxjs/toolkit": "^1.9.0",
"@sentry/react-native": "^3.4.2", "@sentry/react-native": "^4.8.0",
"@shopify/react-native-skia": "^0.1.124", "@shopify/react-native-skia": "^0.1.157",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.188",
"date-fns": "^2.28.0", "date-fns": "^2.29.3",
"events": "^3.3.0", "events": "^3.3.0",
"fuse.js": "^6.6.2", "fuse.js": "^6.6.2",
"hermes-engine": "^0.11.0", "hermes-engine": "^0.11.0",
"i18n-js": "^3.9.2", "i18n-js": "^3.9.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"react": "^17.0.2", "react": "18.2.0",
"react-airplay": "^1.2.0", "react-airplay": "^1.2.0",
"react-native": "^0.68.2", "react-native": "0.70.5",
"react-native-collapsible": "^1.6.0", "react-native-collapsible": "^1.6.0",
"react-native-dotenv": "^3.3.1", "react-native-dotenv": "^3.4.2",
"react-native-fast-image": "^8.5.11", "react-native-fast-image": "^8.6.3",
"react-native-flipper": "^0.146.0", "react-native-flipper": "^0.174.0",
"react-native-fs": "^2.20.0", "react-native-fs": "^2.20.0",
"react-native-gesture-handler": "^2.4.2", "react-native-gesture-handler": "^2.8.0",
"react-native-localize": "^2.2.1", "react-native-localize": "^2.2.4",
"react-native-reanimated": "^2.8.0", "react-native-reanimated": "^2.12.0",
"react-native-safe-area-context": "^4.2.5", "react-native-safe-area-context": "^4.4.1",
"react-native-screens": "^3.13.1", "react-native-screens": "^3.18.2",
"react-native-shadow-2": "^6.0.5", "react-native-shadow-2": "^7.0.6",
"react-native-svg": "^12.3.0", "react-native-svg": "^13.5.0",
"react-native-svg-transformer": "^1.0.0", "react-native-svg-transformer": "^1.0.0",
"react-native-track-player": "^2.2.0-rc3", "react-native-track-player": "^3.2.0",
"react-native-webview": "^11.18.2", "react-native-webview": "^11.23.1",
"react-redux": "^8.0.1", "react-redux": "^8.0.5",
"redux": "^4.2.0", "redux": "^4.2.0",
"redux-flipper": "^2.0.1", "redux-flipper": "^2.0.2",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
"redux-persist": "^6.0.0", "redux-persist": "^6.0.0",
"styled-components": "^5.3.5" "styled-components": "^5.3.6"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.17.12", "@babel/core": "^7.20.2",
"@babel/runtime": "^7.17.9", "@babel/runtime": "^7.20.1",
"@react-native-community/eslint-config": "^3.0.2", "@react-native-community/eslint-config": "^3.2.0",
"@sentry/cli": "^2.0.4", "@sentry/cli": "^2.8.1",
"@types/i18n-js": "^3.8.2", "@types/i18n-js": "^3.8.3",
"@types/jest": "^27.5.1", "@types/jest": "^29.2.2",
"@types/react-native": "^0.67.7", "@types/react-native": "^0.70.6",
"@types/react-test-renderer": "^17.0.1", "@types/react-test-renderer": "^18.0.0",
"@types/redux-logger": "^3.0.9", "@types/redux-logger": "^3.0.9",
"@types/styled-components": "^5.1.25", "@types/styled-components": "^5.1.26",
"@types/styled-components-react-native": "^5.1.3", "@types/styled-components-react-native": "^5.2.0",
"@typescript-eslint/eslint-plugin": "^5.25.0", "@typescript-eslint/eslint-plugin": "^5.42.1",
"@typescript-eslint/parser": "^5.25.0", "@typescript-eslint/parser": "^5.42.1",
"babel-jest": "^28.1.0", "babel-jest": "^29.3.1",
"babel-plugin-module-resolver": "^4.1.0", "babel-plugin-module-resolver": "^4.1.0",
"eslint": "^8.15.0", "eslint": "^8.27.0",
"eslint-plugin-react-hooks": "^4.5.0", "eslint-plugin-react-hooks": "^4.6.0",
"jest": "^28.1.0", "jest": "^29.3.1",
"metro-config": "^0.70.3", "metro-config": "^0.73.3",
"metro-react-native-babel-preset": "^0.70.3", "metro-react-native-babel-preset": "^0.73.3",
"metro-react-native-babel-transformer": "^0.70.3", "metro-react-native-babel-transformer": "^0.73.3",
"react-dom": "^17.0.2", "react-native-codegen": "^0.72.0",
"react-native-codegen": "^0.69.1", "react-test-renderer": "^18.2.0",
"react-test-renderer": "^17.0.2", "typescript": "^4.8.4"
"typescript": "^4.6.4"
}, },
"jest": { "jest": {
"preset": "react-native", "preset": "react-native",
@@ -93,6 +92,6 @@
] ]
}, },
"overrides": { "overrides": {
"@types/react-native": "^0.67.7" "@types/react-native": "^0.70.6"
} }
} }

View File

@@ -47,7 +47,6 @@ export default function App(): JSX.Element {
Capability.Stop, Capability.Stop,
Capability.SeekTo, Capability.SeekTo,
], ],
stopWithApp: true
}); });
} }
setupTrackPlayer(); setupTrackPlayer();

View File

@@ -1,8 +1,8 @@
import { BlurView, BlurViewProperties } from '@react-native-community/blur'; import { BlurView, BlurViewProps } from '@react-native-community/blur';
import { THEME_COLOR } from 'CONSTANTS'; import { THEME_COLOR } from 'CONSTANTS';
import React, { PropsWithChildren } from 'react'; import React, { PropsWithChildren } from 'react';
import { useContext } from 'react'; import { useContext } from 'react';
import { ColorSchemeName, Platform, StyleSheet, useColorScheme, View } from 'react-native'; import { ColorSchemeName, Platform, StyleSheet, useColorScheme } from 'react-native';
const majorPlatformVersion = typeof Platform.Version === 'string' ? parseInt(Platform.Version, 10) : Platform.Version; const majorPlatformVersion = typeof Platform.Version === 'string' ? parseInt(Platform.Version, 10) : Platform.Version;
@@ -97,7 +97,7 @@ export function DefaultStylesProvider(props: DefaultStylesProviderProps) {
return props.children(defaultStyles); return props.children(defaultStyles);
} }
export function ColoredBlurView(props: PropsWithChildren<BlurViewProperties>) { export function ColoredBlurView(props: PropsWithChildren<BlurViewProps>) {
const scheme = useColorScheme(); const scheme = useColorScheme();
return Platform.OS === 'ios' ? ( return Platform.OS === 'ios' ? (
@@ -108,8 +108,14 @@ export function ColoredBlurView(props: PropsWithChildren<BlurViewProperties>) {
: scheme === 'dark' ? 'extraDark' : 'xlight' : scheme === 'dark' ? 'extraDark' : 'xlight'
} /> } />
) : ( ) : (
<View {...props} style={[ props.style, { <BlurView
backgroundColor: scheme === 'light' ? '#f6f6f6f6' : '#333333f6', {...props}
} ]} /> blurType={scheme === 'dark' ? 'dark' : 'light'}
blurAmount={10}
style={[ props.style, {
backgroundColor: scheme === 'light' ? '#f6f6f6bb' : '#333333bb',
borderRadius: 8
} ]}
/>
); );
} }

View File

@@ -10,6 +10,7 @@ const Container = styled.View<{ size: number }>`
width: ${(props) => props.size}px; width: ${(props) => props.size}px;
height: ${(props) => props.size}px; height: ${(props) => props.size}px;
position: relative; position: relative;
z-index: 0;
`; `;
const BlurContainer = styled(Canvas)<{ size: number, offset: number }>` const BlurContainer = styled(Canvas)<{ size: number, offset: number }>`

View File

@@ -58,7 +58,6 @@ function DownloadIcon({ trackId, size = 16, fill }: DownloadIconProps) {
// apply them to the circle using native props // apply them to the circle using native props
useEffect(() => { useEffect(() => {
const subscription = offsetAnimation.addListener((offset) => { const subscription = offsetAnimation.addListener((offset) => {
// @ts-expect-error undocumented functionality
const setNativeProps = circleRef.current?.setNativeProps as (props: CircleProps) => void | undefined; const setNativeProps = circleRef.current?.setNativeProps as (props: CircleProps) => void | undefined;
setNativeProps?.({ strokeDashoffset: offset.value }); setNativeProps?.({ strokeDashoffset: offset.value });
}); });
@@ -93,7 +92,6 @@ function DownloadIcon({ trackId, size = 16, fill }: DownloadIconProps) {
cy={radius} cy={radius}
r={radius - 1} r={radius - 1}
stroke={iconFill} stroke={iconFill}
// @ts-expect-error react-native-svg has outdated react-native typings
ref={circleRef} ref={circleRef}
strokeWidth={1.5} strokeWidth={1.5}
strokeDasharray={[ circumference, circumference ]} strokeDasharray={[ circumference, circumference ]}

View File

@@ -1,13 +1,45 @@
import React from 'react';
import { Platform, TextInputProps } from 'react-native';
import styled, { css } from 'styled-components/native'; import styled, { css } from 'styled-components/native';
import useDefaultStyles from './Colors';
import { Gap } from './Utility';
const Input = styled.TextInput<{ icon?: boolean }>` export interface InputProps extends TextInputProps {
margin: 10px 0; icon?: React.ReactNode
}
const Container = styled.View`
margin: 6px 0;
border-radius: 8px; border-radius: 8px;
padding: 15px; display: flex;
flex-direction: row;
${(props) => props.icon && css` align-items: center;
padding-left: 40px;
`} ${Platform.select({
ios: css`padding: 12px;`,
android: css`padding: 4px 12px;`,
})}
`; `;
const InputWrapper = styled.TextInput`
margin: 0;
padding: 0;
`;
function Input({ icon = null, style, ...rest }: InputProps) {
const defaultStyles = useDefaultStyles();
return (
<Container style={[defaultStyles.input, style]}>
{icon && (
<>
{icon}
<Gap size={8} />
</>
)}
<InputWrapper {...rest} />
</Container>
);
}
export default Input; export default Input;

View File

@@ -19,7 +19,14 @@ export function calculateProgressTranslation(
) { ) {
'worklet'; 'worklet';
const completion = position / reference; const completion = position / reference;
const output = (1 - (completion || 0)) * -1 * width;
// GUARD: Check whether the calculated number is valid and not infinite
if (Number.isNaN(completion) || !Number.isFinite(completion)) {
return 0;
}
const output = (1 - completion) * -1 * width;
return output; return output;
} }

View File

@@ -5,6 +5,7 @@ interface TouchableHandlerProps<T = number> {
id: T; id: T;
onPress: (id: T) => void; onPress: (id: T) => void;
onLongPress?: (id: T) => void; onLongPress?: (id: T) => void;
testID?: string;
} }
function TouchableStyles({ pressed }: { pressed: boolean }): ViewStyle { function TouchableStyles({ pressed }: { pressed: boolean }): ViewStyle {
@@ -23,7 +24,8 @@ function TouchableHandler<T>({
id, id,
onPress, onPress,
onLongPress, onLongPress,
children children,
testID,
}: PropsWithChildren<TouchableHandlerProps<T>>): JSX.Element { }: PropsWithChildren<TouchableHandlerProps<T>>): JSX.Element {
const handlePress = useCallback(() => { const handlePress = useCallback(() => {
return onPress(id); return onPress(id);
@@ -38,6 +40,7 @@ function TouchableHandler<T>({
onPress={handlePress} onPress={handlePress}
onLongPress={handleLongPress} onLongPress={handleLongPress}
style={TouchableStyles} style={TouchableStyles}
testID={testID}
> >
{children} {children}
</Pressable> </Pressable>

View File

@@ -0,0 +1,11 @@
import React from 'react';
import { View } from 'react-native';
export interface GapProps {
size: number;
direction?: 'horizontal' | 'vertical';
}
export function Gap({ size, direction = 'horizontal' }: GapProps) {
return <View style={{ [direction === 'horizontal' ? 'width' : 'height']: size }} />;
}

View File

@@ -12,7 +12,7 @@
"music": "Music", "music": "Music",
"now-playing": "Now Playing", "now-playing": "Now Playing",
"onboarding-welcome": "Welcome!", "onboarding-welcome": "Welcome!",
"onboarding-intro": "Jellyfin Audio Player will allow you to stream your music library from anywhere, with full support for background audio and casting.", "onboarding-intro": "Fintunes will allow you to stream your music library from anywhere, with full support for background audio and casting.",
"onboarding-cta": "In order to get started, you need a Jellyfin server. Click the button below to enter your Jellyfin server address and login to it.", "onboarding-cta": "In order to get started, you need a Jellyfin server. Click the button below to enter your Jellyfin server address and login to it.",
"set-jellyfin-server": "Set Jellyfin Server", "set-jellyfin-server": "Set Jellyfin Server",
"set-jellyfin-server-instruction": "Please enter your Jellyfin server URL. Make sure to include the protocol and port", "set-jellyfin-server-instruction": "Please enter your Jellyfin server URL. Make sure to include the protocol and port",

View File

@@ -12,7 +12,7 @@
"music": "Música", "music": "Música",
"now-playing": "Reproduciendo ahora", "now-playing": "Reproduciendo ahora",
"onboarding-welcome": "Bienvenido!", "onboarding-welcome": "Bienvenido!",
"onboarding-intro": "Jellyfin Audio Player te permitirá reproducir tu biblioteca musical desde cualquier sitio, con suporte completo para audio en segundo plano y casteo en otros dispositivos.", "onboarding-intro": "Fintunes te permitirá reproducir tu biblioteca musical desde cualquier sitio, con suporte completo para audio en segundo plano y casteo en otros dispositivos.",
"onboarding-cta": "Para empezar necesitas un servidor de Jellyfin. Pulsa el botón de abajo para introducir la dirección del servidor y autentifícate con tus credenciales.", "onboarding-cta": "Para empezar necesitas un servidor de Jellyfin. Pulsa el botón de abajo para introducir la dirección del servidor y autentifícate con tus credenciales.",
"set-jellyfin-server": "Introduce servidor de Jellyfin", "set-jellyfin-server": "Introduce servidor de Jellyfin",
"set-jellyfin-server-instruction": "Por favor introduce la URL de tu servidor de Jellyfin. Acuérdate de incluir protocolo y puerto", "set-jellyfin-server-instruction": "Por favor introduce la URL de tu servidor de Jellyfin. Acuérdate de incluir protocolo y puerto",

View File

@@ -12,8 +12,8 @@
"music": "Musique", "music": "Musique",
"now-playing": "En cours", "now-playing": "En cours",
"onboarding-welcome": "Bienvenue !", "onboarding-welcome": "Bienvenue !",
"onboarding-intro": "Jellyfin Audio Player vous permettra de diffuser votre bibliothèque musicale de n'importe où, avec un support de la lecture en arrière plan et la diffusion à distance.", "onboarding-intro": "Fintunes vous permettra de diffuser votre bibliothèque musicale de n'importe où, avec un support de la lecture en arrière plan et la diffusion à distance.",
"onboarding-cta": "Pour utiliser Jellyfin Audio Player, vous avez besoin d'un serveur Jellyfin. Cliquez sur le bouton ci-dessous pour entrer l'adresse de votre serveur Jellyfin et vous y connecter.", "onboarding-cta": "Pour utiliser Fintunes, vous avez besoin d'un serveur Jellyfin. Cliquez sur le bouton ci-dessous pour entrer l'adresse de votre serveur Jellyfin et vous y connecter.",
"set-jellyfin-server": "Configurer le serveur Jellyfin", "set-jellyfin-server": "Configurer le serveur Jellyfin",
"set-jellyfin-server-instruction": "Veuillez entrer l'URL de votre serveur Jellyfin. Assurez-vous d'inclure le protocole et le port", "set-jellyfin-server-instruction": "Veuillez entrer l'URL de votre serveur Jellyfin. Assurez-vous d'inclure le protocole et le port",
"settings": "Réglages", "settings": "Réglages",

Some files were not shown because too many files have changed in this diff Show More