Commit graph

180 commits

Author SHA1 Message Date
jarnedemeulemeester
e32b4eec7d
refactor: clean up 2023-10-23 13:24:26 +02:00
jarnedemeulemeester
e210691705
refactor: move compileSdk, buildTools, minSdk, targetSdk and java to buildSrc Versions 2023-10-23 13:00:24 +02:00
Jarne Demeulemeester
16dd40d489
build: move app and ktlint version to buildSrc Versions 2023-10-15 15:43:55 +02:00
Natanel Shitrit
28231affc8
fix: show server select fragment when server has no current user (#235) (#439)
* Organize code, fix "locking" problem

Organize `MainActivity.kt`.

Open `serverSelectFragment` instead of `loginFragment` which could've lead to app locking if no user has logged in after adding the server.

* Fix linting

* Optimize imports

* fix: update jellyfinApi before navigating to login fragment

Also move logic to viewmodel

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-09-25 23:34:06 +02:00
Jarne Demeulemeester
dd826fc38d
fix: crash when aspect ratio is 0 2023-09-25 22:35:33 +02:00
Jarne Demeulemeester
0512d89bee
refactor: clean up adapter callbacks 2023-09-25 22:05:49 +02:00
Jarne Demeulemeester
3d92c3c909
refactor: remove some unused code 2023-09-09 22:09:48 +02:00
jarnedemeulemeester
f5dcd7af28
fix: do not recreate player activity on uiMode configuration change
Fix #505
Fix #510
2023-09-08 17:33:01 +02:00
Natanel Shitrit
58be66f541
fix: snackbar not showing in landscape mode (#476)
* Fix snackbar not showing in landscape

This affected also all tablets since they use the landscape view!

Added `setTextMaxLines` because for some reason the text is truncated on tablets.

Fixes #473.

Co-Authored-By: Jcuhfehl <91626737+Jcuhfehl@users.noreply.github.com>

* Remove unused import

---------

Co-authored-by: Jcuhfehl <91626737+Jcuhfehl@users.noreply.github.com>
2023-09-02 11:53:56 +02:00
Jarne Demeulemeester
04258f05ff
fix: do not show next_up_layout while loading
Fix #500
2023-09-02 11:37:02 +02:00
jarnedemeulemeester
43d6d5ce1f
refactor: migrate from kapt to ksp 2023-09-01 14:39:00 +02:00
004matteos
001ef4a2cc
feat: enhance person detail fragment layout on mobile (#400)
* improvement: changed Person Detail Fragment

Changed the Person Detail Fragment to better use the available space.
Separate layout for larger screens/landscape orientation

* added values for different screen sizes

* fixed spacing

* refactor: rename `layout_height_def` to `person_detail_overview_height`

* refactor: remove `+` from some ids

I know that xml files are parsed top to bottom and the plus sign create a new id. But it seems to work even if the id is created after it is referenced.
I think this is cleaner

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-27 17:12:38 +02:00
Cd16d
a36c4f0dca
fix: pip (#481)
* fix pip

* refactor: make isPipSupported more readable

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-24 21:29:10 +02:00
Natanel Shitrit
777445d352
feat: show episode size in extra info (#477)
* Show episode size if extra info is enabled

* Remove unnecessary stuff
2023-08-21 21:41:51 +02:00
Teo Baranga
373864ba46
fix: episode indicator wrapping on second line (#468)
Fixes #445

The episode indicator background was constrained to a 24dp box. If this box could not contain the count, then the count would wrap onto a new line.

The proposed solution is to use a rounded rectangle as the background instead. This can then expand into a chip as needed to accommodate larger numbers without wrapping.
2023-08-15 11:57:09 +02:00
Cd16d
d28e80d68e
feat: picture-in-picture (#277)
* add pip

* fixed OnResume() OnStop()
add picture in picture button
add pip settings

* fixed sourceRectHint
add aspectRatio

* fix import

* improve hide playerControls

* add onNewIntent()

* Home button/gesture settings

* add summary

* add GESTURE_EXCLUSION_AREA_SIDE

* remove if else in sourceRectHint
fix onStop() behavior

* fix behavior when using pip button, now go home

* test

* fix onStop()

* fix: mpv aspect ratio

* fix when in PiP mode and starting new playback

* refactor: pip implementation

Remove option to disable pip button, always show the button when pip is supported
Remove the option to completely disable pip
Format using ktlint

* fix when in pip mode and play a new video

* fix recent app behavior

* lint

* Some adjustments

* fix: Aspect ratio is too extreme

* fix: Activity recreation

* fix merge issues

* fix merge issues

* ktlintFormat

* Add Picture in Picture

* fix

* fix sourceRectHint, updateZoomMode before entering pip

* lint

* fix: disable pip when player is locked

* lint

* lint

* fix: sourceRectHint

* fix: replace media items in mpv

* fix: don't show skip intro button in pip

* chore: remove `android:resizeableActivity` from manifest since the default is already `true`

* refactor: remove option to force 16:9 aspect ratio

* refactor: update strings

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-14 22:47:42 +02:00
Anil Kumar Beesetti
8992646090
refactor: use WindowInsetsControllerCompat instead of deprecated methods (#302)
* refactor: remove deprecated methods to hide system ui

* fix: action bar reappear after changing the brightness

* lint: run ktlintFormat

* refactor: remove sdk check

* fix: system bars stay visible after closing dialog

* fix: add player theme to set navigationbar and statusbar colors to transparent

* fix: draw behind navigationbar and statusbar

* refactor: remove swipeToShowStatusBars extensions

Remove fix for status bar reappearing on LineageOS after changing brightness with gesture.
This can always be added back when official Android version from manufacturers also need this fix.

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-08-13 22:44:34 +02:00
jarnedemeulemeester
1183ae796c
refactor: remove databinding from base_item, collection_item, episode_item, home_episode_item, person_item, season_header, user_item and user_list_item
Also completely disable databinding in app:phone
2023-08-01 09:16:04 +02:00
Jarne Demeulemeester
f8e6453ec3
refactor: remove databinding from favorite_section, next_up_section and view_item 2023-07-31 23:58:01 +02:00
Jarne Demeulemeester
6ffc761972
refactor(server_item): remove databinding 2023-07-31 23:46:44 +02:00
Jarne Demeulemeester
012a597157
refactor(server_address_list_item): remove databinding 2023-07-31 23:44:21 +02:00
Jarne Demeulemeester
5a8b75194d
refactor(discovered_server_item): remove databinding 2023-07-31 23:37:38 +02:00
Jarne Demeulemeester
270f7decaa
refactor(PlayerActivity): replace livedata with UiState StateFlow 2023-07-31 23:21:41 +02:00
jarnedemeulemeester
a4dc94b310
refactor: get rid of databinding in ServerSelectFragment 2023-07-31 17:34:01 +02:00
jarnedemeulemeester
16d54781b1
chore: remove androidx-recyclerview-selection as it is unused 2023-07-31 17:31:04 +02:00
Jarne Demeulemeester
0717103895
build: up min sdk to 28 (#456)
* build: bump min sdk to 28

* refactor: remove unnecessary checks

* refactor: remove unused import
2023-07-30 16:08:36 +02:00
Jarne Demeulemeester
75ea33fd33
feat: target sdk 34 (#405) 2023-07-30 14:50:58 +02:00
mustafadakhel
d86b162d4b
feat: add double tap ripple animation (#401)
* Add double tap seeking animation

* Remove unnecessary formatting changes

* Order imports correctly

* Remove needless blank line

* feat: add ripple for playback (play / pause)

* refactor: clean up

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-07-29 15:47:36 +02:00
Daniel Jacob Chittoor
57c1e85b11
feat: add play/pause functionality to onDoubleTap (#450)
* feat: Add seek and play/pause functionality to onDoubleTap

This patch enhances the `onDoubleTap` method within the media player
component. It introduces a split-screen layout where the player view is
divided into three equal areas (in the ratio of 2:1:2).

1. Leftmost Area: When double-tapped, it seeks the media playback
backward by the defined seek increment
(`appPreferences.playerSeekBackIncrement`).

2. Middle Area: A double-tap in this area toggles the play/pause state
of the player. If the player is currently playing, it will be paused,
and if it's paused, it will be resumed.

3. Rightmost Area: When double-tapped, it seeks the media playback
forward by the specified seek increment
(`appPreferences.playerSeekForwardIncrement`).

* refactor: inline some variables and put x position inside when statement

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-07-29 13:29:05 +02:00
Jarne Demeulemeester
7a3b67f64b
fix(player): playback position reset on process death and playback continues playing when the device is locked
Closes #389 #390
2023-07-09 15:15:15 +02:00
renovate[bot]
80a86e2dfc
chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v11.5.0 (#426)
* chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v11.5.0

* feat: bump to ktlint 0.50.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-07-08 00:36:23 +02:00
Cd16d
7932216105
fix: configureInsets() for lockedControls, volume progress bar smoothness, gesture not working if the player was locked (#408)
* fix: volume progress bar smoothness

* fix: configureInsets() for lockedControls

* fix: gesture not working if the player was locked and used back gesture
2023-06-24 16:34:33 +02:00
jarnedemeulemeester
43b3ceafba
chore: remove unused resources 2023-06-24 00:28:14 +02:00
Cd16d
ce1fe7edfc
fix: missing/hardcoded strings (#415)
* fix: add missing/hardcoded strings

* Update strings.xml
2023-06-23 16:11:22 +02:00
jarnedemeulemeester
5b49abfbc8
fix: add CollectionType to proguard-rules.pro 2023-06-20 19:42:16 +02:00
jarnedemeulemeester
b9253badf8
chore: remove some unused files and dependencies 2023-06-20 13:02:48 +02:00
Jarne Demeulemeester
b426a920c3
lint: run ktlintFormat 2023-06-19 23:44:42 +02:00
renovate[bot]
07efae6f4c
chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v11.4.0 (#293)
* chore(deps): update dependency org.jlleitschuh.gradle.ktlint to v11.4.0

* fix: use .editorconfig

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2023-06-19 23:16:02 +02:00
Jarne Demeulemeester
c1819406cf
refactor: use CollectionType in LibraryFragment 2023-06-18 12:10:58 +02:00
Jarne Demeulemeester
ebf125c064
fix: only show version dialog when there are more than 2 remote sources 2023-05-29 16:55:26 +02:00
Jarne Demeulemeester
1399c77b5d
refactor: switch to coil for image loading (#388) 2023-05-29 16:44:03 +02:00
thofx
68525a0283
feat: add volume and brightness change animation (#377)
* volume and brightness change animation

* lint: remove redundant curly braces

---------

Co-authored-by: usnail <fuyouyuan@cloudwalk.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-05-27 12:37:43 +02:00
Yash Garg
5ff964b9bf
fix: video profile chip using wrong color (#383) 2023-05-27 12:06:34 +02:00
004matteos
a886baf907
feat: lock player controls (#372)
* feat: lock player controls

Add Lock Player feature.

This feature is similar to the feature found in the stock Jellyfin Android app and in the VLC app.

When enabled, it disables the gestures (seek, volume and brightness control), disables the default player controls and leaves only two buttons: a back button and an "unlock" button.
Pressing the unlock button reverts the player back to the initial state, e.g. gestures enabled and default buttons shown.

Works with ExoPlayer and MPV Player.

Let me know of any issues.

* Update PlayerGestureHelper.kt

* Fixed spacing issues

* fixed bug + formatting

* Simplified code

* Fixed spacing

* fixed trailing line?

* refactor: set locked layout initial visibility in xml

---------

Co-authored-by: jarnedemeulemeester <jarnedemeulemeester@gmail.com>
2023-05-25 09:20:30 +02:00
Jarne Demeulemeester
36f07ad1c7
refactor: make item actions material buttons
Also fixes the buttons being clickable when the content has not loaded yet
2023-05-20 20:32:03 +02:00
Jarne Demeulemeester
fd33d52bba
feat: add product flavors libre and huawei
Huawei requires a different app icon. They don't like the Android Robot :(
2023-05-14 18:32:46 +02:00
Jarne Demeulemeester
24faa1d9e3
fix: update fragment_add_server with policy text 2023-05-14 18:14:51 +02:00
Jarne Demeulemeester
b37532268c
chore: add privacy policy notice on AddServerFragment
This is required by Huawei... But I see no reason to not show it on any version.
2023-05-14 18:00:32 +02:00
Yash Garg
7d86f46fa3
feat: show movie size in extra info and improve size formatting (#367) 2023-05-14 16:29:40 +02:00
Yash Garg
69e3afc426
feat: add per app language for devices running Android 13+ (#353) 2023-05-14 11:19:31 +02:00
jarnedemeulemeester
765a31838e
fix: info text overlapping in movie and show fragments
Closes: #358
2023-05-13 11:27:24 +02:00
jarnedemeulemeester
82bbfee0a4
fix: text overflowing into "View all"
Closes #354
2023-05-11 17:22:15 +02:00
Jarne Demeulemeester
fa43b42b0d
fix: library fragment not navigating to collection (box set) 2023-05-11 00:46:01 +02:00
jarnedemeulemeester
986c120806
lint: fix indent 2023-05-09 08:25:45 +02:00
jarnedemeulemeester
8a96588a88
fix: show indexNumberEnd 2023-05-08 23:51:31 +02:00
Jarne Demeulemeester
22ac4bed49
fix: add okhttp proguard rules 2023-05-07 16:36:31 +02:00
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
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
Anil Kumar Beesetti
56c6c72617
fix: volume gesture tracker value does not stay within bounds (#301) 2023-02-22 22:09:54 +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
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
Anil Kumar Beesetti
e32a390d1a
fix: Implementation of Mandatory System Gesture Insets to Avoid Conflicts with System Gestures (#286)
* fix: gesture conflict in seek gesture

* fix: gesture conflict in volume and brightness gestures

* refactor: move to separate method and add implementation for previous Android versions

* lint: run ktlintFormat

---------

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-02-13 21:23:12 +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
Jarne Demeulemeester
31a3627cf1
Update build tools to 33.0.2
33.0.1 -> 33.0.2
2023-02-10 23:37:16 +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
Jarne Demeulemeester
2bb6cb9b14
feat(settings): add option to toggle seek gesture (#269)
* feat(settings): add option to toggle seek gesture

* Simplify the seek setting summary

* Fix typo in summary
2023-02-04 01:13:58 +01:00
Jarne Demeulemeester
e12d58facf
Set scaleType to centerCrop of next up episode
Fix #41
2023-02-03 18:15:50 +01:00
Jarne Demeulemeester
2356bf5d6b
Implement collections (#252)
* Implement collections

* Set collection name in top app bar
2023-01-28 21:07:45 +01:00
Jarne Demeulemeester
07d0c695f4
Fix Quick Connect code color in light mode
Fix #239
2023-01-23 22:37:49 +01:00
Jarne Demeulemeester
879f41b7b7
Add lib-decoder-ffmpeg to app:phone
I cannot get the androidx.media3 ffmpeg decoder to compile nicely to upload it to maven central. So for now the prebuilt aar stays in this repo.
2023-01-21 17:05:36 +01:00
Jarne Demeulemeester
85e1175a30
Switch to android defined black and white 2023-01-19 00:37:27 +01:00
Jarne Demeulemeester
872457f3de
Respect "Allow media playback"
Fix #228
2023-01-15 18:07:01 +01:00
js6pak
31fd1e3fdc
Add intro skipper support (#219)
* Add intro skipper support

* Fix checking for 404

* Add back missing Intro class and dependencies due to rebase

* Add preference

* Clean up visibility logic

* Update skip intro button design

* Add proguard file to keep Serializable classes

* Move introCheck to a separate Runnable and fix Runnables are never cleaned up

* Simplify check before starting runnable

Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-01-15 15:20:56 +01:00
renovate[bot]
e0f07a3a96
Update android-plugin to v7.4.0 (#233)
* Update android-plugin to v7.4.0

* Set Java version to 11

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jarne Demeulemeester <jarnedemeulemeester@gmail.com>
2023-01-14 20:21:37 +01:00
Jarne Demeulemeester
f107e79b72
Log in with Quick Connect (#234)
* Log in with Quick Connect

* Clean up LoginViewModel

* Cancel Quick Connect by tapping the button again

* Make quickConnectJob private
2023-01-14 18:21:42 +01:00
Jarne Demeulemeester
76121925d7
Modularize the codebase (#230)
* Split app into core and app:phone

* Use global versionCode and versionName

* Clean up gradle dependencies

* Use string formatting inside getString function

* Move proguard file to app:phone

* Move app_navigation and BasePlayerActivity to app:phone

* Add buildTypes to core gradle and remove buildFeatures

* Add suffix core to core namespace

* Split code into 4 more modules: data, preferences, player:core and player:video

* Clean up some gradle files

* Clean up data gradle

* Remove duplicate Constants.kt

* Use AppPreferences in more places

* Split off strings

* Remove unused animations

* Make about_libraries strings non-translatable

* Move mpv assets to player:video module

* Make AppPreferences a Singleton
2023-01-13 23:51:20 +01:00