diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SourceType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SourceType.kt index 87fb1fd2..a2d03cb1 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SourceType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/SourceType.kt @@ -11,6 +11,7 @@ import com.expediagroup.graphql.server.extensions.getValueFromDataLoader import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.online.HttpSource import graphql.schema.DataFetchingEnvironment import org.jetbrains.exposed.sql.ResultRow import org.jetbrains.exposed.sql.selectAll @@ -44,6 +45,7 @@ class SourceType( val isConfigurable: Boolean, val isNsfw: Boolean, val displayName: String, + val baseUrl: String?, ) : Node { constructor(source: SourceDataClass) : this( id = source.id.toLong(), @@ -54,6 +56,7 @@ class SourceType( isConfigurable = source.isConfigurable, isNsfw = source.isNsfw, displayName = source.displayName, + baseUrl = source.baseUrl, ) constructor(row: ResultRow, sourceExtension: ResultRow, catalogueSource: CatalogueSource) : this( @@ -65,6 +68,7 @@ class SourceType( isConfigurable = catalogueSource is ConfigurableSource, isNsfw = row[SourceTable.isNsfw], displayName = catalogueSource.toString(), + baseUrl = catalogueSource.runCatching { (catalogueSource as? HttpSource)?.baseUrl }.getOrNull(), ) fun manga(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture = diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Source.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Source.kt index a177abb9..4a35b924 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Source.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Source.kt @@ -10,6 +10,7 @@ package suwayomi.tachidesk.manga.impl import androidx.preference.Preference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.source.ConfigurableSource +import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.sourcePreferences import io.github.oshai.kotlinlogging.KotlinLogging import io.javalin.json.JsonMapper @@ -41,14 +42,15 @@ object Source { val sourceExtension = ExtensionTable.selectAll().where { ExtensionTable.id eq it[SourceTable.extension] }.first() SourceDataClass( - it[SourceTable.id].value.toString(), - it[SourceTable.name], - it[SourceTable.lang], - getExtensionIconUrl(sourceExtension[ExtensionTable.apkName]), - catalogueSource.supportsLatest, - catalogueSource is ConfigurableSource, - it[SourceTable.isNsfw], - catalogueSource.toString(), + id = it[SourceTable.id].value.toString(), + name = it[SourceTable.name], + lang = it[SourceTable.lang], + iconUrl = getExtensionIconUrl(sourceExtension[ExtensionTable.apkName]), + supportsLatest = catalogueSource.supportsLatest, + isConfigurable = catalogueSource is ConfigurableSource, + isNsfw = it[SourceTable.isNsfw], + 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() SourceDataClass( - sourceId.toString(), - source[SourceTable.name], - source[SourceTable.lang], - getExtensionIconUrl( - extension[ExtensionTable.apkName], - ), - catalogueSource.supportsLatest, - catalogueSource is ConfigurableSource, - source[SourceTable.isNsfw], - catalogueSource.toString(), + id = sourceId.toString(), + name = source[SourceTable.name], + lang = source[SourceTable.lang], + iconUrl = + getExtensionIconUrl( + extension[ExtensionTable.apkName], + ), + supportsLatest = catalogueSource.supportsLatest, + isConfigurable = catalogueSource is ConfigurableSource, + isNsfw = source[SourceTable.isNsfw], + displayName = catalogueSource.toString(), + baseUrl = runCatching { (catalogueSource as? HttpSource)?.baseUrl }.getOrNull(), ) } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/SourceDataClass.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/SourceDataClass.kt index 834319f2..6dd97ed7 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/SourceDataClass.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/dataclass/SourceDataClass.kt @@ -22,4 +22,5 @@ data class SourceDataClass( val isNsfw: Boolean, /** A nicer version of [name] */ val displayName: String, + val baseUrl: String?, )