From 3343007cf850a471b0a8b8a6674e7d492282c5fc Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 27 Aug 2023 04:19:51 +0200 Subject: [PATCH] Add mutation to install external extension (#667) --- .../graphql/mutations/ExtensionMutation.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ExtensionMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ExtensionMutation.kt index 6211fae7..b993b38a 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ExtensionMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/ExtensionMutation.kt @@ -1,6 +1,7 @@ package suwayomi.tachidesk.graphql.mutations import eu.kanade.tachiyomi.source.local.LocalSource +import io.javalin.http.UploadedFile import org.jetbrains.exposed.sql.select import org.jetbrains.exposed.sql.transactions.transaction import suwayomi.tachidesk.graphql.types.ExtensionType @@ -124,4 +125,29 @@ class ExtensionMutation { ) } } + + data class InstallExternalExtensionInput( + val clientMutationId: String? = null, + val extensionFile: UploadedFile + ) + + data class InstallExternalExtensionPayload( + val clientMutationId: String?, + val extension: ExtensionType + ) + + fun installExternalExtension(input: InstallExternalExtensionInput): CompletableFuture { + val (clientMutationId, extensionFile) = input + + return future { + Extension.installExternalExtension(extensionFile.content, extensionFile.filename) + }.thenApply { + val dbExtension = transaction { ExtensionTable.select { ExtensionTable.apkName eq extensionFile.filename }.first() } + + InstallExternalExtensionPayload( + clientMutationId, + extension = ExtensionType(dbExtension) + ) + } + } }