Commit graph

97 commits

Author SHA1 Message Date
Jarne Demeulemeester
00c84fa9d5
Items and downloads rework (#329)
* refactor WIP: stop using `BaseItemDto` but use custom items specific to Findroid

This will make it easier to support downloaded items

* refactor: split `MediaInfoFragment` into `MovieFragment` and `ShowFragment`

* feat: add download icons to items

* feat WIP: download movies

* feat: download movie and play local file

* fix: remove `VideoVersionDialogFragment` from `ShowFragment`

* feat: select which version you want to download

* feat: delete downloaded movie

* feat: download progress indicator

* refactor: rename JellyfinItems to FindroidItems

* feat: offline mode (movies only)

* feat: offline mode card

* feat: download external files

* feat: toggle played on downloads

* feat: convert intros to `FindroidIntro`

* refactor: add itemId and sourceId to external downloaded subtitle filenames

* refactor: simplify `onMediaItemTransition`

* refactor: clean up some player item logic

* feat: download trickPlay data

* refactor: downloading of item to only require the item and a source id

* fix: external subtitle title

* feat: add `DownloadsFragment`

* feat: download episodes

* fix: cascade deletion if last item

* feat: download intro timestamps

* feat WIP: add storage activity

* feat: user data in separate table

* feat: add buttons to season fragment

* fix: improve responsiveness of the watched and favorite buttons

* fix: move `ic_database.xml` to main

* perf: optimize home fragment by limiting the number of items

* fix: database improvements

- use compound primary key for FindroidUserDataDto instead of id
- set played to false when playback percentage is below 90%
- capitalize SQL keywords
- update favorite in userdata
- set primary key of TrickPlayManifestDto to itemId
- prepare to sync data back to server

* feat: sync playback progress

This includes playback position, played and favorite

* fix: use non-transitive r classes

* lint: ktlint fix

* refactor: centralize item buttons in `item_actions.xml`

* feat: show intermediate progress when progress is less than 5

Also remove delete button from item_actions.xml

* feat: remove intros

* feat: check available storage space before downloading

* fix: trailer button

* refactor: make indexNumberEnd nullable

* feat: add offline mode toggle in settings

* fix: download over mobile data and roaming

* feat: immediately show spinner when tapping download

* revert: season fragment buttons

* feat: snackbar in downloads fragment

This snackbar is displayed when there is no connection to the server but the app is not in Offline Mode (Offline Mode is required to play content when the server is unavailable)

* refactor: make onReceive arguments non nullable

* fix: handle download finished / failed when BroadcastReceiver does not work

* fix: download multiple episodes

* feat: download to external storage (SD card)

* fix: reset download button when dialog is dismissed

* feat(offline): show "continue watching" episodes on home

* fix: watch progress bar on episode item in season

* feat(offline): next up items

* lint: fix some linting issues

* lint: fix some linting issues

* lint: fix some linting issues

* feat: remove StorageActivity

StorageActivity is not ready yet and out of scope for this PR

* fix: collection types that are not known crash the media fragment

* fix: downloading trick play data

* fix: sort downloaded items

* fix: navigate back if item is deleted instead of showing error

Navigate back based on NullPointerException in loadData method of viewmodels. This may not be the best approach but it works well enough.

Navigating back from BottomSheetFragment does not trigger onResume of previous fragment which in turn does not refresh its contents.

* fix: play from local storage instead of server when downloaded

* fix: missing items

* fix: `SyncWorker` using the app JellyfinApi instance instead of it's own

* fix: only show downloaded items when navigating from `DownloadsFragment`

* fix: make chips horizontal scrollable

* feat: migrate database (retain) and downloads (wipe)

Also add indexes on seriesId and seasonId

* fix: remove temp testing in downloadsMigrated

* lint: fix some linting issues

* fix: add error handling to downloading item

* feat: add "Preparing download" dialog to make sure the user waits for the download to start

* refactor: first show dialog then start downloading

* fix: add error handling to user configuration in `PlayerViewModel`

* feat: allow downloads to be cancelled

* fix: "View details" is cut off when text is too long

* lint: fix indent
2023-05-07 16:05:40 +02:00
ax4
ca28c5a7ec chore(translate): (Chinese (Simplified))
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-04-16 20:27:49 +02:00
renovate[bot]
2e6d069136
chore(deps): update dependency gradle to v8.1 (#332)
* Update dependency gradle to v8.1

* fix: remove @Suppress("DSL_SCOPE_VIOLATION") from build.gradle files

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-04-15 01:01:41 +02:00
renovate[bot]
22542614cd
chore(deps): update android-plugin to v8 (major) (#333)
* Update android-plugin to v8

* ci: upgrade to java 17

* fix: transitive R classes and buildconfig

* lint: fix ktlint issues

* lint: fix ktlint issues

* lint: fix ktlint issues

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2023-04-15 00:43:42 +02:00
Pysta
0e2a000b8c chore(translate): (Slovak)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/sk/
2023-04-10 09:27:49 +02:00
Ido
645c1c5518 chore(translate): (Hebrew)
Currently translated at 89.1% (148 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/he/
2023-03-29 18:27:49 +02:00
Ido
137a860d6c chore(translate): add (Hebrew) 2023-03-28 14:59:34 +02:00
NickSkier
bb65b60b34 chore(translate): (Russian)
Currently translated at 99.3% (165 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/ru/
2023-03-18 03:27:49 +01:00
Bradford Zhang
09cc9b3759
chore(translate): (Chinese (Simplified)) (#316)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-03-13 07:54:20 +01:00
DualScorch
dacf44f9b9 chore(translate): (Swedish)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/sv/
2023-03-12 15:27:49 +01:00
MazeWave
ce201b3ffd chore(translate): (French)
Currently translated at 93.3% (155 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/fr/
2023-03-12 15:27:49 +01:00
Bradford Zhang
8b326af6b2 chore(translate): (Chinese (Simplified))
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-03-12 15:27:49 +01:00
DualScorch
6c2640961f chore(translate): add (Swedish) 2023-03-11 13:55:47 +01:00
cd16b
de5fe13c11 chore(translate): (Italian)
Currently translated at 99.3% (165 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/it/
2023-03-02 23:01:28 +01:00
Rogério Mendes
6f60ec3629 chore(translate): (Portuguese (Brazil))
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-28 19:01:23 +01:00
NeroPcStation
be7d130f95 chore(translate): (Polish)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pl/
2023-02-26 23:01:23 +01:00
Simon Scholz
0fc5a5c0b9 chore(translate): (Chinese (Simplified))
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-02-25 12:01:23 +01:00
Mario
c66b10067f chore(translate): (Spanish)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/es/
2023-02-25 12:01:23 +01:00
Rogério Mendes
c3aea1331d chore(translate): (Portuguese (Brazil))
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-23 11:32:49 +01:00
W113565456
f3ec002faf chore(translate): (German)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/de/
2023-02-23 11:32:49 +01:00
Mario
81a97ae8e9 chore(translate): (Spanish)
Currently translated at 100.0% (166 of 166 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/es/
2023-02-23 11:32:49 +01:00
Faywyrr
01d8c11a2c
feat: scrubbing preview (#295)
* Scrubbing Preview

Add Jellyscrub plugin support

* Fix syntax

* Some adjustments

Rounded corners
Fix switch

* refactor: switch to `StateFlow`

* refactor: remove `FrameLayout`

* refactor: move trick play retrieval to `onMediaItemTransition`

Only load trick play data for current item
Make it async

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-21 19:46:00 +01:00
WrobotGames
c5df381a80 chore(translate): (Dutch)
Currently translated at 93.9% (154 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/nl/
2023-02-20 22:01:23 +01:00
cd16b
45220f4108 Translated using Weblate (Italian)
Currently translated at 99.3% (163 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/it/
2023-02-18 23:01:23 +01:00
NeroPcStation
eb18f006e3 Translated using Weblate (Polish)
Currently translated at 100.0% (164 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pl/
2023-02-18 23:01:23 +01:00
newton181
b8cf1da39c Translated using Weblate (Spanish)
Currently translated at 100.0% (164 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/es/
2023-02-18 23:01:23 +01:00
Rogério Mendes
d6bada4fcc Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (164 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-17 09:44:06 +01:00
newton181
9fe3337af8 Translated using Weblate (Spanish)
Currently translated at 96.9% (159 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/es/
2023-02-17 09:44:06 +01:00
Pysta
f261b6d6e1 Translated using Weblate (Slovak)
Currently translated at 100.0% (164 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/sk/
2023-02-15 16:01:23 +01:00
renovate[bot]
86abe204f9
Update dependency gradle to v8 (#289)
* Update dependency gradle to v8

* fix: add compatibility with AGP 7.4 and remove some kotlin jvmTarget

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-13 21:58:05 +01:00
Rogério Mendes
49cf26e543 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.7% (162 of 164 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-13 16:01:23 +01:00
Mylloon
978aed5498 Translated using Weblate (French)
Currently translated at 94.4% (153 of 162 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/fr/
2023-02-11 15:03:51 +01:00
Xavier Xiong
2049a857a3
feat: AMOLED dark theme (#282)
* Add AMOLED dark theme

* Minor Fix

* Add compatibility with dynamic colors

* remove onused switch logic

Co-authored-by: Yash Garg <ben10.yashgarg@gmail.com>

* Remove unnecessary statements

* refactor: rename unused variable to `_`

---------

Co-authored-by: Yash Garg <ben10.yashgarg@gmail.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-11 15:03:48 +01:00
Jarne Demeulemeester
3c2b751df2
lint: fix errors 2023-02-11 12:09:51 +01:00
js6pak
5f7b7eaf63
Add CI (#236)
* Create main.yml

* Run ktlintFormat

* Don't error on translation lint issues

* Fix lint error about POST_NOTIFICATIONS permission

* Increase memory limit to speedup the build

* Only build debug

* refactor: rename `main.yml` to `build.yaml`

* lint: error on `ExtraTranslation`

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-11 12:01:02 +01:00
Jarne Demeulemeester
a2e581bc91
fix: remember scroll position in LibraryFragment (#285) 2023-02-11 10:41:28 +01:00
Simon Scholz
6303673bd0 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (162 of 162 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-02-10 14:59:16 +01:00
Simon Scholz
613e5a943f
Update strings.xml (#283)
Redundant periods have been removed to standardise translation.
2023-02-10 14:59:13 +01:00
cd16b
4ed1e2a59f Translated using Weblate (Italian)
Currently translated at 99.3% (161 of 162 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/it/
2023-02-09 16:01:23 +01:00
NeroPcStation
0e083ca8b7 Translated using Weblate (Polish)
Currently translated at 100.0% (162 of 162 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pl/
2023-02-09 16:01:23 +01:00
Rogério Mendes
4281fb99fc Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.7% (160 of 162 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-09 16:01:23 +01:00
Weblate
5b1830c88b Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/
2023-02-07 22:24:20 +01:00
WrobotGames
205eb02420 Translated using Weblate (Dutch)
Currently translated at 98.7% (152 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/nl/
2023-02-07 22:24:20 +01:00
ManuXD32
5cdf8b78c6 Translated using Weblate (Spanish)
Currently translated at 100.0% (154 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/es/
2023-02-07 22:24:20 +01:00
Yash Garg
a6570d8a02
feat(media): add detailed metadata for file on MediaInfoFragment (#246)
* feat: add video file metadata on `MediaInfoFragment`

* feat(metadata): add chips within a chipgroup to showcase major parameters

Set a "temp" text as default for chips since without it, the style resets when text is changed through code
(kind of a hacky fix)

* feat(parser): implement data model for VideoMetadata and parse function

* feat(metadata): show dolby/dts audio codecs and hide SDR display profile

* feat(dolby): add a dolby logo after the rating and per-theme color

* feat(settings): add a preference switch for showing detailed A/V & Subs info

* feat: add dolby logo for video and audio profile inside chip

* feat: handle different audio profiles and change raw names

* feat(audio): add atmos text with the audio codec itself

* feat: only parse metadata when item is a movie

Also correct spacing when there are no chips

* fix(metadata): check for DoVi title since codec shows as HDR10

* fixup!: parsing of audio codecs and display name

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-07 22:24:16 +01:00
cd16b
b74c313a4e Translated using Weblate (Italian)
Currently translated at 100.0% (154 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/it/
2023-02-06 13:01:09 +01:00
MrDog210
f8b1bf774a Translated using Weblate (Slovenian)
Currently translated at 86.3% (133 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/sl/
2023-02-06 13:01:09 +01:00
NeroPcStation
70b42aec17 Translated using Weblate (Polish)
Currently translated at 100.0% (154 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pl/
2023-02-06 13:01:09 +01:00
Xavier Xiong
73c162f16f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (154 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/zh_Hans/
2023-02-06 13:01:09 +01:00
Rogério Mendes
b798d376f9 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.7% (152 of 154 strings)

Translation: Findroid/core
Translate-URL: https://weblate.jdtech.dev/projects/findroid/core/pt_BR/
2023-02-06 13:01:09 +01:00