* move message_export code to monorepo * update license headers * moving over `dedicated filestore` (#1772) from enterprise master
59 строки
1.6 KiB
Go
59 строки
1.6 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.enterprise for license information.
|
|
|
|
package message_export
|
|
|
|
type MembershipMapUser struct {
|
|
userId string
|
|
email string
|
|
username string
|
|
}
|
|
|
|
// Provides a clean interface for tracking the users that are present in any number of channels by channel id and user email
|
|
type MembershipMap map[string]map[string]MembershipMapUser
|
|
|
|
func (m *MembershipMap) init(channelId string) {
|
|
if *m == nil {
|
|
*m = make(map[string]map[string]MembershipMapUser)
|
|
}
|
|
if (*m)[channelId] == nil {
|
|
(*m)[channelId] = make(map[string]MembershipMapUser)
|
|
}
|
|
}
|
|
|
|
func (m *MembershipMap) AddUserToChannel(channelId string, user MembershipMapUser) {
|
|
m.init(channelId)
|
|
if !m.IsUserInChannel(channelId, user.email) {
|
|
(*m)[channelId][user.email] = user
|
|
}
|
|
}
|
|
|
|
func (m *MembershipMap) RemoveUserFromChannel(channelId string, userEmail string) {
|
|
m.init(channelId)
|
|
delete((*m)[channelId], userEmail)
|
|
}
|
|
|
|
func (m *MembershipMap) IsUserInChannel(channelId string, userEmail string) bool {
|
|
m.init(channelId)
|
|
_, exists := (*m)[channelId][userEmail]
|
|
return exists
|
|
}
|
|
|
|
func (m *MembershipMap) GetUserEmailsInChannel(channelId string) []string {
|
|
m.init(channelId)
|
|
users := make([]string, 0, len((*m)[channelId]))
|
|
for k := range (*m)[channelId] {
|
|
users = append(users, k)
|
|
}
|
|
return users
|
|
}
|
|
|
|
func (m *MembershipMap) GetUsersInChannel(channelId string) []MembershipMapUser {
|
|
m.init(channelId)
|
|
users := make([]MembershipMapUser, 0, len((*m)[channelId]))
|
|
for _, v := range (*m)[channelId] {
|
|
users = append(users, v)
|
|
}
|
|
return users
|
|
}
|