Commit graph

635 commits

Author SHA1 Message Date
nomadics9
7adcc50d75 rework: Enum 2024-07-20 22:28:38 +03:00
nomadics9
6dded2e726 bugfixes: deviceId / code: New Enum VideoQuality 2024-07-20 08:36:23 +03:00
nomadics9
062781a43d feat: Download transcoded media 2024-07-19 03:44:43 +03:00
nomadics9
ccc6788a02 feat: Transcoding stream in player selection /code: prep repo for next commit transcoding downloads 2024-07-19 02:20:55 +03:00
Jarne Demeulemeester
48d8b18bae
lint: run ktlintFormat 2024-07-15 23:20:42 +02:00
Jarne Demeulemeester
15c1ac9593
refactor(tv): replace deprecated tv lazy layouts with normal lazy layouts
Use beta version of compose for now (1.7.x)
TV compose foundation library removed
No longer using bom to specify dependencies (doesn't work with the beta versions)
2024-07-15 22:18:09 +02:00
Jarne Demeulemeester
307ce957c2
chore: target SDK 35 2024-07-13 17:12:56 +02:00
Jarne Demeulemeester
36891e7682
test: fix main flow test and update dependencies 2024-06-29 23:00:11 +02:00
Jarne Demeulemeester
c01ed644b2
feat: native 10.9 trickplay (#763)
* feat: native trickplay

TODO: update downloaded trickplay data

* chore: fix tv build

* fix: set dispatcher on image loading to remove flicker

* feat: download trickplay data

* refactor: simplify trickplay info by only loading a single resolution

* refactor: follow jellyfin naming of trickplay
2024-06-22 18:21:24 +02:00
Jarne Demeulemeester
ba20b2fd37
refactor: upgrade to jellyfin 10.9 (#757)
* refactor: upgrade to jellyfin 10.9

* chore: upgrade to jellyfin sdk 1.5.0-beta.2

* fix: don't show resumable items in next up

* chore: upgrade to jellyfin sdk 1.5.0-beta.3

* fix: sync offline playback progress

* refactor: initialize BrandingApi in JellyfinApi

* refactor: speed up quick connect auth

* perf: load home data on Default dispatcher
2024-06-16 12:29:26 +02:00
Jarne Demeulemeester
038eb45077
chore(deps): upgrade to kotlin 2.0 2024-05-24 00:10:01 +02:00
Jarne Demeulemeester
0ed42e1223
fix: keep all classes in tv release build
This fixes runtime errors
2024-05-19 18:27:54 +02:00
Jarne Demeulemeester
45b5cb6bf3
refactor: remove unused code 2024-05-10 11:34:40 +02:00
Jarne Demeulemeester
0fa3093d0c
fix: enable core library desugaring 2024-05-09 22:05:52 +02:00
Jarne Demeulemeester
ef5685ce63
chore: clean up dependencies 2024-05-09 12:30:23 +02:00
Jarne Demeulemeester
f10185111e
lint: fix issues 2024-05-04 11:03:11 +02:00
Jarne Demeulemeester
6441e5437a
chore: upgrade androidx tv material3 to 1.0.0-beta01 2024-05-02 20:13:10 +02:00
leekleak
a78dafe387
feat: add login disclaimer support (#721)
* add login disclaimer support

* refactor: move disclaimer to `UiState.Normal`

This makes more sense in the current architecture

* feat: add login disclaimer to tv version

* refactor: add margin to bottom of disclaimer

* lint: add missing trailing comma

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-04-27 18:39:45 +02:00
Jarne Demeulemeester
7b3523e605
chore(deps): update dependencies
androidx-activity 1.8.2 -> 1.9.0
androidx-compose-bom 2024.04.00 -> 2024.04.01
androidx-compose-compiler 1.5.11 -> 1.5.12
androidx-core 1.12.0 -< 1.13.0
jellyfin-media3-ffmpeg-decoder 1.2.1+1 -> 1.3.1+1
2024-04-20 11:06:52 +02:00
Jarne Demeulemeester
400335325a
chore: change apks output name for release builds 2024-04-14 22:00:22 +02:00
Jarne Demeulemeester
2d83b38387
test: main flow
Closes #727
2024-04-13 16:01:18 +02:00
Jarne Demeulemeester
bd98967b78
refactor: remove huawei flavor 2024-04-12 23:22:54 +02:00
jarnedemeulemeester
7aa3bf39b1
refactor: migrate to org.jellyfin.media3:media3-ffmpeg-decoder
Close #725
2024-04-12 23:13:44 +02:00
leekleak
a743363a87
feat: support html in media description (#713)
* support HTML in media description

* parse html in episode overview

* do the same in season view
2024-04-10 11:25:22 +02:00
Jarne Demeulemeester
a0297357d5
fix: reduce community rating to one decimal place
Closes #370
2024-03-05 21:38:38 +01:00
Jarne Demeulemeester
04c6573dfb
fix: empty collection string
Closes #585
2024-03-04 20:59:35 +01:00
Jarne Demeulemeester
f61f65828f
fix: handle IllegalArgumentException from setPictureInPictureParams 2024-03-04 19:37:13 +01:00
Jarne Demeulemeester
0a1582f47b
fix(theme): set correct surface color when using dynamic colors or amoled theme
Surface colors have changed in material components 1.11.0

Closes #673
2024-03-02 23:52:07 +01:00
Nelson Wu
9cd3295d2d
feat: mixed libraries (#628)
* mixed collection

* Mixed libraries to show up in "Latest"

Co-authored-by: Freya Winters <freya@justgamingtld.nl>

* Do not recurse if folders are shown

* Added folder navigation for tv

* Removed assumption that folder == mixed

* refactor: add default values to `FindroidFolder`

* fix: add chapters to findroidfolder

---------

Co-authored-by: Freya Winters <freya@justgamingtld.nl>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-24 17:48:03 +01:00
jarnedemeulemeester
88f648a25e
chore: use compose bom and upgrade compose compiler to 1.5.10 2024-02-22 18:03:58 +01:00
Natanel Shitrit
c39bdce845
feat: chapters (#466)
* Add chapter markers and "skip chapter" on long press

* Fix linting problems

- Missing comma
- Unused import
- Comment block

* Add preferences options

* Drop chapter support for ExoPlayer

* Fix linting

* Remove Trailing spaces

* Remove TODO from marker color

* Move code to function

* Optimize imports

* Fix crash on episode skip

* Disable player control view animation

* Avoid crash when there are no chapters for media item

* Skip to next episode when skipping last chapter

* Load chapters from Jellyfin API instead of MPV Player

* Remove chapter gesture

* Fix build

* Fix linting

* Fix linting

* Support chapters with offline media

* Remove debug print

* Add chapter skipping

* Remove trailing spaces

* fix(chapters): display correct chapter while seeking

* refactor: faster and cleaner `getCurrentChapterIndex`

* refactor: seek to start of current chapter if player position is more than 5 seconds past start of chapter

* refactor: change "Matroska chapters" to just "Chapters"

The chapters feature also works for MP4 files so just make it generic

* Bump database version

* Add auto-migration for database version bump

* Save database schema

* chore: clean up

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-17 16:45:07 +01:00
Jarne Demeulemeester
3e3d749f62
refactor: remove back button in locked controls 2024-02-03 22:29:32 +01:00
Jarne Demeulemeester
782f736a8a
fix: long press fixes
Disable when controls are locked
Disable when more than 1 pointer
2024-02-03 22:21:10 +01:00
Natanel Shitrit
42df641c03
feat: automatic PiP animation (#648)
* Add automatic PiP animation

* Fix linting

* Fix linting

* chore: fix merge conflict

* fix: disable pip gesture when media is paused

* fix: crash when gestures are disabled

* fix: keep auto enter enabled after using button

---------

Co-authored-by: Cd16d <98320806+cd16b@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2024-02-03 22:04:48 +01:00
Cd16d
3ba5a73c74
fix: pip zoom start player maximized (#640)
* fix zoom

* update isZoomEnabled inside updateZoomMode

To avoid future issues, I will update `isZoomEnabled` inside `updateZoomMode`.

* Revert " update isZoomEnabled inside updateZoomMode"

This reverts commit 9b539e1830bc76db0c540a51299f05a09c553d00.

* fix: isZoomEnable

* val enableZoom for readability

* lint
2024-02-03 18:22:01 +01:00
Cd16d
c67f6c265b
fix: pip remember zoom and auto-brightness (#638) 2024-01-28 14:11:34 +01:00
Natanel Shitrit
61ec1edb35
feat: start player maximized pref (#637) 2024-01-28 14:01:29 +01:00
peerless2012
0ecf6d4c0e
feat: add long press for 2x speed (#596)
* Add long press for 2x speed.

* Fix resource hard code warn.

* Fix lint warn.

* refactor: use `player.setPlaybackSpeed`

* refactor: make playback speed increase easily adjustable later

---------

Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2024-01-22 15:31:50 +01:00
Yash Garg
833fc95545
chore: use type-safe project accessors (#622) 2024-01-17 21:00:34 +01:00
Jarne Demeulemeester
55427036b2
feat(phone): use custom track selection dialog for default player
Use media3 track type instead of mpv track type
Simplify track selection dialog
2024-01-01 12:23:53 +01:00
Jarne Demeulemeester
db5eab1ab2
refactor(tv): use media3 track type instead of mpv track type for track selection dialog 2024-01-01 11:28:42 +01:00
Jarne Demeulemeester
a6ebb89b78
feat(tv): allow audio and subtitle tracks to be disabled
Closes #608
2024-01-01 00:31:13 +01:00
Jarne Demeulemeester
92f1cf7eee
feat(tv): disable unsupported tracks in dialog 2023-12-31 21:32:37 +01:00
Jarne Demeulemeester
85f48b9abc
refactor(tv): remove temp start route override 2023-12-31 21:29:15 +01:00
Jarne Demeulemeester
1c893d0059
refactor(tv): remove unused composables 2023-12-31 20:59:31 +01:00
Jarne Demeulemeester
2b6649e0ce
refactor(tv): move background gradient to theme 2023-12-31 20:54:13 +01:00
Jarne Demeulemeester
db9a6d6877
feat(phone,exoplayer): allow audio track to be disabled 2023-12-31 11:19:28 +01:00
Jarne Demeulemeester
7171ec72c1
feat: android tv (#598)
* Add AddServerScreen

* Upgrade androidx-compose-material3 and androidx-compose-ui to alpha

* Add DiscoveredServerComponent

* Show discovered servers

* Add navigation using compose-destinations

* Implement Loginscreen

* Start of HomeScreen

* Use coil for home screen images and update layout with spacers

* Select correct startRoute based on conditions

* Upgrade compose material3 to 1.1.0-alpha05

* Add series title, max 1 line, padding

* Upgrade dependencies

* Switch to TvLazyColumn and TvLazyRow

* Add header to `HomeScreen`

* Add progress bar to Continue watching items

* Limit the number of lines under Movie or Show and use correct episode text

* chore: run ktlintFormat

* ci: assemble tv

* feat: `LibraryScreen`

* fix: update to reworked items system

* chore(deps): update androidx-paging-compose and compose-destination

Also fix lint issue on HomeScreen

* feat: start using androidx.material3 composables

* feat: add coil svg

* feat: experimenting with cards

* lint: fix linting issues

* feat: server select screen

* build: upgrade dependencies

* lint: run ktlintFormat

* feat(ServerSelectScreen): add "No servers found" text

* feat: update AddServerScreen

* feat: implement `UiText.asString()` composable

* lint: run ktlintFormat

* refactor(phone): remove livedata from `ServerSelectScreen`

* feat: add `UserSelectScreen`

* feat(UserSelectScreen): load user's profile picture

* feat: update LoginScreen

* feat: update progress indicator on `AddServerScreen`

* fix: change color of `ServerComponent`

* style(ServerSelect): use material typography

* chore: update ktlint config in build.gradle

* style: use material typography

* refactor: move home screen to separate layout function so it can be previewed

- Introduce dummy items
- Fix `UiText.asString()` composable

* refactor: preview `LibraryScreen`

* refactor: preview `ServerSelectScreen`

* refactor: preview `AddServerScreen`

* refactor: preview `UserSelectScreen`

* refactor: preview `LoginScreen`

* lint: run ktlintFormat

* feat: switch servers

* feat: main screen tabs navigation

* feat: add Live TV tab (not shown for now)

* chore: remove libraries from `HomeViewModel`

* chore: change colors of selected tab

* feat: new item card component

* chore: remove `HomeItem.Libraries`

* style: update spacing

* feat: add findroid icon and profile button on main screen

* style(main): add gradient background

* fix: use "latest" + library name in home screen

* fix: navigate from LoginScreen and UserSelectScreen to MainScreen

* style: update tab colors

* fix: remove reference to `HomeItem.Libraries` from `ViewListAdapter`

* chore: update kotlin compiler to 1.5.0

* feat: add horizontal item card variant

* feat: `LibrariesScreen`

* feat: `LibraryScreen`

* fix(`LibraryScreen`): remove hardcoded library name

* feat: `MovieScreen`

* feat(`MovieScreen`): Make trailer button work

Also hide the button when there is no trailer

* refactor(`MovieScreen`): move click logic out of layout

* refactor: create `FindroidImages` which holds all image uris

* build: upgrade androidx.tv to 1.0.0-alpha08

* chore: update compose libraries

* chore: update compose compiler to 1.5.1

* fix(ItemCard): only show progress when horizontal

* refactor: clean build.gradle.kts

* build: up minSdk to 28 and targetSdk to 34

* refactor: use spacings to provide paddings (#443)

* feat: add Spacings in MaterialTheme

* style: use MaterialTheme.spacings in layouts

Using sizes in Spacer & padding & PaddingValues to standardize it.

* fix: linting issues and a few paddings

* feat: use spacings in `LibraryScreen`

* feat: use spacings in `MovieScreen`

* fix: missing trailing comma

* refactor: replace hardcoded spacer in ItemCard with spacing

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>

* build: migrate to ksp and upgrade compose compiler

* build: upgrade compose libraries

* fix: align with main codebase

* chore: update agp to 8.1.3

* chore: update ksp and compose-destinations

ksp 1.9.10-1.0.13 -> 1.9.20-1.0.14
compose-destinations 1.9.51 -> 1.9.54

* refactor(UserSelectViewModel): use channel for events

* feat: basic video player

First implementation of the video player.
Uses the basic player view with no custom layout.
Only media keys are passed to the PlayerView.

* feat: show screen

Still a work in progress

* fix: make player background black

* fix(player): keep screen on

* feat: add border around focused tab

* lint: run ktlintFormat

* feat: focus improvements

* feat: logo for main screen

* fix: remember tab position

* feat: add loading indicator to main screen

And fix home and libraries screen list refresh on navigating back

* feat: add seasons to show screen

* feat: add season screen

* feat: add progress badge

* chore(deps) update dependencies

android-plugin 8.1.3 -> 8.1.4
androidx-activity 1.8.0 -> 1.8.1
androidx-media3 1.1.1 -> 1.2.0
coil 2.4.0 -> 2.5.0
kotlinx-serialization 1.6.0 -> 1.6.1

* ci: upload tv artifacts and don't build universal apks

* chore: get rid of deprecated android.defaults.buildfeatures.buildconfig

* build: upgrade dependencies

android-plugin 8.1.4 -> 8.2.0
androidx-room 2.6.0 -> 2.6.1
androidx-work 2.8.1 -> 2.9.0
jellyfin 1.4.5 -> 1.4.6

compose compiler 1.5.4 -> 1.5.5

* fix: workManagerConfiguration is now a property

* feat: add profile picture to main screen

* feat: start of settings screen

* refactor: base tv theme on normal compose material theme

* chore(deps): update kotlin to 1.9.21

kotlin 1.9.20 -> 1.9.21
ksp 1.9.20-1.0.14 -> 1.9.21-1.0.15
compose-compiler 1.5.5 -> 1.5.6

* feat(settings): add categories and pop backstack when navigating to main screen

* feat(settings): nested settings and switch setting

* feat(settings): settings select component

* feat(settings): icons for cache and about

* feat(settings): add option to toggle mpv player

* feat(settings): move preference value logic to viewmodel

* feat(settings): add dependencies

* chore: update compose compiler

compose-compiler 1.5.6 -> 1.5.7

* feat(settings): add settings detail select card

New sub settings screen with different layout
Settings detail select card to select an option

* feat: play episode from home screen

* feat(player): basic custom overlay

Courtesy of Android TV JetStreamCompose sample

* feat(player): add track selection dialog

* feat(player): add media session and clean up dpad events

* refactor(mpv): implement track selection via TrackSelectionParameters

Need to add ability to disable track type

* feat: implement watched and favorite buttons

* refactor: remove unused PreferenceType enum

---------
2023-12-30 22:20:20 +01:00
Jarne Demeulemeester
218b4f1af4
refactor: replace SharedFlows with Channels for sending events 2023-11-06 23:42:00 +01:00
Natanel Shitrit
8b747bf037
refactor: remove cleanUpOldDownloads (#529)
* Remove `cleanUpOldDownloads`

* refactor: remove `downloadsMigrated` preference

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-10-28 12:38:35 +02:00