From 32eddf7498858e5d1a650d768c958cc94ca30604 Mon Sep 17 00:00:00 2001 From: Hugo Thunnissen Date: Tue, 14 Jan 2020 10:48:50 +0100 Subject: [PATCH] Flush the message tracker at a regular interval --- main.go | 2 ++ whappdc-core/message_tracker.go | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/main.go b/main.go index d1f624a..6ecd371 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "os" "os/signal" "syscall" + "time" "github.com/hugot/go-deltachat/deltabot" "github.com/hugot/go-deltachat/deltachat" @@ -40,6 +41,7 @@ func main() { messageTracker := &core.MessageTracker{ DB: db, } + messageTracker.FlushWithInterval(15 * time.Minute) defer messageTracker.Flush() diff --git a/whappdc-core/message_tracker.go b/whappdc-core/message_tracker.go index 5fdddad..71f3095 100644 --- a/whappdc-core/message_tracker.go +++ b/whappdc-core/message_tracker.go @@ -1,7 +1,9 @@ package core import ( + "log" "sync" + "time" ) // MessageTracker will keep track of encountered whatsapp messages to prevent sending them @@ -53,3 +55,16 @@ func (t *MessageTracker) Flush() error { func (t *MessageTracker) WasSent(ID string) (bool, error) { return t.DB.WhappMessageWasSent(ID) } + +func (t *MessageTracker) FlushWithInterval(interval time.Duration) { + go func() { + for { + time.Sleep(interval) + err := t.Flush() + + if err != nil { + log.Println(err) + } + } + }() +}