From 1a3e8a333572127536c2fde0a3a4a781dfe6aca9 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Mon, 26 May 2025 07:16:02 +0700 Subject: [PATCH] refactor: Adjust koin module API --- .../io/github/null2264/tsukumogami/bot/Main.kt | 3 +++ .../null2264/tsukumogami/core/BotBuilder.kt | 16 ++++++++-------- .../tsukumogami/core/ext/KoinExtensions.kt | 6 ++++++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/bot/src/main/kotlin/io/github/null2264/tsukumogami/bot/Main.kt b/bot/src/main/kotlin/io/github/null2264/tsukumogami/bot/Main.kt index f36f020..cfba5a7 100644 --- a/bot/src/main/kotlin/io/github/null2264/tsukumogami/bot/Main.kt +++ b/bot/src/main/kotlin/io/github/null2264/tsukumogami/bot/Main.kt @@ -1,6 +1,7 @@ package io.github.null2264.tsukumogami.bot import co.touchlab.kermit.Logger +import io.github.null2264.tsukumogami.bot.core.di.appModule import io.github.null2264.tsukumogami.bot.core.module.generalModule import io.github.null2264.tsukumogami.core.bot @@ -14,5 +15,7 @@ suspend fun main() { prefixes("src!", "mm!") // mm! for backwards compatibility modules(generalModule) + + koinModules(appModule) }.start() } diff --git a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/BotBuilder.kt b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/BotBuilder.kt index a86de89..de8d262 100644 --- a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/BotBuilder.kt +++ b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/BotBuilder.kt @@ -25,8 +25,8 @@ class BotBuilder internal constructor( } } - internal var beforeKoinSetup: () -> Unit = {} - internal var afterKoinSetup: () -> Unit = {} + internal var earlyKoinModules = mutableListOf() + internal var koinModules = mutableListOf() fun modules(vararg modules: BotModule) { modules.forEach(bot::addModule) @@ -36,12 +36,12 @@ class BotBuilder internal constructor( prefixes.forEach(bot::addPrefix) } - fun beforeKoinSetup(declaration: () -> Unit) { - beforeKoinSetup = declaration + fun earlyKoinModules(vararg modules: KoinModule) { + earlyKoinModules.addAll(modules) } - fun afterKoinSetup(declaration: () -> Unit) { - afterKoinSetup = declaration + fun koinModules(vararg modules: KoinModule) { + koinModules.addAll(modules) } } @@ -54,13 +54,13 @@ suspend fun bot(clazz: KFunction = ::Bot, declaration: BotBuilder.() -> Uni val holder = BotBuilder(bot) declaration(holder) - holder.beforeKoinSetup.invoke() + holder.earlyKoinModules.forEach(::loadModule) val kord = holder.kordBuilder(holder.token) loadModule { single { kord } bind Kord::class } loadModule { single { bot } bind Bot::class } - holder.afterKoinSetup.invoke() + holder.koinModules.forEach(::loadModule) return holder.bot } diff --git a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/ext/KoinExtensions.kt b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/ext/KoinExtensions.kt index b509a2b..5cc0b17 100644 --- a/core/src/main/kotlin/io/github/null2264/tsukumogami/core/ext/KoinExtensions.kt +++ b/core/src/main/kotlin/io/github/null2264/tsukumogami/core/ext/KoinExtensions.kt @@ -15,3 +15,9 @@ fun loadModule( return moduleObj } + +fun loadModule(module: Module): Module { + TsukumogamiKoinContext.loadKoinModules(module) + + return module +}