Fix sync display name and delete after issue

This commit is contained in:
binwiederhier 2023-01-24 15:05:19 -05:00
parent 3e48c86ee9
commit eecd689ad5
4 changed files with 16 additions and 15 deletions

View File

@ -1328,6 +1328,7 @@ func (s *Server) execManager() {
var subscribers int var subscribers int
for _, t := range s.topics { for _, t := range s.topics {
subs := t.SubscribersCount() subs := t.SubscribersCount()
log.Trace("- topic %s: %d subscribers", t.ID, subs)
msgs, exists := messageCounts[t.ID] msgs, exists := messageCounts[t.ID]
if subs == 0 && (!exists || msgs == 0) { if subs == 0 && (!exists || msgs == 0) {
log.Trace("Deleting empty topic %s", t.ID) log.Trace("Deleting empty topic %s", t.ID)

View File

@ -72,8 +72,8 @@ func (s *Server) handleAccountGet(w http.ResponseWriter, _ *http.Request, v *vis
response.Role = string(v.user.Role) response.Role = string(v.user.Role)
response.SyncTopic = v.user.SyncTopic response.SyncTopic = v.user.SyncTopic
if v.user.Prefs != nil { if v.user.Prefs != nil {
if v.user.Prefs.Language != "" { if v.user.Prefs.Language != nil {
response.Language = v.user.Prefs.Language response.Language = *v.user.Prefs.Language
} }
if v.user.Prefs.Notification != nil { if v.user.Prefs.Notification != nil {
response.Notification = v.user.Prefs.Notification response.Notification = v.user.Prefs.Notification
@ -210,20 +210,20 @@ func (s *Server) handleAccountSettingsChange(w http.ResponseWriter, r *http.Requ
v.user.Prefs = &user.Prefs{} v.user.Prefs = &user.Prefs{}
} }
prefs := v.user.Prefs prefs := v.user.Prefs
if newPrefs.Language != "" { if newPrefs.Language != nil {
prefs.Language = newPrefs.Language prefs.Language = newPrefs.Language
} }
if newPrefs.Notification != nil { if newPrefs.Notification != nil {
if prefs.Notification == nil { if prefs.Notification == nil {
prefs.Notification = &user.NotificationPrefs{} prefs.Notification = &user.NotificationPrefs{}
} }
if newPrefs.Notification.DeleteAfter > 0 { if newPrefs.Notification.DeleteAfter != nil {
prefs.Notification.DeleteAfter = newPrefs.Notification.DeleteAfter prefs.Notification.DeleteAfter = newPrefs.Notification.DeleteAfter
} }
if newPrefs.Notification.Sound != "" { if newPrefs.Notification.Sound != nil {
prefs.Notification.Sound = newPrefs.Notification.Sound prefs.Notification.Sound = newPrefs.Notification.Sound
} }
if newPrefs.Notification.MinPriority > 0 { if newPrefs.Notification.MinPriority != nil {
prefs.Notification.MinPriority = newPrefs.Notification.MinPriority prefs.Notification.MinPriority = newPrefs.Notification.MinPriority
} }
} }

View File

@ -64,7 +64,7 @@ func (t *topic) Publish(v *visitor, m *message) error {
// we don't want individual slow subscribers to be able to block others. // we don't want individual slow subscribers to be able to block others.
go func(s subscriber) { go func(s subscriber) {
if err := s(v, m); err != nil { if err := s(v, m); err != nil {
log.Warn("%s Error forwarding to subscriber", logMessagePrefix(v, m)) log.Warn("%s Error forwarding to subscriber: %s", logMessagePrefix(v, m), err.Error())
} }
}(s.subscriber) }(s.subscriber)
} }

View File

@ -43,7 +43,7 @@ type Token struct {
// Prefs represents a user's configuration settings // Prefs represents a user's configuration settings
type Prefs struct { type Prefs struct {
Language string `json:"language,omitempty"` Language *string `json:"language,omitempty"`
Notification *NotificationPrefs `json:"notification,omitempty"` Notification *NotificationPrefs `json:"notification,omitempty"`
Subscriptions []*Subscription `json:"subscriptions,omitempty"` Subscriptions []*Subscription `json:"subscriptions,omitempty"`
} }
@ -65,17 +65,17 @@ type Tier struct {
// Subscription represents a user's topic subscription // Subscription represents a user's topic subscription
type Subscription struct { type Subscription struct {
ID string `json:"id"` ID string `json:"id"`
BaseURL string `json:"base_url"` BaseURL string `json:"base_url"`
Topic string `json:"topic"` Topic string `json:"topic"`
DisplayName string `json:"display_name"` DisplayName *string `json:"display_name"`
} }
// NotificationPrefs represents the user's notification settings // NotificationPrefs represents the user's notification settings
type NotificationPrefs struct { type NotificationPrefs struct {
Sound string `json:"sound,omitempty"` Sound *string `json:"sound,omitempty"`
MinPriority int `json:"min_priority,omitempty"` MinPriority *int `json:"min_priority,omitempty"`
DeleteAfter int `json:"delete_after,omitempty"` DeleteAfter *int `json:"delete_after,omitempty"`
} }
// Stats is a struct holding daily user statistics // Stats is a struct holding daily user statistics