From 07b757ddad48993f973435ba5a0bac5e806d4092 Mon Sep 17 00:00:00 2001 From: Pascal Precht Date: Wed, 15 Jul 2020 13:01:19 +0200 Subject: [PATCH] Rely on parsedText to determine imageURLs --- src/signals/messages.nim | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/signals/messages.nim b/src/signals/messages.nim index fe1109cdf6..0864f202a7 100644 --- a/src/signals/messages.nim +++ b/src/signals/messages.nim @@ -140,10 +140,6 @@ proc toTextItem*(jsonText: JsonNode): TextItem = proc toMessage*(jsonMsg: JsonNode): Message = - let - regex = re(r"(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|].(?:jpg|jpeg|gif|png|svg))", flags = {reStudy, reIgnoreCase}) - text = jsonMsg{"text"}.getStr - imageUrls = findAll(text, regex) var message = Message( alias: jsonMsg{"alias"}.getStr, @@ -170,17 +166,19 @@ proc toMessage*(jsonMsg: JsonNode): Message = parsedText: @[], imageUrls: "" ) - - if imageUrls.len > 0: - message.imageUrls = imageUrls.join(" ") - - result = message if jsonMsg["parsedText"].kind != JNull: for text in jsonMsg["parsedText"]: - result.parsedText.add(text.toTextItem) + message.parsedText.add(text.toTextItem) - if result.contentType == ContentType.Sticker: - result.stickerHash = jsonMsg["sticker"]["hash"].getStr + message.imageUrls = concat(message.parsedText.map(t => t.children.filter(c => c.textType == "link"))) + .filter(t => [".png", ".jpg", ".jpeg", ".svg", ".gif"].any(ext => t.destination.endsWith(ext))) + .map(t => t.destination) + .join(" ") + + if message.contentType == ContentType.Sticker: + message.stickerHash = jsonMsg["sticker"]["hash"].getStr + + result = message