diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a99e3629..b258ecfb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -15,6 +15,7 @@ plugins { alias(libs.plugins.protobuf) alias(libs.plugins.kotlin.plugin.serialization) alias(libs.plugins.aboutLibraries) + id("org.openapi.generator") version "7.17.0" } val isCI = if (System.getenv("CI") != null) System.getenv("CI").toBoolean() else false @@ -70,6 +71,14 @@ android { jvmTarget = JvmTarget.JVM_11 javaParameters = true } +// sourceSets { +// main { +// java.srcDirs += +// kotlin { +// srcDirs += files("$buildDir/generated/seerr_api/src/main/kotlin") +// } +// } +// } } buildFeatures { buildConfig = true @@ -144,6 +153,12 @@ android { isUniversalApk = true } } + + sourceSets { + getByName("main") { + kotlin.srcDirs("$buildDir/generated/seerr_api/src/main/kotlin") + } + } } protobuf { @@ -175,6 +190,30 @@ aboutLibraries { } } +openApiGenerate { + generatorName.set("kotlin") + inputSpec.set("$projectDir/src/main/seerr-api.yml") + outputDir.set("$buildDir/generated/seerr_api") + apiPackage.set("com.github.damontecres.wholphin.api.seerr") + modelPackage.set("com.github.damontecres.wholphin.api.seerr.model") + groupId.set("com.github.damontecres.wholphin.api.seerr") + id.set("seerr-api") + packageName.set("com.github.damontecres.wholphin.api.seerr") + additionalProperties.apply { + put("serializationLibrary", "kotlinx_serialization") + put("sortModelPropertiesByRequiredFlag", true) + put("sortParamsByRequiredFlag", true) + put("useCoroutines", true) + put("enumPropertyNaming", "UPPERCASE") + put("modelMutable", false) + put("supportAndroidApiLevel25AndBelow", true) + } +} + +tasks.named("preBuild") { + dependsOn.add(tasks.named("openApiGenerate")) +} + dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) @@ -238,6 +277,8 @@ dependencies { implementation(libs.acra.limiter) compileOnly(libs.auto.service.annotations) ksp(libs.auto.service.ksp) + implementation(platform(libs.okhttp.bom)) + implementation(libs.okhttp) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.compose.ui.test.junit4) @@ -248,5 +289,5 @@ dependencies { implementation(files("libs/lib-decoder-ffmpeg-release.aar")) } - implementation(project(":seerr-api")) +// implementation(project(":seerr-api")) } diff --git a/seerr-api/src/main/java/com/github/damontecres/api/seerr/SeerrApiClient.kt b/app/src/main/java/com/github/damontecres/wholphin/api/seerr/SeerrApiClient.kt similarity index 92% rename from seerr-api/src/main/java/com/github/damontecres/api/seerr/SeerrApiClient.kt rename to app/src/main/java/com/github/damontecres/wholphin/api/seerr/SeerrApiClient.kt index f5d55bcb..64f42f2d 100644 --- a/seerr-api/src/main/java/com/github/damontecres/api/seerr/SeerrApiClient.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/api/seerr/SeerrApiClient.kt @@ -1,6 +1,6 @@ -package com.github.damontecres.api.seerr +package com.github.damontecres.wholphin.api.seerr -import com.github.damontecres.api.seerr.infrastructure.ApiClient +import com.github.damontecres.wholphin.api.seerr.infrastructure.ApiClient import okhttp3.Call import okhttp3.OkHttpClient diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrApi.kt b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrApi.kt index 4f91ff43..a009d53d 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrApi.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrApi.kt @@ -2,7 +2,7 @@ package com.github.damontecres.wholphin.services import android.content.Context import android.content.SharedPreferences -import com.github.damontecres.api.seerr.SeerrApiClient +import com.github.damontecres.wholphin.api.seerr.SeerrApiClient import dagger.hilt.android.qualifiers.ApplicationContext import okhttp3.OkHttpClient @@ -15,7 +15,7 @@ class SeerrApi( var api: SeerrApiClient = SeerrApiClient( - prefs.getString("baseUrl", null)!!, + prefs.getString("baseUrl", null)!! + "/api/v1", prefs.getString("apiKey", null)!!, okHttpClient, ) diff --git a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrService.kt b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrService.kt index 534ffe25..840587de 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/services/SeerrService.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/services/SeerrService.kt @@ -1,7 +1,7 @@ package com.github.damontecres.wholphin.services -import com.github.damontecres.api.seerr.SeerrApiClient -import com.github.damontecres.api.seerr.model.SearchGet200ResponseResultsInner +import com.github.damontecres.wholphin.api.seerr.SeerrApiClient +import com.github.damontecres.wholphin.api.seerr.model.SearchGet200ResponseResultsInner import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt index ab13756a..feaf7001 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/DestinationContent.kt @@ -243,13 +243,12 @@ fun DestinationContent( DebugPage(preferences, modifier) } - Destination.Discover -> + Destination.Discover -> { SeerrDiscoverPage( preferences = preferences, modifier = modifier, ) - } - + } } } diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt index 62a37ca6..5247c327 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/nav/NavDrawer.kt @@ -188,6 +188,13 @@ sealed interface NavDrawerItem { override fun name(context: Context): String = context.getString(R.string.more) } + + object Discover : NavDrawerItem { + override val id: String + get() = "a_discover" + + override fun name(context: Context): String = context.getString(R.string.discover) + } } data class ServerNavDrawerItem( @@ -262,6 +269,13 @@ fun NavDrawer( setShowMore(!showMore) } + NavDrawerItem.Discover -> { + viewModel.setIndex(index) + viewModel.navigationManager.navigateToFromDrawer( + Destination.Discover, + ) + } + is ServerNavDrawerItem -> { viewModel.setIndex(index) viewModel.navigationManager.navigateToFromDrawer(item.destination) @@ -606,6 +620,11 @@ fun NavigationDrawerScope.NavItem( R.string.fa_ellipsis } + NavDrawerItem.Discover -> { + // TODO seerr + R.string.fa_list_ul + } + is ServerNavDrawerItem -> { when (library.type) { CollectionType.MOVIES -> R.string.fa_film diff --git a/app/src/main/java/com/github/damontecres/wholphin/ui/seerr/SeerrDiscoverPage.kt b/app/src/main/java/com/github/damontecres/wholphin/ui/seerr/SeerrDiscoverPage.kt index 2c69bb13..c0a5e839 100644 --- a/app/src/main/java/com/github/damontecres/wholphin/ui/seerr/SeerrDiscoverPage.kt +++ b/app/src/main/java/com/github/damontecres/wholphin/ui/seerr/SeerrDiscoverPage.kt @@ -15,7 +15,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.tv.material3.Text -import com.github.damontecres.api.seerr.model.MovieResult +import com.github.damontecres.wholphin.api.seerr.model.MovieResult import com.github.damontecres.wholphin.preferences.UserPreferences import com.github.damontecres.wholphin.services.SeerrService import com.github.damontecres.wholphin.ui.launchIO diff --git a/seerr-api/src/main/seerr-api.yml b/app/src/main/seerr-api.yml similarity index 100% rename from seerr-api/src/main/seerr-api.yml rename to app/src/main/seerr-api.yml diff --git a/seerr-api/.gitignore b/seerr-api/.gitignore deleted file mode 100644 index 796b96d1..00000000 --- a/seerr-api/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/seerr-api/build.gradle.kts b/seerr-api/build.gradle.kts deleted file mode 100644 index f3bfa2f0..00000000 --- a/seerr-api/build.gradle.kts +++ /dev/null @@ -1,59 +0,0 @@ -plugins { - id("java-library") - alias(libs.plugins.kotlin.jvm) - id("org.openapi.generator") version "7.17.0" -} -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} -kotlin { - compilerOptions { - jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 - } - - sourceSets { - main { - kotlin.srcDirs("$buildDir/generated/seerr_api/src/main/kotlin") - } - } -} - -openApiGenerate { - generatorName.set("kotlin") - inputSpec.set("$projectDir/src/main/seerr-api.yml") - outputDir.set("$buildDir/generated/seerr_api") - apiPackage.set("com.github.damontecres.api.seerr") - modelPackage.set("com.github.damontecres.api.seerr.model") - groupId.set("com.github.damontecres.api.seerr") - id.set("seerr-api") - packageName.set("com.github.damontecres.api.seerr") - additionalProperties.apply { - put("serializationLibrary", "kotlinx_serialization") - put("sortModelPropertiesByRequiredFlag", true) - put("sortParamsByRequiredFlag", true) - put("useCoroutines", true) - put("enumPropertyNaming", "UPPERCASE") - put("modelMutable", false) - } -// typeMappings.set( -// mapOf( -// "number" to "kotlin.Int", -// "integer" to "kotlin.Int", -// "int32" to "kotlin.Int", -// "int64" to "kotlin.Long", -// ), -// ) -} - -tasks.named("compileKotlin") { - dependsOn.add(tasks.named("openApiGenerate")) -} - -dependencies { - implementation(platform(libs.okhttp.bom)) - implementation(libs.okhttp) - implementation(libs.kotlinx.serialization.core) - implementation(libs.kotlinx.serialization.json) - implementation(libs.kotlinx.coroutines.core) -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 9ef0f93c..4b95efe8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -9,9 +9,6 @@ pluginManagement { } mavenCentral() gradlePluginPortal() -// maven { -// url = uri("https://androidx.dev/snapshots/builds/14137143/artifacts/repository") -// } } } dependencyResolutionManagement { @@ -19,12 +16,8 @@ dependencyResolutionManagement { repositories { google() mavenCentral() -// maven { -// url = uri("https://androidx.dev/snapshots/builds/14137143/artifacts/repository") -// } } } rootProject.name = "Wholphin" include(":app") -include(":seerr-api")