refactor: Adjust koin module API
This commit is contained in:
parent
96c85a351e
commit
1a3e8a3335
3 changed files with 17 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
||||||
package io.github.null2264.tsukumogami.bot
|
package io.github.null2264.tsukumogami.bot
|
||||||
|
|
||||||
import co.touchlab.kermit.Logger
|
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.bot.core.module.generalModule
|
||||||
import io.github.null2264.tsukumogami.core.bot
|
import io.github.null2264.tsukumogami.core.bot
|
||||||
|
|
||||||
|
@ -14,5 +15,7 @@ suspend fun main() {
|
||||||
prefixes("src!", "mm!") // mm! for backwards compatibility
|
prefixes("src!", "mm!") // mm! for backwards compatibility
|
||||||
|
|
||||||
modules(generalModule)
|
modules(generalModule)
|
||||||
|
|
||||||
|
koinModules(appModule)
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,8 @@ class BotBuilder internal constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal var beforeKoinSetup: () -> Unit = {}
|
internal var earlyKoinModules = mutableListOf<KoinModule>()
|
||||||
internal var afterKoinSetup: () -> Unit = {}
|
internal var koinModules = mutableListOf<KoinModule>()
|
||||||
|
|
||||||
fun modules(vararg modules: BotModule) {
|
fun modules(vararg modules: BotModule) {
|
||||||
modules.forEach(bot::addModule)
|
modules.forEach(bot::addModule)
|
||||||
|
@ -36,12 +36,12 @@ class BotBuilder internal constructor(
|
||||||
prefixes.forEach(bot::addPrefix)
|
prefixes.forEach(bot::addPrefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun beforeKoinSetup(declaration: () -> Unit) {
|
fun earlyKoinModules(vararg modules: KoinModule) {
|
||||||
beforeKoinSetup = declaration
|
earlyKoinModules.addAll(modules)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun afterKoinSetup(declaration: () -> Unit) {
|
fun koinModules(vararg modules: KoinModule) {
|
||||||
afterKoinSetup = declaration
|
koinModules.addAll(modules)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,13 +54,13 @@ suspend fun bot(clazz: KFunction<Bot> = ::Bot, declaration: BotBuilder.() -> Uni
|
||||||
val holder = BotBuilder(bot)
|
val holder = BotBuilder(bot)
|
||||||
declaration(holder)
|
declaration(holder)
|
||||||
|
|
||||||
holder.beforeKoinSetup.invoke()
|
holder.earlyKoinModules.forEach(::loadModule)
|
||||||
|
|
||||||
val kord = holder.kordBuilder(holder.token)
|
val kord = holder.kordBuilder(holder.token)
|
||||||
loadModule { single { kord } bind Kord::class }
|
loadModule { single { kord } bind Kord::class }
|
||||||
loadModule { single { bot } bind Bot::class }
|
loadModule { single { bot } bind Bot::class }
|
||||||
|
|
||||||
holder.afterKoinSetup.invoke()
|
holder.koinModules.forEach(::loadModule)
|
||||||
|
|
||||||
return holder.bot
|
return holder.bot
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,3 +15,9 @@ fun loadModule(
|
||||||
|
|
||||||
return moduleObj
|
return moduleObj
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun loadModule(module: Module): Module {
|
||||||
|
TsukumogamiKoinContext.loadKoinModules(module)
|
||||||
|
|
||||||
|
return module
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue