From c63932686a53c0ff4bce631fa6a9c71f431f81ff Mon Sep 17 00:00:00 2001 From: Hugo Thunnissen Date: Tue, 14 Jan 2020 18:11:38 +0100 Subject: [PATCH] Mark media messages as sent when a 404 is returned while downloading --- whappdc/message_handlers.go | 8 ++++++++ whappdc/whapp_context.go | 12 ++++++++++++ whappdc/whapp_handler.go | 1 + 3 files changed, 21 insertions(+) diff --git a/whappdc/message_handlers.go b/whappdc/message_handlers.go index 5a17467..f3e901e 100644 --- a/whappdc/message_handlers.go +++ b/whappdc/message_handlers.go @@ -62,6 +62,8 @@ func MakeImageMessageAction(w *WhappContext, m whatsapp.ImageMessage) MessageAct if err != nil { w.BridgeCtx.SendLog(err.Error()) + w.markSentIf404Download(&m.Info.Id, err) + return err } @@ -103,6 +105,8 @@ func MakeDocumentMessageAction(w *WhappContext, m whatsapp.DocumentMessage) Mess if err != nil { w.BridgeCtx.SendLog(err.Error()) + w.markSentIf404Download(&m.Info.Id, err) + return err } @@ -144,6 +148,8 @@ func MakeAudioMessageAction(w *WhappContext, m whatsapp.AudioMessage) MessageAct if err != nil { w.BridgeCtx.SendLog(err.Error()) + w.markSentIf404Download(&m.Info.Id, err) + return err } @@ -185,6 +191,8 @@ func MakeVideoMessageAction(w *WhappContext, m whatsapp.VideoMessage) MessageAct if err != nil { w.BridgeCtx.SendLog(err.Error()) + w.markSentIf404Download(&m.Info.Id, err) + return err } diff --git a/whappdc/whapp_context.go b/whappdc/whapp_context.go index c20710f..c8378e7 100644 --- a/whappdc/whapp_context.go +++ b/whappdc/whapp_context.go @@ -91,3 +91,15 @@ func (w *WhappContext) ShouldMessageBeSent(info whatsapp.MessageInfo) bool { func (w *WhappContext) DCCtx() *deltachat.Context { return w.BridgeCtx.DCContext } + +// Helper to easily mark failed media downloads as sent anyways. +func (w *WhappContext) markSentIf404Download(ID *string, err error) { + if err == whatsapp.ErrMediaDownloadFailedWith404 { + err := w.MessageTracker.MarkSent(ID) + + if err != nil { + log.Println(err) + w.BridgeCtx.SendLog(err.Error()) + } + } +} diff --git a/whappdc/whapp_handler.go b/whappdc/whapp_handler.go index 9660f34..96b6481 100644 --- a/whappdc/whapp_handler.go +++ b/whappdc/whapp_handler.go @@ -9,6 +9,7 @@ import ( core "github.com/hugot/whapp-deltachat/whappdc-core" ) +// WhappHandler implements go-whaptsapp.Handler type WhappHandler struct { WhappCtx *WhappContext MessageWorker *MessageWorker