complete panel

This commit is contained in:
2022-09-15 01:39:51 +06:00
parent dfa748b1e7
commit 849df78238
8 changed files with 194 additions and 22 deletions

View File

@@ -0,0 +1,8 @@
package dev.inmo.plaguposter.posts.panel
import dev.inmo.plaguposter.posts.models.RegisteredPost
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton
fun interface PanelButtonBuilder {
suspend fun buildButton(post: RegisteredPost): InlineKeyboardButton?
}

View File

@@ -1,9 +0,0 @@
package dev.inmo.plaguposter.posts.panel
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.InlineKeyboardButton
import kotlinx.serialization.Serializable
@Serializable
data class PanelButtonSettings(
val button: InlineKeyboardButton
)

View File

@@ -0,0 +1,29 @@
package dev.inmo.plaguposter.posts.panel
import dev.inmo.tgbotapi.types.buttons.InlineKeyboardButtons.CallbackDataInlineKeyboardButton
class PanelButtonsAPI(
private val preset: List<PanelButtonBuilder>,
private val rootPanelButtonText: String
) {
private val _buttons = mutableSetOf<PanelButtonBuilder>().also {
it.addAll(preset)
}
internal val buttonsBuilders: List<PanelButtonBuilder>
get() = _buttons.toList()
val RootPanelButtonBuilder = PanelButtonBuilder {
CallbackDataInlineKeyboardButton(
rootPanelButtonText,
"$openGlobalMenuDataPrefix${it.id.string}"
)
}
fun add(button: PanelButtonBuilder) = _buttons.add(button)
fun remove(button: PanelButtonBuilder) = _buttons.remove(button)
companion object {
internal const val openGlobalMenuData = "force_refresh_panel"
internal const val openGlobalMenuDataPrefix = "$openGlobalMenuData "
}
}