summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhmhealey <harrisonmhealey@gmail.com>2015-07-07 11:00:29 -0400
committerhmhealey <harrisonmhealey@gmail.com>2015-07-07 11:00:29 -0400
commit23e527978ed3e889bebe5c879de2d4835509626a (patch)
tree7534d89f2c8964cba7aa2c21d29dd066de15f6e1
parent3dec509899f60ca0d2eadfcc192ccc49969852ef (diff)
downloadchat-23e527978ed3e889bebe5c879de2d4835509626a.tar.gz
chat-23e527978ed3e889bebe5c879de2d4835509626a.tar.bz2
chat-23e527978ed3e889bebe5c879de2d4835509626a.zip
Add a post type for user joined/left messages and don't flag a channel as unread when one of those is automatically posted
-rw-r--r--api/channel.go6
-rw-r--r--model/post.go5
-rw-r--r--store/sql_post_store.go12
3 files changed, 15 insertions, 8 deletions
diff --git a/api/channel.go b/api/channel.go
index c0c2d1548..8264b3e74 100644
--- a/api/channel.go
+++ b/api/channel.go
@@ -366,7 +366,7 @@ func JoinChannel(c *Context, channelId string, role string) {
post := &model.Post{ChannelId: channel.Id, Message: fmt.Sprintf(
`User %v has joined this channel.`,
- user.Username)}
+ user.Username), Type: model.POST_JOIN_LEAVE}
if _, err := CreatePost(c, post, false); err != nil {
l4g.Error("Failed to post join message %v", err)
c.Err = model.NewAppError("joinChannel", "Failed to send join request", "")
@@ -453,7 +453,7 @@ func leaveChannel(c *Context, w http.ResponseWriter, r *http.Request) {
post := &model.Post{ChannelId: channel.Id, Message: fmt.Sprintf(
`%v has left the channel.`,
- user.Username)}
+ user.Username), Type: model.POST_JOIN_LEAVE}
if _, err := CreatePost(c, post, false); err != nil {
l4g.Error("Failed to post leave message %v", err)
c.Err = model.NewAppError("leaveChannel", "Failed to send leave message", "")
@@ -646,7 +646,7 @@ func addChannelMember(c *Context, w http.ResponseWriter, r *http.Request) {
post := &model.Post{ChannelId: id, Message: fmt.Sprintf(
`%v added to the channel by %v`,
- nUser.Username, oUser.Username)}
+ nUser.Username, oUser.Username), Type: model.POST_JOIN_LEAVE}
if _, err := CreatePost(c, post, false); err != nil {
l4g.Error("Failed to post add message %v", err)
c.Err = model.NewAppError("addChannelMember", "Failed to add member to channel", "")
diff --git a/model/post.go b/model/post.go
index d10a9f9fc..f6f33b1e8 100644
--- a/model/post.go
+++ b/model/post.go
@@ -9,7 +9,8 @@ import (
)
const (
- POST_DEFAULT = ""
+ POST_DEFAULT = ""
+ POST_JOIN_LEAVE = "join_leave"
)
type Post struct {
@@ -100,7 +101,7 @@ func (o *Post) IsValid() *AppError {
return NewAppError("Post.IsValid", "Invalid hashtags", "id="+o.Id)
}
- if !(o.Type == POST_DEFAULT) {
+ if !(o.Type == POST_DEFAULT || o.Type == POST_JOIN_LEAVE) {
return NewAppError("Post.IsValid", "Invalid type", "id="+o.Type)
}
diff --git a/store/sql_post_store.go b/store/sql_post_store.go
index 01900023f..7ada515d7 100644
--- a/store/sql_post_store.go
+++ b/store/sql_post_store.go
@@ -72,7 +72,13 @@ func (s SqlPostStore) Save(post *model.Post) StoreChannel {
result.Err = model.NewAppError("SqlPostStore.Save", "We couldn't save the Post", "id="+post.Id+", "+err.Error())
} else {
time := model.GetMillis()
- s.GetMaster().Exec("UPDATE Channels SET LastPostAt = ?, TotalMsgCount = TotalMsgCount + 1 WHERE Id = ?", time, post.ChannelId)
+
+ if post.Type != model.POST_JOIN_LEAVE {
+ s.GetMaster().Exec("UPDATE Channels SET LastPostAt = ?, TotalMsgCount = TotalMsgCount + 1 WHERE Id = ?", time, post.ChannelId)
+ } else {
+ // don't update TotalMsgCount for unimportant messages so that the channel isn't marked as unread
+ s.GetMaster().Exec("UPDATE Channels SET LastPostAt = ? WHERE Id = ?", time, post.ChannelId)
+ }
if len(post.RootId) > 0 {
s.GetMaster().Exec("UPDATE Posts SET UpdateAt = ? WHERE Id = ?", time, post.RootId)
@@ -361,8 +367,8 @@ func (s SqlPostStore) Search(teamId string, userId string, terms string, isHasht
searchType := "Message"
if isHashtagSearch {
searchType = "Hashtags"
- for _,term := range strings.Split(terms, " ") {
- termMap[term] = true;
+ for _, term := range strings.Split(terms, " ") {
+ termMap[term] = true
}
}