Skip to content

Commit

Permalink
v0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
smaugfm committed Oct 31, 2020
1 parent 7ec7bb9 commit b739a71
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 17 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ plugins {
}

group = "com.github.smaugfm"
version = "0.1-alpha"
version = "0.2-alpha"

val myMavenRepoReadUrl: String by project
val myMavenRepoReadUsername: String by project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ sealed class TransactionActionType {
}
}

fun KClass<out TransactionActionType>.serialize(): String {
return this::class.simpleName!!
inline fun <reified T : TransactionActionType> serialize(): String {
return T::class.simpleName!!
}

fun KClass<out TransactionActionType>.buttonWord(): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,18 @@ class CallbackQueryHandler(
val updatedText = updateHTMLStatementMessage(updatedTransaction, event.message)
val updatedMarkup = updateMarkupKeyboard(type, event.message.reply_markup!!)

with(event.message) {
telegram.editMessage(chat.id, message_id, text = updatedText, parseMode = "HTML", markup = updatedMarkup)
if (stripHTMLtagsFromMessage(updatedText) != event.message.text ||
updatedMarkup != event.message.reply_markup
) {
with(event.message) {
telegram.editMessage(
chat.id,
message_id,
text = updatedText,
parseMode = "HTML",
markup = updatedMarkup
)
}
}
}

Expand Down
7 changes: 6 additions & 1 deletion src/main/kotlin/com/github/smaugfm/telegram/handlers/Util.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ internal fun formatInlineKeyboard(
)
}

internal fun stripHTMLtagsFromMessage(messageText: String): String {
val replaceHtml = Regex("<.*?>")
return replaceHtml.replace(messageText, "")
}

internal fun formatHTMLStatementMessage(
description: String,
mcc: String,
Expand Down Expand Up @@ -71,6 +76,6 @@ internal inline fun <reified T : TransactionActionType> button(pressed: Set<KCla
with(T::class) {
InlineKeyboardButton(
buttonText<T>(this in pressed),
callback_data = T::class.serialize()
callback_data = serialize<T>()
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,21 +90,21 @@ class TelegramHandlerTest {
listOf(
InlineKeyboardButton(
"❌категорию",
callback_data = TransactionActionType.Uncategorize::class.serialize()
callback_data = serialize<TransactionActionType.Uncategorize>()
),
InlineKeyboardButton(
"\uD83D\uDEABunapprove",
callback_data = TransactionActionType.Unapprove::class.serialize()
callback_data = serialize<TransactionActionType.Unapprove>()
),
),
listOf(
InlineKeyboardButton(
"➡️невыясненные",
callback_data = TransactionActionType.Unknown::class.serialize()
callback_data = serialize<TransactionActionType.Unknown>()
),
InlineKeyboardButton(
"➕payee",
callback_data = TransactionActionType.MakePayee::class.serialize()
callback_data = serialize<TransactionActionType.MakePayee>()
),
)
)
Expand All @@ -113,11 +113,6 @@ class TelegramHandlerTest {
}
}

private fun replaceMessageText(messageText: String): String {
val replaceHtml = Regex("<.*?>")
return replaceHtml.replace(messageText, "")
}

@Test
fun `Test extractPayeeAndTransactionIdFromMessage`() {
val payee = "Галинка Савченко"
Expand All @@ -126,7 +121,7 @@ class TelegramHandlerTest {
getMonoResponseAndTransaction(payee, payee, "vasa", id)

val messageText = formatHTMLStatementMessage(monoResponse.statementItem, transaction)
val adjustedMessage = replaceMessageText(messageText)
val adjustedMessage = stripHTMLtagsFromMessage(messageText)
val message = mockk<Message> {
every { text } returns adjustedMessage
every { entities } returns listOf(
Expand Down Expand Up @@ -165,7 +160,7 @@ class TelegramHandlerTest {
every { id } returns transactionId
}

val messageText = replaceMessageText(
val messageText = stripHTMLtagsFromMessage(
formatHTMLStatementMessage(monoResponse.statementItem, transaction)
)
val keyboard = formatInlineKeyboard(emptySet())
Expand Down

0 comments on commit b739a71

Please sign in to comment.