diff --git a/internal/op/room.go b/internal/op/room.go index ce73305..c4ec8c2 100644 --- a/internal/op/room.go +++ b/internal/op/room.go @@ -509,11 +509,7 @@ func (r *Room) SetSettings(settings *model.RoomSettings) error { if err != nil { return err } - r.Settings = settings - if settings.DisableGuest { - return r.KickUser(db.GuestUserID) - } - return nil + return r.afterUpdateSettings(settings) } func (r *Room) UpdateSettings(settings map[string]any) error { @@ -521,6 +517,13 @@ func (r *Room) UpdateSettings(settings map[string]any) error { if err != nil { return err } + return r.afterUpdateSettings(rs) +} + +func (r *Room) afterUpdateSettings(rs *model.RoomSettings) error { + if r.Settings.GuestPermissions != rs.GuestPermissions { + r.members.Delete(db.GuestUserID) + } r.Settings = rs if rs.DisableGuest { return r.KickUser(db.GuestUserID)