* 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 ---------
115 lines
3.2 KiB
Text
115 lines
3.2 KiB
Text
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.android)
|
|
alias(libs.plugins.kotlin.parcelize)
|
|
alias(libs.plugins.ksp)
|
|
alias(libs.plugins.androidx.navigation.safeargs)
|
|
alias(libs.plugins.hilt)
|
|
alias(libs.plugins.aboutlibraries)
|
|
alias(libs.plugins.ktlint)
|
|
}
|
|
|
|
android {
|
|
namespace = "dev.jdtech.jellyfin"
|
|
compileSdk = Versions.compileSdk
|
|
buildToolsVersion = Versions.buildTools
|
|
|
|
defaultConfig {
|
|
applicationId = "dev.jdtech.jellyfin"
|
|
minSdk = Versions.minSdk
|
|
targetSdk = Versions.targetSdk
|
|
|
|
versionCode = Versions.appCode
|
|
versionName = Versions.appName
|
|
}
|
|
|
|
buildTypes {
|
|
named("debug") {
|
|
applicationIdSuffix = ".debug"
|
|
}
|
|
named("release") {
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
proguardFiles(
|
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
|
"proguard-rules.pro",
|
|
)
|
|
}
|
|
register("staging") {
|
|
initWith(getByName("release"))
|
|
applicationIdSuffix = ".staging"
|
|
}
|
|
}
|
|
|
|
flavorDimensions += "variant"
|
|
productFlavors {
|
|
register("libre") {
|
|
dimension = "variant"
|
|
isDefault = true
|
|
}
|
|
register("huawei") {
|
|
dimension = "variant"
|
|
}
|
|
}
|
|
|
|
splits {
|
|
abi {
|
|
isEnable = true
|
|
reset()
|
|
include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = Versions.java
|
|
targetCompatibility = Versions.java
|
|
}
|
|
|
|
buildFeatures {
|
|
buildConfig = true
|
|
viewBinding = true
|
|
}
|
|
}
|
|
|
|
ktlint {
|
|
version.set(Versions.ktlint)
|
|
android.set(true)
|
|
ignoreFailures.set(false)
|
|
}
|
|
|
|
dependencies {
|
|
implementation(project(":core"))
|
|
implementation(project(":data"))
|
|
implementation(project(":preferences"))
|
|
implementation(project(":player:core"))
|
|
implementation(project(":player:video"))
|
|
implementation(libs.aboutlibraries.core)
|
|
implementation(libs.aboutlibraries)
|
|
implementation(libs.androidx.activity)
|
|
implementation(libs.androidx.appcompat)
|
|
implementation(libs.androidx.constraintlayout)
|
|
implementation(libs.androidx.core)
|
|
implementation(libs.androidx.hilt.work)
|
|
implementation(libs.androidx.lifecycle.runtime)
|
|
implementation(libs.androidx.lifecycle.viewmodel)
|
|
implementation(libs.androidx.media3.exoplayer)
|
|
implementation(libs.androidx.media3.ui)
|
|
implementation(libs.androidx.media3.session)
|
|
implementation(libs.androidx.navigation.fragment)
|
|
implementation(libs.androidx.navigation.ui)
|
|
implementation(libs.androidx.paging)
|
|
implementation(libs.androidx.preference)
|
|
implementation(libs.androidx.recyclerview)
|
|
implementation(libs.androidx.swiperefreshlayout)
|
|
implementation(libs.androidx.work)
|
|
implementation(libs.coil)
|
|
implementation(libs.coil.svg)
|
|
implementation(libs.hilt.android)
|
|
ksp(libs.hilt.compiler)
|
|
implementation(libs.jellyfin.core)
|
|
compileOnly(libs.libmpv)
|
|
implementation(libs.material)
|
|
implementation(libs.timber)
|
|
|
|
implementation(rootProject.files("libs/lib-decoder-ffmpeg-release.aar"))
|
|
}
|