|
|
|
|
@@ -34,8 +34,6 @@ func (a *App) CreateDefaultChannels(teamId string) ([]*model.Channel, *model.App
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin bool, userRequestorId string) *model.AppError {
|
|
|
|
|
var err *model.AppError = nil
|
|
|
|
|
|
|
|
|
|
var requestor *model.User
|
|
|
|
|
if userRequestorId != "" {
|
|
|
|
|
u := <-a.Srv.Store.User().Get(userRequestorId)
|
|
|
|
|
@@ -59,11 +57,11 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var err *model.AppError
|
|
|
|
|
for _, channelName := range defaultChannelList {
|
|
|
|
|
if result := <-a.Srv.Store.Channel().GetByName(teamId, channelName, true); result.Err != nil {
|
|
|
|
|
err = result.Err
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
channel := result.Data.(*model.Channel)
|
|
|
|
|
|
|
|
|
|
if channel.Type != model.CHANNEL_OPEN {
|
|
|
|
|
@@ -81,41 +79,45 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, shouldBeAdmin
|
|
|
|
|
if cmResult := <-a.Srv.Store.Channel().SaveMember(cm); cmResult.Err != nil {
|
|
|
|
|
err = cmResult.Err
|
|
|
|
|
}
|
|
|
|
|
if result := <-a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); result.Err != nil {
|
|
|
|
|
if result = <-a.Srv.Store.ChannelMemberHistory().LogJoinEvent(user.Id, channel.Id, model.GetMillis()); result.Err != nil {
|
|
|
|
|
mlog.Warn(fmt.Sprintf("Failed to update ChannelMemberHistory table %v", result.Err))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages {
|
|
|
|
|
if channel.Name == model.DEFAULT_CHANNEL {
|
|
|
|
|
if requestor == nil {
|
|
|
|
|
if err := a.postJoinTeamMessage(user, channel); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err := a.postAddToTeamMessage(requestor, user, channel, ""); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if requestor == nil {
|
|
|
|
|
if err := a.postJoinChannelMessage(user, channel); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err := a.PostAddToChannelMessage(requestor, user, channel, ""); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
a.postJoinMessageForDefaultChannel(user, requestor, channel)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.InvalidateCacheForChannelMembers(result.Data.(*model.Channel).Id)
|
|
|
|
|
a.InvalidateCacheForChannelMembers(channel.Id)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *App) postJoinMessageForDefaultChannel(user *model.User, requestor *model.User, channel *model.Channel) {
|
|
|
|
|
if channel.Name == model.DEFAULT_CHANNEL {
|
|
|
|
|
if requestor == nil {
|
|
|
|
|
if err := a.postJoinTeamMessage(user, channel); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err := a.postAddToTeamMessage(requestor, user, channel, ""); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if requestor == nil {
|
|
|
|
|
if err := a.postJoinChannelMessage(user, channel); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err := a.PostAddToChannelMessage(requestor, user, channel, ""); err != nil {
|
|
|
|
|
mlog.Error(fmt.Sprint("Failed to post join/leave message", err))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *App) CreateChannelWithUser(channel *model.Channel, userId string) (*model.Channel, *model.AppError) {
|
|
|
|
|
if channel.IsGroupOrDirect() {
|
|
|
|
|
return nil, model.NewAppError("CreateChannelWithUser", "api.channel.create_channel.direct_channel.app_error", nil, "", http.StatusBadRequest)
|
|
|
|
|
@@ -538,24 +540,22 @@ func (a *App) PatchChannel(channel *model.Channel, patch *model.ChannelPatch, us
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (a *App) GetSchemeRolesForChannel(channelId string) (string, string, *model.AppError) {
|
|
|
|
|
var channel *model.Channel
|
|
|
|
|
var err *model.AppError
|
|
|
|
|
|
|
|
|
|
if channel, err = a.GetChannel(channelId); err != nil {
|
|
|
|
|
channel, err := a.GetChannel(channelId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if channel.SchemeId != nil && len(*channel.SchemeId) != 0 {
|
|
|
|
|
scheme, err := a.GetScheme(*channel.SchemeId)
|
|
|
|
|
var scheme *model.Scheme
|
|
|
|
|
scheme, err = a.GetScheme(*channel.SchemeId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", err
|
|
|
|
|
}
|
|
|
|
|
return scheme.DefaultChannelUserRole, scheme.DefaultChannelAdminRole, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var team *model.Team
|
|
|
|
|
|
|
|
|
|
if team, err = a.GetTeam(channel.TeamId); err != nil {
|
|
|
|
|
team, err := a.GetTeam(channel.TeamId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|