X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/80e348724041a694002fc38f57e8868b9b9a2be9..0979625154094df73577d6e2be2d0e9a0a87306c:/whatsapp_inbox.go?ds=inline diff --git a/whatsapp_inbox.go b/whatsapp_inbox.go index a104a0d..5010a74 100644 --- a/whatsapp_inbox.go +++ b/whatsapp_inbox.go @@ -230,6 +230,36 @@ func (i *WhatsAppInbox) startCatchup() { }) } +// caughtUpBy ends the catch-up of the connection with the number catchups, when +// no later connection started a new one. +func (i *WhatsAppInbox) caughtUpBy(catchups int) { + i.mutex.Lock() + defer i.mutex.Unlock() + + if i.catchups == catchups { + i.finishCatchup() + } +} + +// finishCatchup ends a running catch-up and wakes Run, which logs all batches. +// The caller holds the mutex. +func (i *WhatsAppInbox) finishCatchup() { + if !i.catchingUp { + return + } + + i.catchingUp = false + i.caughtUp = true + if i.catchupTimer != nil { + i.catchupTimer.Stop() + } + + select { + case i.wake <- struct{}{}: + default: + } +} + // receive stores images and transcribed voice notes before their batches and // wakes Run. link gives the device and the own IDs. It returns false when the // state file cannot hold the message, so that the library does not acknowledge @@ -292,36 +322,6 @@ func (i *WhatsAppInbox) imageText(ctx context.Context, link WhatsAppLink, event return imageText([]string{name}, caption) } -// caughtUpBy ends the catch-up of the connection with the number catchups, when -// no later connection started a new one. -func (i *WhatsAppInbox) caughtUpBy(catchups int) { - i.mutex.Lock() - defer i.mutex.Unlock() - - if i.catchups == catchups { - i.finishCatchup() - } -} - -// finishCatchup ends a running catch-up and wakes Run, which logs all batches. -// The caller holds the mutex. -func (i *WhatsAppInbox) finishCatchup() { - if !i.catchingUp { - return - } - - i.catchingUp = false - i.caughtUp = true - if i.catchupTimer != nil { - i.catchupTimer.Stop() - } - - select { - case i.wake <- struct{}{}: - default: - } -} - // endCatchup ends a running catch-up at OfflineSyncCompleted. func (i *WhatsAppInbox) endCatchup() { i.mutex.Lock()