Commit graph

20 commits

Author SHA1 Message Date
lsrom
308d97068f
Refactor playback code (#55)
* Refactor playback code

* Fix back state when playing media and rotating device

Problem was playerItems were re-emitted on fragment creation after config change. LiveData by design emit on every subscribe (observe) so to avoid that there are several possibilities.

1) easiest, observe playerItems not in onCreate but in playButton.clickListener. Stupid, since then we need to remember to only observe in this special place.

2) SingleLiveData - kind of hacky since LiveData were designed to behave this way so we don't want to go against their design.

3) Use Kotlin flow instead.

I chose the flow approach since it's Kotlin native and modern way to do things and behaves much more Rx-like. Since now we need to call collect instead of observe and launch in coroutine, I added utility method to make this easier. Also, in the future we might want to improve this further, either by coming up with new way entirely or by at least moving this to parent fragment from which all fragments that want to play media will inherit and thus making it easy to use and maintain.

Co-authored-by: Jarne Demeulemeester <32322857+jarnedemeulemeester@users.noreply.github.com>
2021-10-26 18:11:22 +02:00
jarnedemeulemeester
25ac5524d7
Rework how player items are created
Add support for intros and improve loading speed
2021-08-26 15:36:56 +02:00
jarnedemeulemeester
d53fbf3369
Handle empty mediaSources 2021-08-25 11:00:58 +02:00
jarnedemeulemeester
a067b6b13d
New error panel with details dialog 2021-08-22 18:47:25 +02:00
jarnedemeulemeester
f2ce030856
View detailed error message for playerItemsError 2021-08-22 11:47:25 +02:00
jarnedemeulemeester
d67e3fb39c
Add error handling to preparePlayerItems 2021-08-08 12:42:15 +02:00
jarnedemeulemeester
10e89a2df5
Load episodes mediasources when play button pressed in EpisodeBottomSheet 2021-08-06 15:15:01 +02:00
jarnedemeulemeester
d67f195789
Rework player to allow for playing multiple episodes in a row 2021-08-05 16:09:08 +02:00
jarnedemeulemeester
ea927793e3
Allow http connections + fix lifecycle warning 2021-08-02 18:14:41 +02:00
Jarne Demeulemeester
b3af3e5aeb
Improve community rating visually 2021-07-20 17:25:58 +02:00
Jarne Demeulemeester
dbc2582724
Mark item as played 2021-07-16 17:07:45 +02:00
Jarne Demeulemeester
6cf1f5cc49
Mark items as favorite 2021-07-16 14:45:35 +02:00
Jarne Demeulemeester
be8402fb37
Set starting playback position 2021-07-12 13:26:51 +02:00
Jarne Demeulemeester
5ee1cbf340
Play episodes 2021-07-11 17:41:36 +02:00
Jarne Demeulemeester
e79731f21b
First JellyfinRepository implementation 2021-07-06 14:24:53 +02:00
Jarne Demeulemeester
16bc87969d
Add more progress bars and check marks + general layout improvements 2021-07-06 12:30:19 +02:00
Jarne Demeulemeester
cb005e1cf6
Add more dependency injection 2021-07-06 11:39:35 +02:00
Jarne Demeulemeester
f460c25a92
Big cleanup and refactoring 2021-07-05 22:38:20 +02:00
Jarne Demeulemeester
5e6099de93
Change how ViewModels get created 2021-07-05 15:25:30 +02:00
Jarne Demeulemeester
a3cfe35c13
Add EpisodeBottomSheet
Work in progress
2021-07-03 14:01:54 +02:00