diff --git a/protocol/communities/community.go b/protocol/communities/community.go index c8dbf4749..ecc942ca9 100644 --- a/protocol/communities/community.go +++ b/protocol/communities/community.go @@ -301,6 +301,16 @@ func (o *Community) OutroMessage() string { return "" } +func (o *Community) Color() string { + if o != nil && + o.config != nil && + o.config.CommunityDescription != nil && + o.config.CommunityDescription.Identity != nil { + return o.config.CommunityDescription.Identity.Color + } + return "" +} + func (o *Community) MembersCount() int { if o != nil && o.config != nil && @@ -1069,24 +1079,59 @@ func (o *Community) ToBytes() ([]byte, error) { } func (o *Community) Chats() map[string]*protobuf.CommunityChat { - o.mutex.Lock() - defer o.mutex.Unlock() - response := make(map[string]*protobuf.CommunityChat) - for k, v := range o.config.CommunityDescription.Chats { - response[k] = v + + if o != nil { + o.mutex.Lock() + defer o.mutex.Unlock() + } else { + return response } + + if o != nil && o.config != nil && o.config.CommunityDescription != nil { + for k, v := range o.config.CommunityDescription.Chats { + response[k] = v + } + } + + return response +} + +func (o *Community) Images() map[string]*protobuf.IdentityImage { + response := make(map[string]*protobuf.IdentityImage) + + if o != nil { + o.mutex.Lock() + defer o.mutex.Unlock() + } else { + return response + } + + if o != nil && o.config != nil && o.config.CommunityDescription != nil && o.config.CommunityDescription.Identity != nil { + for k, v := range o.config.CommunityDescription.Identity.Images { + response[k] = v + } + } + return response } func (o *Community) Categories() map[string]*protobuf.CommunityCategory { - o.mutex.Lock() - defer o.mutex.Unlock() - response := make(map[string]*protobuf.CommunityCategory) - for k, v := range o.config.CommunityDescription.Categories { - response[k] = v + + if o != nil { + o.mutex.Lock() + defer o.mutex.Unlock() + } else { + return response } + + if o != nil && o.config != nil && o.config.CommunityDescription != nil { + for k, v := range o.config.CommunityDescription.Categories { + response[k] = v + } + } + return response } diff --git a/services/chat/api.go b/services/chat/api.go index 6e6e57859..d56904158 100644 --- a/services/chat/api.go +++ b/services/chat/api.go @@ -150,7 +150,7 @@ func (api *API) GetChats(ctx context.Context) (map[string]ChannelGroup, error) { chGrp := ChannelGroup{ Type: Community, Name: community.Name(), - Color: community.Description().Identity.Color, + Color: community.Color(), Images: make(map[string]images.IdentityImage), Chats: make(map[string]*Chat), Categories: make(map[string]communities.CommunityCategory), @@ -165,11 +165,11 @@ func (api *API) GetChats(ctx context.Context) (map[string]ChannelGroup, error) { Muted: community.Muted(), } - for t, i := range community.Description().Identity.Images { + for t, i := range community.Images() { chGrp.Images[t] = images.IdentityImage{Name: t, Payload: i.Payload} } - for _, cat := range community.Description().Categories { + for _, cat := range community.Categories() { chGrp.Categories[cat.CategoryId] = communities.CommunityCategory{ ID: cat.CategoryId, Name: cat.Name,