diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-06-22 06:36:46 -0400 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2017-06-22 11:36:46 +0100 |
commit | 3f1fca9463df27e8f795356ab6873d0d5bf4d634 (patch) | |
tree | eb023486f6bac6a8156633fcc6adb5f4bd360583 | |
parent | ac4e9909fa4f3f6c6a0d1e537d6039115d07a5e0 (diff) | |
download | chat-3f1fca9463df27e8f795356ab6873d0d5bf4d634.tar.gz chat-3f1fca9463df27e8f795356ab6873d0d5bf4d634.tar.bz2 chat-3f1fca9463df27e8f795356ab6873d0d5bf4d634.zip |
PLT-6759 Show deactivated users in GMs (#6703)
* Show deactivated users in GMs
* Fix runtime error when DMing deactivated user
-rw-r--r-- | app/notification.go | 5 | ||||
-rw-r--r-- | app/notification_test.go | 44 | ||||
-rw-r--r-- | store/sql_user_store.go | 2 | ||||
-rw-r--r-- | webapp/components/channel_header.jsx | 4 | ||||
-rw-r--r-- | webapp/components/member_list_channel/member_list_channel.jsx | 4 | ||||
-rw-r--r-- | webapp/stores/user_store.jsx | 4 |
6 files changed, 52 insertions, 11 deletions
diff --git a/app/notification.go b/app/notification.go index 7ddba0bdb..2b9c9bcff 100644 --- a/app/notification.go +++ b/app/notification.go @@ -63,7 +63,10 @@ func SendNotifications(post *model.Post, team *model.Team, channel *model.Channe otherUserId = userIds[0] } - mentionedUserIds[otherUserId] = true + if _, ok := profileMap[otherUserId]; ok { + mentionedUserIds[otherUserId] = true + } + if post.Props["from_webhook"] == "true" { mentionedUserIds[post.UserId] = true } diff --git a/app/notification_test.go b/app/notification_test.go index e59ba35d8..022f671ae 100644 --- a/app/notification_test.go +++ b/app/notification_test.go @@ -14,14 +14,14 @@ func TestSendNotifications(t *testing.T) { AddUserToChannel(th.BasicUser2, th.BasicChannel) - post1, postErr := CreatePost(&model.Post{ + post1, err := CreatePost(&model.Post{ UserId: th.BasicUser.Id, ChannelId: th.BasicChannel.Id, Message: "@" + th.BasicUser2.Username, }, th.BasicTeam.Id, true) - if postErr != nil { - t.Fatal(postErr) + if err != nil { + t.Fatal(err) } mentions, err := SendNotifications(post1, th.BasicTeam, th.BasicChannel, th.BasicUser) @@ -34,6 +34,44 @@ func TestSendNotifications(t *testing.T) { t.Log(mentions) t.Fatal("user should have been mentioned") } + + dm, err := CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id) + if err != nil { + t.Fatal(err) + } + + post2, err := CreatePost(&model.Post{ + UserId: th.BasicUser.Id, + ChannelId: dm.Id, + Message: "dm message", + }, th.BasicTeam.Id, true) + + if err != nil { + t.Fatal(err) + } + + _, err = SendNotifications(post2, th.BasicTeam, dm, th.BasicUser) + if err != nil { + t.Fatal(err) + } + + UpdateActive(th.BasicUser2, false) + InvalidateAllCaches() + + post3, err := CreatePost(&model.Post{ + UserId: th.BasicUser.Id, + ChannelId: dm.Id, + Message: "dm message", + }, th.BasicTeam.Id, true) + + if err != nil { + t.Fatal(err) + } + + _, err = SendNotifications(post3, th.BasicTeam, dm, th.BasicUser) + if err != nil { + t.Fatal(err) + } } func TestGetExplicitMentions(t *testing.T) { diff --git a/store/sql_user_store.go b/store/sql_user_store.go index d18da8df8..e6054365c 100644 --- a/store/sql_user_store.go +++ b/store/sql_user_store.go @@ -546,7 +546,7 @@ func (us SqlUserStore) GetProfilesInChannel(channelId string, offset int, limit var users []*model.User - query := "SELECT Users.* FROM Users, ChannelMembers WHERE ChannelMembers.ChannelId = :ChannelId AND Users.Id = ChannelMembers.UserId AND Users.DeleteAt = 0 ORDER BY Users.Username ASC LIMIT :Limit OFFSET :Offset" + query := "SELECT Users.* FROM Users, ChannelMembers WHERE ChannelMembers.ChannelId = :ChannelId AND Users.Id = ChannelMembers.UserId ORDER BY Users.Username ASC LIMIT :Limit OFFSET :Offset" if _, err := us.GetReplica().Select(&users, query, map[string]interface{}{"ChannelId": channelId, "Offset": offset, "Limit": limit}); err != nil { result.Err = model.NewLocAppError("SqlUserStore.GetProfilesInChannel", "store.sql_user.get_profiles.app_error", nil, err.Error()) diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx index 7116b435c..a409baec6 100644 --- a/webapp/components/channel_header.jsx +++ b/webapp/components/channel_header.jsx @@ -73,7 +73,7 @@ export default class ChannelHeader extends React.Component { getStateFromStores() { const channel = ChannelStore.get(this.props.channelId); const stats = ChannelStore.getStats(this.props.channelId); - const users = UserStore.getProfileListInChannel(this.props.channelId); + const users = UserStore.getProfileListInChannel(this.props.channelId, false, true); let otherUserId = null; if (channel && channel.type === 'D') { @@ -227,7 +227,7 @@ export default class ChannelHeader extends React.Component { AppDispatcher.handleViewAction({ type: ActionTypes.TOGGLE_DM_MODAL, value: true, - startingUsers: UserStore.getProfileListInChannel(this.props.channelId, true) + startingUsers: UserStore.getProfileListInChannel(this.props.channelId, true, false) }); } diff --git a/webapp/components/member_list_channel/member_list_channel.jsx b/webapp/components/member_list_channel/member_list_channel.jsx index 8dbdd37f2..f33d14a27 100644 --- a/webapp/components/member_list_channel/member_list_channel.jsx +++ b/webapp/components/member_list_channel/member_list_channel.jsx @@ -45,7 +45,7 @@ export default class MemberListChannel extends React.Component { const stats = ChannelStore.getCurrentStats(); this.state = { - users: UserStore.getProfileListInChannel(), + users: UserStore.getProfileListInChannel(ChannelStore.getCurrentId(), false, true), teamMembers: Object.assign({}, TeamStore.getMembersInTeam()), channelMembers: Object.assign({}, ChannelStore.getMembersInChannel()), total: stats.member_count, @@ -81,7 +81,7 @@ export default class MemberListChannel extends React.Component { if (this.term) { users = searchProfilesInCurrentChannel(store.getState(), this.term); } else { - users = UserStore.getProfileListInChannel(); + users = UserStore.getProfileListInChannel(ChannelStore.getCurrentId(), false, true); } this.setState({ diff --git a/webapp/stores/user_store.jsx b/webapp/stores/user_store.jsx index b6e867443..79052d77e 100644 --- a/webapp/stores/user_store.jsx +++ b/webapp/stores/user_store.jsx @@ -390,10 +390,10 @@ class UserStoreClass extends EventEmitter { }); } - getProfileListInChannel(channelId = ChannelStore.getCurrentId(), skipCurrent = false) { + getProfileListInChannel(channelId = ChannelStore.getCurrentId(), skipCurrent = false, skipInactive = false) { const userIds = Array.from(Selectors.getUserIdsInChannels(store.getState())[channelId] || []); - return this.getProfileListForIds(userIds, skipCurrent, false); + return this.getProfileListForIds(userIds, skipCurrent, skipInactive); } saveProfileNotInChannel(channelId = ChannelStore.getCurrentId(), profile) { |