From 9d530303dc5967a7c9d42d3e714fab3c5a28fe4e Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 21 Apr 2022 20:43:12 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20InlineKeyboardCallback=20=E7=9A=84?= =?UTF-8?q?=20next=20=E6=96=B9=E6=B3=95=E6=94=AF=E6=8C=81=E8=A6=86?= =?UTF-8?q?=E7=9B=96=20ExtraData=20=E7=8E=B0=E6=9C=89=E5=80=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过该改动, 将允许使用提供的 JsonObject 覆盖原有的 JsonObject, 便于少量数据调整的情况. --- src/main/kotlin/Utils.kt | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/Utils.kt b/src/main/kotlin/Utils.kt index 78f4325..fe16d59 100644 --- a/src/main/kotlin/Utils.kt +++ b/src/main/kotlin/Utils.kt @@ -306,8 +306,28 @@ data class InlineKeyboardCallback( return gson.toJson(this) } - fun next(newAction: String, newExtraData: JsonObject? = null): InlineKeyboardCallback { - return InlineKeyboardCallback(newAction, newExtraData ?: this.extraData) + /** + * 创建下一动作的回调数据对象. + * @param newAction 下一个动作名称. + * @param newExtraData 新的回调额外数据, 如果不为 null, 将会跟原本的 JsonObject 合并, 重复项将使用新 JsonObject 的值. + * @return 返回新的回调数据对象. + */ + fun next( + newAction: String, + newExtraData: JsonObject? = null, + replaceData: Boolean = false + ): InlineKeyboardCallback { + if (newExtraData != null) { + if (replaceData) { + return InlineKeyboardCallback(newAction, newExtraData) + } + val nextExtraData = this.extraData.deepCopy() + for (key in newExtraData.keySet()) { + nextExtraData.add(key, newExtraData[key]) + } + return InlineKeyboardCallback(newAction, nextExtraData) + } + return InlineKeyboardCallback(newAction, this.extraData) } companion object { @@ -378,3 +398,15 @@ fun jsonObjectOf(block: JsonObjectBuilder.() -> Unit): JsonObject { return jsonObject } +object JsonFields { + /** + * [OracleAccountProfile] 字段 + */ + const val AccountProfile = "account_profile" + + /** + * [ServerInstance] + */ + const val ServerInstance = "server_instance" + +}