X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/0cb73c3dde36d0078f3c1aa4200f2edcb5ceed38..42b4acd4ba70d3c12da4513d139717e592eefe4a:/whatsapp.go?ds=inline diff --git a/whatsapp.go b/whatsapp.go index df43e8e..27dd3c3 100644 --- a/whatsapp.go +++ b/whatsapp.go @@ -197,7 +197,7 @@ func openWhatsApp(ctx context.Context, dir string, clock func() time.Time, logge w.state, err = openWhatsAppState(filepath.Join(w.dir, whatsappStateFileName)) if err != nil { - return nil, err + return nil, fmt.Errorf("open WhatsApp state: %w", err) } w.inbox = newWhatsAppInbox(w.state, clock, w.groups, &ImageStore{dir: filepath.Join(dir, imageDirName)}, logger) @@ -217,7 +217,7 @@ func openWhatsApp(ctx context.Context, dir string, clock func() time.Time, logge err = w.openSession(ctx) if err != nil { - return nil, err + return nil, fmt.Errorf("open WhatsApp session: %w", err) } if w.device.ID != nil { @@ -239,7 +239,7 @@ func (w *WhatsApp) sessionPath() string { func (w *WhatsApp) openSession(ctx context.Context) error { address, err := whatsappSessionAddress(w.sessionPath()) if err != nil { - return err + return fmt.Errorf("find WhatsApp session address: %w", err) } container, err := sqlstore.New(ctx, "sqlite", address, waLog.Noop) @@ -323,14 +323,18 @@ func (w *WhatsApp) Run(ctx context.Context, l *TurnLoop, notify func(Event)) err for { err := w.inbox.deliver(ctx, l, w.link(), false) if err != nil { - return err + return fmt.Errorf("deliver WhatsApp inbox: %w", err) } select { case <-ctx.Done(): return nil case err = <-w.inbox.failures: - return err + if err != nil { + return fmt.Errorf("receive WhatsApp inbox: %w", err) + } + + return nil case <-w.inbox.wake: case <-w.inbox.due(): case <-retry: @@ -340,7 +344,7 @@ func (w *WhatsApp) Run(ctx context.Context, l *TurnLoop, notify func(Event)) err err = w.loggedOut(ctx, l) if err != nil { - return err + return fmt.Errorf("handle WhatsApp logout: %w", err) } case request := <-w.requests: cancel() @@ -355,7 +359,7 @@ func (w *WhatsApp) Run(ctx context.Context, l *TurnLoop, notify func(Event)) err err = w.unlink(ctx, l, request.answer) if err != nil { - return err + return fmt.Errorf("unlink WhatsApp: %w", err) } case w.isLinked(): request.answer("WhatsApp is linked already. Run /whatsapp unlink first.") @@ -885,7 +889,7 @@ func (w *WhatsApp) newDevice(ctx context.Context) (*store.Device, error) { err = w.openSession(ctx) if err != nil { - return nil, err + return nil, fmt.Errorf("open new WhatsApp session: %w", err) } }