summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--store/sqlstore/channel_store.go5
-rw-r--r--store/storetest/channel_store.go15
2 files changed, 19 insertions, 1 deletions
diff --git a/store/sqlstore/channel_store.go b/store/sqlstore/channel_store.go
index da3fecc62..2a22632a9 100644
--- a/store/sqlstore/channel_store.go
+++ b/store/sqlstore/channel_store.go
@@ -162,7 +162,10 @@ func (s SqlChannelStore) SaveDirectChannel(directchannel *model.Channel, member1
member2.ChannelId = newChannel.Id
member1Result := s.saveMemberT(transaction, member1, newChannel)
- member2Result := s.saveMemberT(transaction, member2, newChannel)
+ member2Result := member1Result
+ if member1.UserId != member2.UserId {
+ member2Result = s.saveMemberT(transaction, member2, newChannel)
+ }
if member1Result.Err != nil || member2Result.Err != nil {
transaction.Rollback()
diff --git a/store/storetest/channel_store.go b/store/storetest/channel_store.go
index 76ef21552..cb4e8fa26 100644
--- a/store/storetest/channel_store.go
+++ b/store/storetest/channel_store.go
@@ -146,6 +146,21 @@ func testChannelStoreSaveDirectChannel(t *testing.T, ss store.Store) {
if err := (<-ss.Channel().SaveDirectChannel(&o1, &m1, &m2)).Err; err == nil {
t.Fatal("Should not be able to save non-direct channel")
}
+
+ // Save yourself Direct Message
+ o1.Id = ""
+ o1.DisplayName = "Myself"
+ o1.Name = "zz" + model.NewId() + "b"
+ o1.Type = model.CHANNEL_DIRECT
+ if err := (<-ss.Channel().SaveDirectChannel(&o1, &m1, &m1)).Err; err != nil {
+ t.Fatal("couldn't save direct channel", err)
+ }
+
+ members = (<-ss.Channel().GetMembers(o1.Id, 0, 100)).Data.(*model.ChannelMembers)
+ if len(*members) != 1 {
+ t.Fatal("should have saved just 1 member")
+ }
+
}
func testChannelStoreCreateDirectChannel(t *testing.T, ss store.Store) {