From fcac0a202d84d168037309080d3c8c890ec9cedb Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Tue, 23 Aug 2022 13:04:54 +0000 Subject: [PATCH] Make sure getSettings() always returns settings or error --- bot/data.go | 8 ++++---- bot/mailbox.go | 5 +---- bot/owner.go | 5 +---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/bot/data.go b/bot/data.go index 7f40c1a..029cf17 100644 --- a/bot/data.go +++ b/bot/data.go @@ -18,7 +18,7 @@ type settings struct { } // Allowed checks if change is allowed -func (s *settings) Allowed(noowner bool, userID id.UserID) bool { +func (s settings) Allowed(noowner bool, userID id.UserID) bool { if noowner { return true } @@ -59,17 +59,17 @@ func (b *Bot) migrate() error { return nil } -func (b *Bot) getSettings(ctx context.Context, roomID id.RoomID) (*settings, error) { +func (b *Bot) getSettings(ctx context.Context, roomID id.RoomID) (settings, error) { span := sentry.StartSpan(ctx, "http.server", sentry.TransactionName("getSettings")) defer span.Finish() var config settings err := b.lp.GetClient().GetRoomAccountData(roomID, settingskey, &config) - return &config, err + return config, err } -func (b *Bot) setSettings(ctx context.Context, roomID id.RoomID, cfg *settings) error { +func (b *Bot) setSettings(ctx context.Context, roomID id.RoomID, cfg settings) error { span := sentry.StartSpan(ctx, "http.server", sentry.TransactionName("setSettings")) defer span.Finish() diff --git a/bot/mailbox.go b/bot/mailbox.go index 3ab9696..5408829 100644 --- a/bot/mailbox.go +++ b/bot/mailbox.go @@ -48,7 +48,7 @@ func (b *Bot) getMailbox(ctx context.Context, evt *event.Event) { defer span.Finish() cfg, err := b.getSettings(span.Context(), evt.RoomID) - if err != nil || cfg == nil { + if err != nil { b.log.Warn("cannot get %s settings: %v", evt.RoomID, err) } @@ -83,9 +83,6 @@ func (b *Bot) setMailbox(ctx context.Context, evt *event.Event, mailbox string) if err != nil { b.log.Warn("cannot get settings: %v", err) } - if cfg == nil { - cfg = &settings{} - } if !cfg.Allowed(b.noowner, evt.Sender) { b.Error(span.Context(), evt.RoomID, "you don't have permission to do that") diff --git a/bot/owner.go b/bot/owner.go index 755b718..483fd43 100644 --- a/bot/owner.go +++ b/bot/owner.go @@ -22,7 +22,7 @@ func (b *Bot) getOwner(ctx context.Context, evt *event.Event) { defer span.Finish() cfg, err := b.getSettings(span.Context(), evt.RoomID) - if err != nil || cfg == nil { + if err != nil { b.Error(span.Context(), evt.RoomID, "owner is not set yet") return } @@ -49,9 +49,6 @@ func (b *Bot) setOwner(ctx context.Context, evt *event.Event, owner string) { if err != nil { b.log.Warn("cannot get settings: %v", err) } - if cfg == nil { - cfg = &settings{} - } if !cfg.Allowed(b.noowner, evt.Sender) { b.Error(span.Context(), evt.RoomID, "you don't have permission to do that")