From 1b37cae9e7b5448f47e3f4d784aa98f52111da06 Mon Sep 17 00:00:00 2001 From: "Evgeniy Andreev (gsomix)" Date: Thu, 1 Oct 2020 13:06:19 +0400 Subject: [PATCH] Remove message about unavailable link (#115) --- Emulsion.Tests/Telegram/FunogramTests.fs | 18 ++++++++++++++++++ Emulsion/Telegram/Funogram.fs | 23 +++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Emulsion.Tests/Telegram/FunogramTests.fs b/Emulsion.Tests/Telegram/FunogramTests.fs index 42119192..24c98254 100644 --- a/Emulsion.Tests/Telegram/FunogramTests.fs +++ b/Emulsion.Tests/Telegram/FunogramTests.fs @@ -187,6 +187,15 @@ module ReadMessageTests = readMessage (createMessage None None) ) + [] + let readMessageWithoutTextAndLink() = + let privateChat = { currentChat with Type = ChatType.Private } + let expectedMessage = { createMessage None None with Chat = privateChat } + Assert.Equal( + authoredTelegramMessage "[UNKNOWN USER]" "[DATA UNRECOGNIZED]", + readMessage (expectedMessage) + ) + [] let readReplyMessage() = let originalMessage = createMessage (Some originalUser) (Some "Original text") @@ -376,6 +385,15 @@ module ReadMessageTests = readMessage message ) + [] + let readContentWithoutLink() = + let privateChat = { currentChat with Type = ChatType.Private } + let message = { createMessageWithCaption originalUser "test" with Chat = privateChat } + Assert.Equal( + authoredTelegramMessage "@originalUser" "[Unknown content with caption \"test\"]", + readMessage message + ) + [] let readPollMessage() = let message = createPoll originalUser "Question?" [|"Option 1"; "Option 2"|] diff --git a/Emulsion/Telegram/Funogram.fs b/Emulsion/Telegram/Funogram.fs index c1e0cba5..17801844 100644 --- a/Emulsion/Telegram/Funogram.fs +++ b/Emulsion/Telegram/Funogram.fs @@ -149,7 +149,7 @@ module MessageConverter = Chat = { Type = SuperGroup Username = Some chatName } } -> sprintf "https://t.me/%s/%d" chatName id - | _ -> "[CANNOT RETRIEVE LINK]" + | _ -> String.Empty let private getAuthoredMessageBodyText (message: FunogramMessage) = let (|Text|_|) (message: FunogramMessage) = message.Text @@ -166,21 +166,28 @@ module MessageConverter = then None else Some (contentType, message.Caption) + let appendLink link text = + if String.IsNullOrEmpty link + then text + else sprintf "%s: %s" text link + let text = match message with | Text text -> applyEntities message.Entities text | Content (contentType, caption) -> - match caption with - | Some caption -> - let text = applyEntities message.CaptionEntities caption - sprintf "[%s with caption \"%s\"]: %s" contentType text (getLinkToMessage message) - | None -> - sprintf "[%s]: %s" contentType (getLinkToMessage message) + let contentInfo = + match caption with + | Some caption -> + let text = applyEntities message.CaptionEntities caption + sprintf "[%s with caption \"%s\"]" contentType text + | None -> + sprintf "[%s]" contentType + contentInfo |> appendLink (getLinkToMessage message) | Poll poll -> let text = getPollText poll sprintf "[Poll] %s" text | _ -> - sprintf "[DATA UNRECOGNIZED]: %s" (getLinkToMessage message) + "[DATA UNRECOGNIZED]" |> appendLink (getLinkToMessage message) if Option.isSome message.ForwardFrom then