Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40ecfb08fb | ||
|
|
099bbebe38 | ||
|
|
a34b6c5114 | ||
|
|
7353b04dd1 | ||
|
|
a2c1a82ebb | ||
|
|
ccfa68c530 | ||
|
|
6885ae6216 | ||
|
|
6d8535e24b | ||
|
|
d4570b60ae | ||
|
|
9c8e474d51 | ||
|
|
9a1defbeef | ||
|
|
87f992d912 | ||
|
|
845b379e09 | ||
|
|
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
5
.gitignore
vendored
@@ -69,4 +69,7 @@ fastlane/Appfile
|
||||
certificates/
|
||||
|
||||
.env
|
||||
sentry.properties
|
||||
sentry.properties
|
||||
|
||||
screenshots
|
||||
fastlane/Preview.html
|
||||
1
.node-version
Normal file
1
.node-version
Normal file
@@ -0,0 +1 @@
|
||||
16
|
||||
160
CHANGELOG.md
Normal file
160
CHANGELOG.md
Normal file
@@ -0,0 +1,160 @@
|
||||
## [2.0.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.2...v2.0.3) (2023-02-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* improve album list scrolling performance ([099bbeb](https://github.com/leinelissen/jellyfin-audio-player/commit/099bbebe38942f2c72782e6c34ad3cea0876b291))
|
||||
* prevent track indexes from overflowing ([a34b6c5](https://github.com/leinelissen/jellyfin-audio-player/commit/a34b6c51141cb3cd6058733ccb3323d75f40bbd5))
|
||||
|
||||
|
||||
|
||||
## [2.0.2](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.1...v2.0.2) (2023-01-10)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* allow user-supplied CA certificates on Android ([ccfa68c](https://github.com/leinelissen/jellyfin-audio-player/commit/ccfa68c53045dfc1a7071d282da477a3ec6c9f60)), closes [#110](https://github.com/leinelissen/jellyfin-audio-player/issues/110)
|
||||
* font colour for dark mode on input ([6885ae6](https://github.com/leinelissen/jellyfin-audio-player/commit/6885ae6216119155e86146c39ca502fa8a18183f))
|
||||
|
||||
|
||||
|
||||
## [2.0.1](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.0.0...v2.0.1) (2022-11-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* android and ios builds ([845b379](https://github.com/leinelissen/jellyfin-audio-player/commit/845b379e0983f012a2eda65350748307d4b74dca))
|
||||
* Blur obscuring buttons on Android ([e0493c4](https://github.com/leinelissen/jellyfin-audio-player/commit/e0493c4a55157abff8fbb1eddeab331ac856feff))
|
||||
* BlurView on Android ([b2bd211](https://github.com/leinelissen/jellyfin-audio-player/commit/b2bd211758f13a789294b98b5a129b07519ec3f8))
|
||||
* Depcreated createReducer calls ([d072292](https://github.com/leinelissen/jellyfin-audio-player/commit/d072292008929aa53738bf69e91eb6925686687a))
|
||||
* Ensure proper spacing in downloads screen ([cd10ddd](https://github.com/leinelissen/jellyfin-audio-player/commit/cd10ddd260c0a8d2b967248fe6dc0aeb09983e32))
|
||||
* Input icon alignment on Android ([0ffc5b6](https://github.com/leinelissen/jellyfin-audio-player/commit/0ffc5b64894099d761451483fa7cd35e76446054))
|
||||
* jumpy progress animations ([9807b0e](https://github.com/leinelissen/jellyfin-audio-player/commit/9807b0e920379ea646f6940d814cd2ed239a2054))
|
||||
* margin on connection notice ([68de2ca](https://github.com/leinelissen/jellyfin-audio-player/commit/68de2ca80e3ba55489a34d9464af4f891093ffe6))
|
||||
* Only show single line for tracks without artists or albums ([7ed389e](https://github.com/leinelissen/jellyfin-audio-player/commit/7ed389ead647c299be229b15fab47a8cc97be8c7))
|
||||
* Remove any restrictions on bitrate and samplerate ([b41031e](https://github.com/leinelissen/jellyfin-audio-player/commit/b41031eeac9b5a9976b10a93d620bfd108c8d97c))
|
||||
* Rename Jellyfin Audio Player to Fintunes in translation files ([0a7f6ab](https://github.com/leinelissen/jellyfin-audio-player/commit/0a7f6abf3e6af6f5684b63b0005868f250e687a2))
|
||||
* screenshotting logic ([d4570b6](https://github.com/leinelissen/jellyfin-audio-player/commit/d4570b60aecdeae4ce8dedb63c511f359e9760cb))
|
||||
* switch album id to demo instance ([9a1defb](https://github.com/leinelissen/jellyfin-audio-player/commit/9a1defbeef61a79addec4f71e0363e0b0271a111))
|
||||
* use entire input box as touch area for focus ([87f992d](https://github.com/leinelissen/jellyfin-audio-player/commit/87f992d912f0846773a85d67b6f67a90fe1ac293))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Save App metadata in the repo ([9c8e474](https://github.com/leinelissen/jellyfin-audio-player/commit/9c8e474d51402f5e6fa24ab683cc86aa3e131552))
|
||||
|
||||
|
||||
|
||||
## [1.2.7](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.2.6...v1.2.7) (2022-08-13)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Allow FLAC playback ([5b54760](https://github.com/leinelissen/jellyfin-audio-player/commit/5b54760e4ee6620062ce0cc4c79daf81753f00ae))
|
||||
|
||||
|
||||
|
||||
## [1.2.6](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.2.6-beta.1...v1.2.6) (2022-08-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Peer dependency chain ([63bbbf2](https://github.com/leinelissen/jellyfin-audio-player/commit/63bbbf2719aa5d296a6ec99774f9bf1a1aa068d0))
|
||||
* Remove unused imports ([c7f0d46](https://github.com/leinelissen/jellyfin-audio-player/commit/c7f0d46b410825765ab5d074469ec23d32ffd45d))
|
||||
|
||||
|
||||
|
||||
## [1.2.6-beta.1](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.2.5...v1.2.6-beta.1) (2022-06-09)
|
||||
|
||||
|
||||
|
||||
## [1.2.5](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.2.4...v1.2.5) (2022-05-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Only pull Exoplayer from jcenter ([89d2984](https://github.com/leinelissen/jellyfin-audio-player/commit/89d29844b9821e1a42b3b60c43dc4c3078231d56))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Apply default text styles to ReText ([37ead0e](https://github.com/leinelissen/jellyfin-audio-player/commit/37ead0ec989a8b714fde1bcb6dd36e568c6e7e8c))
|
||||
* Create new progress slider from scratch ([6efc8e7](https://github.com/leinelissen/jellyfin-audio-player/commit/6efc8e757c10c66019914f7561d075c3ecaf2f69))
|
||||
* Implement colored blur backgrounds ([f48d248](https://github.com/leinelissen/jellyfin-audio-player/commit/f48d2481443850888a0bd1a1cf2604420e633b26))
|
||||
* Tweak progress bar gestures ([b0961d3](https://github.com/leinelissen/jellyfin-audio-player/commit/b0961d3263d5f4ef3978fde748a6a277059cb0cb))
|
||||
|
||||
|
||||
|
||||
## [1.2.4](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.2.3...v1.2.4) (2022-05-04)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* No interaction on Android webview ([#59](https://github.com/leinelissen/jellyfin-audio-player/issues/59)) ([91eaa1d](https://github.com/leinelissen/jellyfin-audio-player/commit/91eaa1d864f66e1a6597809bd46c17907acc99ee))
|
||||
|
||||
|
||||
|
||||
## [1.2.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.2.3...v1.2.3) (2022-01-16)
|
||||
|
||||
|
||||
|
||||
## [0.2.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.2.2...v0.2.3) (2022-01-15)
|
||||
|
||||
|
||||
|
||||
## [0.2.2](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.2.1...v0.2.2) (2022-01-03)
|
||||
|
||||
|
||||
|
||||
## [0.2.1](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.2.0...v0.2.1) (2022-01-02)
|
||||
|
||||
|
||||
|
||||
# [0.2.0](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.7...v0.2.0) (2022-01-02)
|
||||
|
||||
|
||||
|
||||
## [0.1.7](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.6...v0.1.7) (2021-10-25)
|
||||
|
||||
|
||||
|
||||
## [0.1.6](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.5...v0.1.6) (2021-04-25)
|
||||
|
||||
|
||||
|
||||
## [0.1.5](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.4...v0.1.5) (2021-04-24)
|
||||
|
||||
|
||||
|
||||
## [0.1.4](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.3...v0.1.4) (2021-04-03)
|
||||
|
||||
|
||||
|
||||
## [0.1.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.2...v0.1.3) (2021-03-21)
|
||||
|
||||
|
||||
|
||||
## [0.1.2](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.1...v0.1.2) (2021-03-09)
|
||||
|
||||
|
||||
|
||||
## [0.1.1](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.1.0...v0.1.1) (2021-02-13)
|
||||
|
||||
|
||||
|
||||
# [0.1.0](https://github.com/leinelissen/jellyfin-audio-player/compare/v1.0.0-beta3...v0.1.0) (2021-02-07)
|
||||
|
||||
|
||||
|
||||
# [1.0.0-beta3](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.0.1-alpha1...v1.0.0-beta3) (2020-08-25)
|
||||
|
||||
|
||||
|
||||
## [0.0.1-alpha1](https://github.com/leinelissen/jellyfin-audio-player/compare/v0.0.1-alpha0...v0.0.1-alpha1) (2020-07-26)
|
||||
|
||||
|
||||
|
||||
## 0.0.1-alpha0 (2020-07-10)
|
||||
|
||||
|
||||
|
||||
198
Gemfile.lock
198
Gemfile.lock
@@ -1,51 +1,103 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.3)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
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)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.1.1)
|
||||
aws-partitions (1.488.0)
|
||||
aws-sdk-core (3.119.0)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.660.0)
|
||||
aws-sdk-core (3.167.0)
|
||||
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)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.46.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-s3 (1.117.1)
|
||||
aws-sdk-core (~> 3, >= 3.165.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.2.4)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.5.2)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
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)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
concurrent-ruby (1.1.10)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.6.4)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.2)
|
||||
excon (0.85.0)
|
||||
faraday (1.7.0)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
escape (0.0.4)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.94.0)
|
||||
faraday (1.10.2)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
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_persistent (~> 1.1)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
@@ -54,14 +106,17 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (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)
|
||||
fastimage (2.2.5)
|
||||
fastlane (2.191.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.211.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -87,6 +142,7 @@ GEM
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (~> 2.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (~> 0.1.1)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.3)
|
||||
@@ -99,11 +155,17 @@ GEM
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
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)
|
||||
google-apis-androidpublisher_v3 (0.10.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.1)
|
||||
google-apis-androidpublisher_v3 (0.31.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-core (0.9.1)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
@@ -112,64 +174,72 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.6.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.5.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-storage_v1 (0.6.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-iamcredentials_v1 (0.16.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.12.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-storage_v1 (0.19.0)
|
||||
google-apis-core (>= 0.9.0, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.5.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.1.0)
|
||||
google-cloud-storage (1.34.1)
|
||||
addressable (~> 2.5)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.3.0)
|
||||
google-cloud-storage (1.44.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.19.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (0.17.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
googleauth (1.3.0)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (~> 0.14)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.4)
|
||||
http-cookie (1.0.5)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.4.0)
|
||||
json (2.5.1)
|
||||
jwt (2.2.3)
|
||||
i18n (1.10.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.5.0)
|
||||
memoist (0.16.2)
|
||||
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)
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.3.0)
|
||||
nap (1.1.0)
|
||||
naturally (2.2.1)
|
||||
os (1.1.1)
|
||||
netrc (0.11.0)
|
||||
optparse (0.1.1)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (4.0.6)
|
||||
public_suffix (4.0.7)
|
||||
rake (13.0.6)
|
||||
representable (3.1.1)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.2.5)
|
||||
rouge (2.0.7)
|
||||
ruby-macho (2.5.1)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.15.0)
|
||||
addressable (~> 2.3)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
signet (0.17.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
@@ -178,19 +248,23 @@ GEM
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
trailblazer-option (0.1.1)
|
||||
trailblazer-option (0.1.2)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.1)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
typhoeus (1.4.0)
|
||||
ethon (>= 0.9.0)
|
||||
tzinfo (2.0.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.7)
|
||||
unicode-display_width (1.7.0)
|
||||
unf_ext (0.0.8.2)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.21.0)
|
||||
xcodeproj (1.22.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
@@ -201,13 +275,17 @@ GEM
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
zeitwerk (2.6.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (~> 1.11, >= 1.11.2)
|
||||
fastlane (~> 2.153)
|
||||
fastlane-plugin-load_json
|
||||
fastlane-plugin-sentry
|
||||
fastlane-plugin-versioning_android
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.2
|
||||
|
||||
@@ -35,12 +35,12 @@ android_library(
|
||||
|
||||
android_build_config(
|
||||
name = "build_config",
|
||||
package = "com.jellyfinaudioplayer",
|
||||
package = "nl.moeilijkedingen.jellyfinaudioplayer",
|
||||
)
|
||||
|
||||
android_resource(
|
||||
name = "res",
|
||||
package = "com.jellyfinaudioplayer",
|
||||
package = "nl.moeilijkedingen.jellyfinaudioplayer",
|
||||
res = "src/main/res",
|
||||
)
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ import org.apache.tools.ant.taskdefs.condition.Os
|
||||
*/
|
||||
|
||||
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"
|
||||
@@ -135,35 +135,22 @@ android {
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.jellyfinaudioplayer"
|
||||
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 10
|
||||
versionName "1.2.6"
|
||||
versionCode 15
|
||||
versionName "2.0.3"
|
||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||
|
||||
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 {
|
||||
ndkBuild {
|
||||
arguments "APP_PLATFORM=android-21",
|
||||
"APP_STL=c++_shared",
|
||||
"NDK_TOOLCHAIN_VERSION=clang",
|
||||
"GENERATED_SRC_DIR=$buildDir/generated/source",
|
||||
"PROJECT_BUILD_DIR=$buildDir",
|
||||
"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"
|
||||
}
|
||||
cmake {
|
||||
arguments "-DPROJECT_BUILD_DIR=$buildDir",
|
||||
"-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
|
||||
"-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
|
||||
"-DNODE_MODULES_DIR=$rootDir/../node_modules",
|
||||
"-DANDROID_STL=c++_shared"
|
||||
}
|
||||
}
|
||||
if (!enableSeparateBuildPerCPUArchitecture) {
|
||||
@@ -177,8 +164,8 @@ android {
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// We configure the NDK build only if you decide to opt-in for the New Architecture.
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
path "$projectDir/src/main/jni/Android.mk"
|
||||
cmake {
|
||||
path "$projectDir/src/main/jni/CMakeLists.txt"
|
||||
}
|
||||
}
|
||||
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
|
||||
@@ -200,15 +187,15 @@ android {
|
||||
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
|
||||
|
||||
// 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
|
||||
configureNdkBuildRelease.dependsOn(preReleaseBuild)
|
||||
configureNdkBuildDebug.dependsOn(preDebugBuild)
|
||||
configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
|
||||
configureCMakeDebug.dependsOn(preDebugBuild)
|
||||
reactNativeArchitectures().each { architecture ->
|
||||
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
|
||||
tasks.findByName("configureCMakeDebug[${architecture}]")?.configure {
|
||||
dependsOn("preDebugBuild")
|
||||
}
|
||||
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
|
||||
tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure {
|
||||
dependsOn("preReleaseBuild")
|
||||
}
|
||||
}
|
||||
@@ -283,9 +270,10 @@ dependencies {
|
||||
}
|
||||
|
||||
if (enableHermes) {
|
||||
def hermesPath = "../../node_modules/hermes-engine/android/";
|
||||
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||
releaseImplementation files(hermesPath + "hermes-release.aar")
|
||||
//noinspection GradleDynamicVersion
|
||||
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
|
||||
exclude group:'com.facebook.fbjni'
|
||||
}
|
||||
} else {
|
||||
implementation jscFlavor
|
||||
}
|
||||
@@ -298,12 +286,12 @@ if (isNewArchitectureEnabled()) {
|
||||
configurations.all {
|
||||
resolutionStrategy.dependencySubstitution {
|
||||
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'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application
|
||||
android:usesCleartextTraffic="true"
|
||||
android:networkSecurityConfig="@xml/react_native_config"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
<activity
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
*/
|
||||
package com.jellyfinaudioplayer;
|
||||
package nl.moeilijkedingen.jellyfinaudioplayer;
|
||||
|
||||
import android.content.Context;
|
||||
import com.facebook.flipper.android.AndroidFlipperClient;
|
||||
|
||||
9
android/app/src/debug/res/xml/react_native_config.xml
Normal file
9
android/app/src/debug/res/xml/react_native_config.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
<certificates src="user"/>
|
||||
<certificates src="system"/>
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
</network-security-config>
|
||||
@@ -1,5 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.jellyfinaudioplayer">
|
||||
package="nl.moeilijkedingen.jellyfinaudioplayer">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:allowBackup="false"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:networkSecurityConfig="@xml/react_native_config"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.jellyfinaudioplayer;
|
||||
package nl.moeilijkedingen.jellyfinaudioplayer;;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
import android.os.Bundle;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactRootView;
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
|
||||
@@ -11,11 +12,37 @@ public class MainActivity extends ReactActivity {
|
||||
*/
|
||||
@Override
|
||||
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
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(null);
|
||||
protected ReactActivityDelegate createReactActivityDelegate() {
|
||||
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.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,
|
||||
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
|
||||
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
|
||||
.invoke(null, context, reactInstanceManager);
|
||||
|
||||
7
android/app/src/main/jni/CMakeLists.txt
Normal file
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
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
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
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
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
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>
|
||||
<string name="app_name">JellyfinAudioPlayer</string>
|
||||
<string name="app_name">Fintunes</string>
|
||||
</resources>
|
||||
|
||||
9
android/app/src/main/res/xml/react_native_config.xml
Normal file
9
android/app/src/main/res/xml/react_native_config.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<network-security-config>
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
<certificates src="user"/>
|
||||
<certificates src="system"/>
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
</network-security-config>
|
||||
@@ -4,10 +4,11 @@ import org.apache.tools.ant.taskdefs.condition.Os
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "31.0.0"
|
||||
buildToolsVersion = "33.0.0"
|
||||
kotlin_version = "1.7.20"
|
||||
minSdkVersion = 21
|
||||
compileSdkVersion = 31
|
||||
targetSdkVersion = 31
|
||||
compileSdkVersion = 33
|
||||
targetSdkVersion = 33
|
||||
|
||||
if (System.properties['os.arch'] == "aarch64") {
|
||||
// For M1 Users we need to use the NDK 24 which added support for aarch64
|
||||
@@ -26,9 +27,9 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
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("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
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
@@ -53,12 +54,5 @@ allprojects {
|
||||
}
|
||||
google()
|
||||
maven { url 'https://www.jitpack.io' }
|
||||
|
||||
jcenter() {
|
||||
content {
|
||||
includeGroup("com.google.android.exoplayer")
|
||||
includeGroupByRegex("com.eightbitlab.*")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.125.0
|
||||
FLIPPER_VERSION=0.164.0
|
||||
|
||||
# Use this property to specify which architecture you want to build.
|
||||
# You can also override it from the CLI using
|
||||
|
||||
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
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
|
||||
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)
|
||||
include ':app'
|
||||
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") {
|
||||
include(":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
4
app.json
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"name": "JellyfinAudioPlayer",
|
||||
"displayName": "Jellyfin Player"
|
||||
"name": "Fintunes",
|
||||
"displayName": "Fintunes"
|
||||
}
|
||||
@@ -32,6 +32,7 @@ module.exports = {
|
||||
[
|
||||
'module:react-native-dotenv'
|
||||
],
|
||||
'react-native-reanimated/plugin'
|
||||
'react-native-reanimated/plugin',
|
||||
'@babel/plugin-proposal-numeric-separator'
|
||||
]
|
||||
};
|
||||
|
||||
4
fastlane/Deliverfile
Normal file
4
fastlane/Deliverfile
Normal file
@@ -0,0 +1,4 @@
|
||||
# The Deliverfile allows you to store various App Store Connect metadata
|
||||
# For more information, check out the docs
|
||||
# https://docs.fastlane.tools/actions/deliver/
|
||||
overwrite_screenshots(true)
|
||||
@@ -3,35 +3,51 @@ default_platform(:ios)
|
||||
package = load_json(json_path: "package.json")
|
||||
|
||||
platform :ios do
|
||||
lane :beta do
|
||||
before_all do
|
||||
get_certificates(
|
||||
output_path: 'certificates/'
|
||||
)
|
||||
get_provisioning_profile(
|
||||
output_path: 'certificates/',
|
||||
filename: "provisioning.mobileprovision",
|
||||
fail_on_name_taken: true,
|
||||
fail_on_name_taken: false,
|
||||
)
|
||||
update_code_signing_settings(
|
||||
use_automatic_signing: true,
|
||||
path: "ios/JellyfinAudioPlayer.xcodeproj"
|
||||
path: "ios/Fintunes.xcodeproj"
|
||||
)
|
||||
increment_version_number(
|
||||
version_number: package["version"],
|
||||
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
|
||||
xcodeproj: "ios/Fintunes.xcodeproj",
|
||||
);
|
||||
increment_build_number(
|
||||
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
|
||||
xcodeproj: "ios/Fintunes.xcodeproj",
|
||||
)
|
||||
end
|
||||
|
||||
lane :release do
|
||||
build_app(
|
||||
scheme: "Jellyfin Player",
|
||||
scheme: "Fintunes",
|
||||
output_directory: "build",
|
||||
workspace: "ios/JellyfinAudioPlayer.xcworkspace",
|
||||
workspace: "ios/Fintunes.xcworkspace",
|
||||
export_method: "app-store",
|
||||
)
|
||||
upload_to_testflight
|
||||
upload_to_app_store
|
||||
end
|
||||
|
||||
lane :beta do
|
||||
build_app(
|
||||
scheme: "Fintunes",
|
||||
output_directory: "build",
|
||||
workspace: "ios/Fintunes.xcworkspace",
|
||||
export_method: "app-store",
|
||||
)
|
||||
upload_to_testflight()
|
||||
end
|
||||
|
||||
after_all do
|
||||
build_number = get_build_number(
|
||||
xcodeproj: "ios/JellyfinAudioPlayer.xcodeproj",
|
||||
xcodeproj: "ios/Fintunes.xcodeproj",
|
||||
)
|
||||
Dir.chdir("..") do
|
||||
sh(
|
||||
@@ -50,8 +66,8 @@ platform :ios do
|
||||
finalize: true
|
||||
)
|
||||
sentry_upload_dsym(
|
||||
dsym_path: 'build/Jellyfin Player.app.dSYM.zip',
|
||||
info_plist: 'ios/JellyfinAudioPlayer/Info.plist',
|
||||
dsym_path: 'build/Fintunes.app.dSYM.zip',
|
||||
info_plist: 'ios/Fintunes/Info.plist',
|
||||
)
|
||||
sentry_upload_file(
|
||||
version: "1.0+#{build_number}",
|
||||
@@ -67,6 +83,11 @@ platform :ios do
|
||||
rewrite: true
|
||||
)
|
||||
end
|
||||
|
||||
lane :screenshots do
|
||||
capture_screenshots
|
||||
# upload_to_app_store
|
||||
end
|
||||
end
|
||||
|
||||
platform :android do
|
||||
|
||||
@@ -15,6 +15,14 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
|
||||
|
||||
## iOS
|
||||
|
||||
### ios release
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane ios release
|
||||
```
|
||||
|
||||
|
||||
|
||||
### ios beta
|
||||
|
||||
```sh
|
||||
@@ -23,6 +31,14 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
|
||||
|
||||
|
||||
|
||||
### ios screenshots
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane ios screenshots
|
||||
```
|
||||
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
|
||||
42
fastlane/Snapfile
Normal file
42
fastlane/Snapfile
Normal file
@@ -0,0 +1,42 @@
|
||||
# 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 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
1
fastlane/metadata/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
review_information
|
||||
1
fastlane/metadata/copyright.txt
Normal file
1
fastlane/metadata/copyright.txt
Normal file
@@ -0,0 +1 @@
|
||||
2022 Lei Nelissen
|
||||
1
fastlane/metadata/en-US/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/en-US/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/en-US/description.txt
Normal file
1
fastlane/metadata/en-US/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes is a streaming audio player for the Jellyfin media system. It features a gorgeous interface that allows you to play your favourite music with ease. You can search your entire library for any track, or just take it easy with a playlist that you've created earlier in Jellyfin. All tracks are streamed directly at the highest quality from your Jellyfin library. Streaming not always an option? Any track in your Jellyfin library can be downloaded and played offline.
|
||||
1
fastlane/metadata/en-US/keywords.txt
Normal file
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
1
fastlane/metadata/en-US/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/en-US/name.txt
Normal file
1
fastlane/metadata/en-US/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/en-US/privacy_url.txt
Normal file
1
fastlane/metadata/en-US/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/en-US/promotional_text.txt
Normal file
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
1
fastlane/metadata/en-US/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/en-US/subtitle.txt
Normal file
1
fastlane/metadata/en-US/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Audio player for Jellyfin
|
||||
1
fastlane/metadata/en-US/support_url.txt
Normal file
1
fastlane/metadata/en-US/support_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player
|
||||
1
fastlane/metadata/es-ES/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/es-ES/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/es-ES/description.txt
Normal file
1
fastlane/metadata/es-ES/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes es un reproductor de transmisión de audio para el sistema multimedia Jellyfin. Cuenta con una hermosa interfaz que te permite reproducir tu música favorita con facilidad. Puede buscar cualquier pista en toda su biblioteca, o simplemente tomarlo con calma con una lista de reproducción que haya creado anteriormente en Jellyfin. Todas las pistas se transmiten directamente con la más alta calidad desde su biblioteca Jellyfin. ¿Transmitir no siempre es una opción? Cualquier pista en su biblioteca Jellyfin se puede descargar y reproducir sin conexión.
|
||||
1
fastlane/metadata/es-ES/keywords.txt
Normal file
1
fastlane/metadata/es-ES/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
gelatina, audio, reproductor, transmisión, descargas, música
|
||||
1
fastlane/metadata/es-ES/marketing_url.txt
Normal file
1
fastlane/metadata/es-ES/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/es-ES/name.txt
Normal file
1
fastlane/metadata/es-ES/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/es-ES/privacy_url.txt
Normal file
1
fastlane/metadata/es-ES/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/es-ES/promotional_text.txt
Normal file
1
fastlane/metadata/es-ES/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Un reproductor de audio en streaming para Jellyfin, con soporte para búsqueda y descargas.
|
||||
1
fastlane/metadata/es-ES/release_notes.txt
Normal file
1
fastlane/metadata/es-ES/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/es-ES/subtitle.txt
Normal file
1
fastlane/metadata/es-ES/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Audio player for Jellyfin
|
||||
1
fastlane/metadata/es-ES/support_url.txt
Normal file
1
fastlane/metadata/es-ES/support_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player
|
||||
1
fastlane/metadata/fr-FR/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/fr-FR/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/fr-FR/description.txt
Normal file
1
fastlane/metadata/fr-FR/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes est un lecteur audio en streaming pour le système multimédia Jellyfin. Il dispose d'une interface magnifique qui vous permet de jouer facilement votre musique préférée. Vous pouvez rechercher n'importe quelle piste dans toute votre bibliothèque ou simplement vous détendre avec une liste de lecture que vous avez créée précédemment dans Jellyfin. Toutes les pistes sont diffusées directement à la plus haute qualité depuis votre bibliothèque Jellyfin. Le streaming n'est pas toujours une option ? N'importe quelle piste de votre bibliothèque Jellyfin peut être téléchargée et lue hors ligne.
|
||||
1
fastlane/metadata/fr-FR/keywords.txt
Normal file
1
fastlane/metadata/fr-FR/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
jellyfin, audio, joueur, diffusion, téléchargements, musique
|
||||
1
fastlane/metadata/fr-FR/marketing_url.txt
Normal file
1
fastlane/metadata/fr-FR/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/fr-FR/name.txt
Normal file
1
fastlane/metadata/fr-FR/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/fr-FR/privacy_url.txt
Normal file
1
fastlane/metadata/fr-FR/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/fr-FR/promotional_text.txt
Normal file
1
fastlane/metadata/fr-FR/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Un lecteur audio en streaming pour Jellyfin, avec prise en charge de la recherche et des téléchargements.
|
||||
1
fastlane/metadata/fr-FR/release_notes.txt
Normal file
1
fastlane/metadata/fr-FR/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/fr-FR/subtitle.txt
Normal file
1
fastlane/metadata/fr-FR/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Audio player for Jellyfin
|
||||
1
fastlane/metadata/fr-FR/support_url.txt
Normal file
1
fastlane/metadata/fr-FR/support_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player
|
||||
1
fastlane/metadata/ja/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/ja/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ja/description.txt
Normal file
1
fastlane/metadata/ja/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunesは、Jellyfinメディアシステム用のストリーミングオーディオプレーヤーです。 それはあなたが簡単にあなたの好きな音楽を演奏することを可能にするゴージャスなインターフェースを特徴とします。 ライブラリ全体で任意のトラックを検索することも、Jellyfinで以前に作成したプレイリストを使用して簡単に検索することもできます。 すべてのトラックは、Jellyfinライブラリから最高品質で直接ストリーミングされます。 ストリーミングは必ずしもオプションではありませんか? Jellyfinライブラリ内のすべてのトラックをダウンロードして、オフラインで再生できます。
|
||||
1
fastlane/metadata/ja/keywords.txt
Normal file
1
fastlane/metadata/ja/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
ジェリーフィン、オーディオ、プレーヤー、ストリーミング、ダウンロード、音楽
|
||||
1
fastlane/metadata/ja/marketing_url.txt
Normal file
1
fastlane/metadata/ja/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ja/name.txt
Normal file
1
fastlane/metadata/ja/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/ja/privacy_url.txt
Normal file
1
fastlane/metadata/ja/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/ja/promotional_text.txt
Normal file
1
fastlane/metadata/ja/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Jellyfin用のストリーミングオーディオプレーヤー。検索とダウンロードをサポートしています。
|
||||
1
fastlane/metadata/ja/release_notes.txt
Normal file
1
fastlane/metadata/ja/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/ja/subtitle.txt
Normal file
1
fastlane/metadata/ja/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Audio player for Jellyfin
|
||||
1
fastlane/metadata/ja/support_url.txt
Normal file
1
fastlane/metadata/ja/support_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player
|
||||
1
fastlane/metadata/nl-NL/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/nl-NL/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/nl-NL/description.txt
Normal file
1
fastlane/metadata/nl-NL/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes is een streaming audiospeler voor het Jellyfin mediasysteem. Het heeft een prachtige interface waarmee je gemakkelijk je favoriete muziek kunt afspelen. Je kunt in je hele bibliotheek zoeken naar elk nummer, of het rustig aan doen met een afspeellijst die je eerder in Jellyfin hebt gemaakt. Alle nummers worden direct in de hoogste kwaliteit gestreamd vanuit je Jellyfin-bibliotheek. Streamen niet altijd een optie? Elk nummer in je Jellyfin-bibliotheek kan worden gedownload en offline worden afgespeeld.
|
||||
1
fastlane/metadata/nl-NL/keywords.txt
Normal file
1
fastlane/metadata/nl-NL/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
jellyfin, audio, speler, streaming, downloads, muziek
|
||||
1
fastlane/metadata/nl-NL/marketing_url.txt
Normal file
1
fastlane/metadata/nl-NL/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/nl-NL/name.txt
Normal file
1
fastlane/metadata/nl-NL/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/nl-NL/privacy_url.txt
Normal file
1
fastlane/metadata/nl-NL/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/nl-NL/promotional_text.txt
Normal file
1
fastlane/metadata/nl-NL/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Een streaming audiospeler voor Jellyfin, met ondersteuning voor zoeken en downloaden.
|
||||
1
fastlane/metadata/nl-NL/release_notes.txt
Normal file
1
fastlane/metadata/nl-NL/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/nl-NL/subtitle.txt
Normal file
1
fastlane/metadata/nl-NL/subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
Audiospeler voor Jellyfin
|
||||
1
fastlane/metadata/nl-NL/support_url.txt
Normal file
1
fastlane/metadata/nl-NL/support_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player
|
||||
1
fastlane/metadata/primary_category.txt
Normal file
1
fastlane/metadata/primary_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
MUSIC
|
||||
1
fastlane/metadata/primary_first_sub_category.txt
Normal file
1
fastlane/metadata/primary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/primary_second_sub_category.txt
Normal file
1
fastlane/metadata/primary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/secondary_category.txt
Normal file
1
fastlane/metadata/secondary_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/secondary_first_sub_category.txt
Normal file
1
fastlane/metadata/secondary_first_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/secondary_second_sub_category.txt
Normal file
1
fastlane/metadata/secondary_second_sub_category.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/zh-Hans/apple_tv_privacy_policy.txt
Normal file
1
fastlane/metadata/zh-Hans/apple_tv_privacy_policy.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/zh-Hans/description.txt
Normal file
1
fastlane/metadata/zh-Hans/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes 是 Jellyfin 媒体系统的流式音频播放器。 它具有华丽的界面,可让您轻松播放自己喜欢的音乐。 您可以在整个音乐库中搜索任何曲目,或者只是使用您之前在 Jellyfin 中创建的播放列表轻松一点。 所有曲目都直接以最高质量从您的 Jellyfin 库中流式传输。 流媒体并不总是一种选择? Jellyfin 库中的任何曲目都可以下载和离线播放。
|
||||
1
fastlane/metadata/zh-Hans/keywords.txt
Normal file
1
fastlane/metadata/zh-Hans/keywords.txt
Normal file
@@ -0,0 +1 @@
|
||||
jellyfin, 音频, 播放器, 流媒体, 下载, 音乐
|
||||
1
fastlane/metadata/zh-Hans/marketing_url.txt
Normal file
1
fastlane/metadata/zh-Hans/marketing_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
fastlane/metadata/zh-Hans/name.txt
Normal file
1
fastlane/metadata/zh-Hans/name.txt
Normal file
@@ -0,0 +1 @@
|
||||
Fintunes
|
||||
1
fastlane/metadata/zh-Hans/privacy_url.txt
Normal file
1
fastlane/metadata/zh-Hans/privacy_url.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://github.com/leinelissen/jellyfin-audio-player/blob/master/docs/privacy-policy.md
|
||||
1
fastlane/metadata/zh-Hans/promotional_text.txt
Normal file
1
fastlane/metadata/zh-Hans/promotional_text.txt
Normal file
@@ -0,0 +1 @@
|
||||
Jellyfin 的流媒体音频播放器,支持搜索和下载。
|
||||
1
fastlane/metadata/zh-Hans/release_notes.txt
Normal file
1
fastlane/metadata/zh-Hans/release_notes.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user