diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt index 55b3618d..56639f51 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/JavalinGraphQLRequestParser.kt @@ -37,6 +37,7 @@ class JavalinGraphQLRequestParser : GraphQLRequestParser { formParam, GraphQLServerRequest::class.java, ) + @Suppress("UNCHECKED_CAST") val map = context diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt index 679c1c65..bb7c2d91 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskGraphQLContextFactory.kt @@ -5,20 +5,18 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -@file:Suppress("DEPRECATION") - package suwayomi.tachidesk.graphql.server -import com.expediagroup.graphql.generator.execution.GraphQLContext import com.expediagroup.graphql.server.execution.GraphQLContextFactory +import graphql.GraphQLContext import io.javalin.http.Context import io.javalin.websocket.WsContext /** * Custom logic for how Suwayomi-Server should create its context given the [Context] */ -class TachideskGraphQLContextFactory : GraphQLContextFactory { - override suspend fun generateContextMap(request: Context): Map<*, Any> = emptyMap() +class TachideskGraphQLContextFactory : GraphQLContextFactory { + override suspend fun generateContext(request: Context): GraphQLContext = emptyMap().toGraphQLContext() // mutableMapOf( // "user" to User( // email = "fake@site.com", @@ -30,7 +28,7 @@ class TachideskGraphQLContextFactory : GraphQLContextFactory // map["customHeader"] = customHeader // } -// } +// }.toGraphQLContext() fun generateContextMap( @Suppress("UNUSED_PARAMETER") request: WsContext, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt index 6f54ed0a..cb58e097 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/GraphQLSubscriptionHandler.kt @@ -29,8 +29,8 @@ open class GraphQLSubscriptionHandler( graphQLRequest: GraphQLRequest, graphQLContext: GraphQLContext = GraphQLContext.of(emptyMap()), ): Flow> { - val dataLoaderRegistry = dataLoaderRegistryFactory?.generate() - val input = graphQLRequest.toExecutionInput(dataLoaderRegistry, graphQLContext) + val dataLoaderRegistry = dataLoaderRegistryFactory?.generate(graphQLContext) + val input = graphQLRequest.toExecutionInput(graphQLContext, dataLoaderRegistry) val res = graphQL.execute(input) val data = res.getData>() diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt index 3319ceda..2520dcac 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ChapterType.kt @@ -44,10 +44,10 @@ class ChapterType( mangaId: Int, dataFetchingEnvironment: DataFetchingEnvironment, ) { - dataFetchingEnvironment.getDataLoader("ChapterDataLoader").clear(chapterId) - dataFetchingEnvironment.getDataLoader("ChaptersForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("ChapterDataLoader")?.clear(chapterId) + dataFetchingEnvironment.getDataLoader("ChaptersForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader")?.clear(mangaId) } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt index 03448c19..b96c9b74 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/MangaType.kt @@ -57,31 +57,31 @@ class MangaType( mangaId: Int, dataFetchingEnvironment: DataFetchingEnvironment, ) { - dataFetchingEnvironment.getDataLoader("MangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("MangaDataLoader")?.clear(mangaId) val mangaForIdsDataLoader = dataFetchingEnvironment.getDataLoader, MangaNodeList>("MangaForIdsDataLoader") @Suppress("UNCHECKED_CAST") - (mangaForIdsDataLoader.cacheMap as CustomCacheMap, MangaNodeList>) - .getKeys() - .filter { it.contains(mangaId) } - .forEach { mangaForIdsDataLoader.clear(it) } + (mangaForIdsDataLoader?.cacheMap as? CustomCacheMap, MangaNodeList>?) + ?.getKeys() + ?.filter { it.contains(mangaId) } + ?.forEach { mangaForIdsDataLoader.clear(it) } - dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("UnreadChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("BookmarkedChapterCountForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("HasDuplicateChaptersForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestReadChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestFetchedChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("LatestUploadedChapterForMangaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("FirstUnreadChapterForMangaDataLoader").clear(mangaId) + dataFetchingEnvironment.getDataLoader("DownloadedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("UnreadChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("BookmarkedChapterCountForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("HasDuplicateChaptersForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LastReadChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestReadChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestFetchedChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("LatestUploadedChapterForMangaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("FirstUnreadChapterForMangaDataLoader")?.clear(mangaId) dataFetchingEnvironment .getDataLoader( "ChaptersForMangaDataLoader", - ).clear(mangaId) - dataFetchingEnvironment.getDataLoader>("MangaMetaDataLoader").clear(mangaId) - dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader").clear(mangaId) + )?.clear(mangaId) + dataFetchingEnvironment.getDataLoader>("MangaMetaDataLoader")?.clear(mangaId) + dataFetchingEnvironment.getDataLoader("CategoriesForMangaDataLoader")?.clear(mangaId) } }