Skip to content

Commit b739a71

Browse files
committed
v0.2
1 parent 7ec7bb9 commit b739a71

File tree

5 files changed

+27
-17
lines changed

5 files changed

+27
-17
lines changed

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group = "com.github.smaugfm"
13-
version = "0.1-alpha"
13+
version = "0.2-alpha"
1414

1515
val myMavenRepoReadUrl: String by project
1616
val myMavenRepoReadUsername: String by project

src/main/kotlin/com/github/smaugfm/telegram/TransactionActionType.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ sealed class TransactionActionType {
3737
}
3838
}
3939

40-
fun KClass<out TransactionActionType>.serialize(): String {
41-
return this::class.simpleName!!
40+
inline fun <reified T : TransactionActionType> serialize(): String {
41+
return T::class.simpleName!!
4242
}
4343

4444
fun KClass<out TransactionActionType>.buttonWord(): String {

src/main/kotlin/com/github/smaugfm/telegram/handlers/CallbackQueryHandler.kt

+12-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,18 @@ class CallbackQueryHandler(
4747
val updatedText = updateHTMLStatementMessage(updatedTransaction, event.message)
4848
val updatedMarkup = updateMarkupKeyboard(type, event.message.reply_markup!!)
4949

50-
with(event.message) {
51-
telegram.editMessage(chat.id, message_id, text = updatedText, parseMode = "HTML", markup = updatedMarkup)
50+
if (stripHTMLtagsFromMessage(updatedText) != event.message.text ||
51+
updatedMarkup != event.message.reply_markup
52+
) {
53+
with(event.message) {
54+
telegram.editMessage(
55+
chat.id,
56+
message_id,
57+
text = updatedText,
58+
parseMode = "HTML",
59+
markup = updatedMarkup
60+
)
61+
}
5262
}
5363
}
5464

src/main/kotlin/com/github/smaugfm/telegram/handlers/Util.kt

+6-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ internal fun formatInlineKeyboard(
2929
)
3030
}
3131

32+
internal fun stripHTMLtagsFromMessage(messageText: String): String {
33+
val replaceHtml = Regex("<.*?>")
34+
return replaceHtml.replace(messageText, "")
35+
}
36+
3237
internal fun formatHTMLStatementMessage(
3338
description: String,
3439
mcc: String,
@@ -71,6 +76,6 @@ internal inline fun <reified T : TransactionActionType> button(pressed: Set<KCla
7176
with(T::class) {
7277
InlineKeyboardButton(
7378
buttonText<T>(this in pressed),
74-
callback_data = T::class.serialize()
79+
callback_data = serialize<T>()
7580
)
7681
}

src/test/kotlin/com/github/smaugfm/telegram/handlers/TelegramHandlerTest.kt

+6-11
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,21 @@ class TelegramHandlerTest {
9090
listOf(
9191
InlineKeyboardButton(
9292
"❌категорию",
93-
callback_data = TransactionActionType.Uncategorize::class.serialize()
93+
callback_data = serialize<TransactionActionType.Uncategorize>()
9494
),
9595
InlineKeyboardButton(
9696
"\uD83D\uDEABunapprove",
97-
callback_data = TransactionActionType.Unapprove::class.serialize()
97+
callback_data = serialize<TransactionActionType.Unapprove>()
9898
),
9999
),
100100
listOf(
101101
InlineKeyboardButton(
102102
"➡️невыясненные",
103-
callback_data = TransactionActionType.Unknown::class.serialize()
103+
callback_data = serialize<TransactionActionType.Unknown>()
104104
),
105105
InlineKeyboardButton(
106106
"➕payee",
107-
callback_data = TransactionActionType.MakePayee::class.serialize()
107+
callback_data = serialize<TransactionActionType.MakePayee>()
108108
),
109109
)
110110
)
@@ -113,11 +113,6 @@ class TelegramHandlerTest {
113113
}
114114
}
115115

116-
private fun replaceMessageText(messageText: String): String {
117-
val replaceHtml = Regex("<.*?>")
118-
return replaceHtml.replace(messageText, "")
119-
}
120-
121116
@Test
122117
fun `Test extractPayeeAndTransactionIdFromMessage`() {
123118
val payee = "Галинка Савченко"
@@ -126,7 +121,7 @@ class TelegramHandlerTest {
126121
getMonoResponseAndTransaction(payee, payee, "vasa", id)
127122

128123
val messageText = formatHTMLStatementMessage(monoResponse.statementItem, transaction)
129-
val adjustedMessage = replaceMessageText(messageText)
124+
val adjustedMessage = stripHTMLtagsFromMessage(messageText)
130125
val message = mockk<Message> {
131126
every { text } returns adjustedMessage
132127
every { entities } returns listOf(
@@ -165,7 +160,7 @@ class TelegramHandlerTest {
165160
every { id } returns transactionId
166161
}
167162

168-
val messageText = replaceMessageText(
163+
val messageText = stripHTMLtagsFromMessage(
169164
formatHTMLStatementMessage(monoResponse.statementItem, transaction)
170165
)
171166
val keyboard = formatInlineKeyboard(emptySet())

0 commit comments

Comments
 (0)