Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f8cf6e081 | ||
|
|
0a7f6abf3e | ||
|
|
398e38e748 | ||
|
|
d072292008 | ||
|
|
2c7abb72ba | ||
|
|
e5d1dea925 | ||
|
|
9807b0e920 | ||
|
|
7ed389ead6 | ||
|
|
0ffc5b6489 | ||
|
|
cce15ab46b | ||
|
|
d81c4c3c92 | ||
|
|
b2bd211758 | ||
|
|
cd10ddd260 | ||
|
|
f8812bc75c | ||
|
|
68de2ca80e | ||
|
|
e0493c4a55 | ||
|
|
f50e5914ec | ||
|
|
c7aec30e39 | ||
|
|
c19b9d8920 | ||
|
|
a402757c96 | ||
|
|
4d025d5411 | ||
|
|
b41031eeac | ||
|
|
f0e8dc998c | ||
|
|
8e0809bcdc | ||
|
|
5b54760e4e |
5
.gitignore
vendored
@@ -69,4 +69,7 @@ fastlane/Appfile
|
|||||||
certificates/
|
certificates/
|
||||||
|
|
||||||
.env
|
.env
|
||||||
sentry.properties
|
sentry.properties
|
||||||
|
|
||||||
|
screenshots
|
||||||
|
fastlane/Preview.html
|
||||||
1
.node-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
16
|
||||||
198
Gemfile.lock
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
|||||||
7
android/app/src/main/jni/CMakeLists.txt
Normal 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)
|
||||||
32
android/app/src/main/jni/MainApplicationModuleProvider.cpp
Normal 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 ¶ms) {
|
||||||
|
// 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
|
||||||
16
android/app/src/main/jni/MainApplicationModuleProvider.h
Normal 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 ¶ms);
|
||||||
|
|
||||||
|
} // namespace react
|
||||||
|
} // namespace facebook
|
||||||
@@ -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 ¶ms) {
|
||||||
|
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
|
||||||
@@ -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 ¶ms) 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
|
||||||
65
android/app/src/main/jni/MainComponentsRegistry.cpp
Normal 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
|
||||||
32
android/app/src/main/jni/MainComponentsRegistry.h
Normal 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
|
||||||
11
android/app/src/main/jni/OnLoad.cpp
Normal 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();
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">JellyfinAudioPlayer</string>
|
<string name="app_name">Fintunes</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -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.*")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
@@ -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
|
||||||
@@ -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')
|
||||||
}
|
}
|
||||||
|
|||||||
4
app.json
@@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"name": "JellyfinAudioPlayer",
|
"name": "Fintunes",
|
||||||
"displayName": "Jellyfin Player"
|
"displayName": "Fintunes"
|
||||||
}
|
}
|
||||||
3
fastlane/Deliverfile
Normal 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/
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -0,0 +1 @@
|
|||||||
|
review_information
|
||||||
1
fastlane/metadata/copyright.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/description.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/keywords.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
jellyfin, audio, player, streaming, downloads, music
|
||||||
1
fastlane/metadata/en-US/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/name.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Fintunes
|
||||||
1
fastlane/metadata/en-US/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
A streaming audio player for Jellyfin, with support for search and downloads.
|
||||||
1
fastlane/metadata/en-US/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/en-US/support_url.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
https://github.com/leinelissen/jellyfin-audio-player
|
||||||
1
fastlane/metadata/primary_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
MUSIC
|
||||||
1
fastlane/metadata/primary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/primary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/secondary_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/secondary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
fastlane/metadata/secondary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
11
ios/.xcode.env
Normal 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)
|
||||||
@@ -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 */;
|
||||||
7
ios/Fintunes.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Workspace
|
||||||
|
version = "1.0">
|
||||||
|
<FileRef
|
||||||
|
location = "self:">
|
||||||
|
</FileRef>
|
||||||
|
</Workspace>
|
||||||
@@ -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>
|
||||||
@@ -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">
|
||||||
@@ -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>
|
||||||
@@ -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];
|
||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 497 B After Width: | Height: | Size: 497 B |
|
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 1002 B |
|
Before Width: | Height: | Size: 710 B After Width: | Height: | Size: 710 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 1002 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 1002 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
@@ -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>
|
||||||
61
ios/FintunesUITests/FintunesUITests.swift
Normal 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 it’s 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()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
309
ios/FintunesUITests/SnapshotHelper.swift
Normal 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]
|
||||||
@@ -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>
|
|
||||||
@@ -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
|
|
||||||
33
ios/Podfile
@@ -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
|
||||||
668
ios/Podfile.lock
@@ -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
111
package.json
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ export default function App(): JSX.Element {
|
|||||||
Capability.Stop,
|
Capability.Stop,
|
||||||
Capability.SeekTo,
|
Capability.SeekTo,
|
||||||
],
|
],
|
||||||
stopWithApp: true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
setupTrackPlayer();
|
setupTrackPlayer();
|
||||||
|
|||||||
@@ -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
|
||||||
|
} ]}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -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 }>`
|
||||||
|
|||||||
@@ -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 ]}
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
11
src/components/Utility.tsx
Normal 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 }} />;
|
||||||
|
}
|
||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||