Expose the Source baseUrl (#1585)

* Expose the source baseUrl

* Lint
This commit is contained in:
Mitchell Syer
2025-08-19 15:01:14 -04:00
committed by GitHub
parent 7b22397a82
commit 7a0d3a1efe
3 changed files with 27 additions and 18 deletions

View File

@@ -11,6 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.online.HttpSource
import graphql.schema.DataFetchingEnvironment import graphql.schema.DataFetchingEnvironment
import org.jetbrains.exposed.sql.ResultRow import org.jetbrains.exposed.sql.ResultRow
import org.jetbrains.exposed.sql.selectAll import org.jetbrains.exposed.sql.selectAll
@@ -44,6 +45,7 @@ class SourceType(
val isConfigurable: Boolean, val isConfigurable: Boolean,
val isNsfw: Boolean, val isNsfw: Boolean,
val displayName: String, val displayName: String,
val baseUrl: String?,
) : Node { ) : Node {
constructor(source: SourceDataClass) : this( constructor(source: SourceDataClass) : this(
id = source.id.toLong(), id = source.id.toLong(),
@@ -54,6 +56,7 @@ class SourceType(
isConfigurable = source.isConfigurable, isConfigurable = source.isConfigurable,
isNsfw = source.isNsfw, isNsfw = source.isNsfw,
displayName = source.displayName, displayName = source.displayName,
baseUrl = source.baseUrl,
) )
constructor(row: ResultRow, sourceExtension: ResultRow, catalogueSource: CatalogueSource) : this( constructor(row: ResultRow, sourceExtension: ResultRow, catalogueSource: CatalogueSource) : this(
@@ -65,6 +68,7 @@ class SourceType(
isConfigurable = catalogueSource is ConfigurableSource, isConfigurable = catalogueSource is ConfigurableSource,
isNsfw = row[SourceTable.isNsfw], isNsfw = row[SourceTable.isNsfw],
displayName = catalogueSource.toString(), displayName = catalogueSource.toString(),
baseUrl = catalogueSource.runCatching { (catalogueSource as? HttpSource)?.baseUrl }.getOrNull(),
) )
fun manga(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<MangaNodeList> = fun manga(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<MangaNodeList> =

View File

@@ -10,6 +10,7 @@ package suwayomi.tachidesk.manga.impl
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.sourcePreferences import eu.kanade.tachiyomi.source.sourcePreferences
import io.github.oshai.kotlinlogging.KotlinLogging import io.github.oshai.kotlinlogging.KotlinLogging
import io.javalin.json.JsonMapper import io.javalin.json.JsonMapper
@@ -41,14 +42,15 @@ object Source {
val sourceExtension = ExtensionTable.selectAll().where { ExtensionTable.id eq it[SourceTable.extension] }.first() val sourceExtension = ExtensionTable.selectAll().where { ExtensionTable.id eq it[SourceTable.extension] }.first()
SourceDataClass( SourceDataClass(
it[SourceTable.id].value.toString(), id = it[SourceTable.id].value.toString(),
it[SourceTable.name], name = it[SourceTable.name],
it[SourceTable.lang], lang = it[SourceTable.lang],
getExtensionIconUrl(sourceExtension[ExtensionTable.apkName]), iconUrl = getExtensionIconUrl(sourceExtension[ExtensionTable.apkName]),
catalogueSource.supportsLatest, supportsLatest = catalogueSource.supportsLatest,
catalogueSource is ConfigurableSource, isConfigurable = catalogueSource is ConfigurableSource,
it[SourceTable.isNsfw], isNsfw = it[SourceTable.isNsfw],
catalogueSource.toString(), displayName = catalogueSource.toString(),
baseUrl = runCatching { (catalogueSource as? HttpSource)?.baseUrl }.getOrNull(),
) )
} }
} }
@@ -61,16 +63,18 @@ object Source {
val extension = ExtensionTable.selectAll().where { ExtensionTable.id eq source[SourceTable.extension] }.first() val extension = ExtensionTable.selectAll().where { ExtensionTable.id eq source[SourceTable.extension] }.first()
SourceDataClass( SourceDataClass(
sourceId.toString(), id = sourceId.toString(),
source[SourceTable.name], name = source[SourceTable.name],
source[SourceTable.lang], lang = source[SourceTable.lang],
getExtensionIconUrl( iconUrl =
extension[ExtensionTable.apkName], getExtensionIconUrl(
), extension[ExtensionTable.apkName],
catalogueSource.supportsLatest, ),
catalogueSource is ConfigurableSource, supportsLatest = catalogueSource.supportsLatest,
source[SourceTable.isNsfw], isConfigurable = catalogueSource is ConfigurableSource,
catalogueSource.toString(), isNsfw = source[SourceTable.isNsfw],
displayName = catalogueSource.toString(),
baseUrl = runCatching { (catalogueSource as? HttpSource)?.baseUrl }.getOrNull(),
) )
} }
} }

View File

@@ -22,4 +22,5 @@ data class SourceDataClass(
val isNsfw: Boolean, val isNsfw: Boolean,
/** A nicer version of [name] */ /** A nicer version of [name] */
val displayName: String, val displayName: String,
val baseUrl: String?,
) )