diff --git a/server/public/model/channel_bookmark.go b/server/public/model/channel_bookmark.go index d144476f31b..f8bb7391bff 100644 --- a/server/public/model/channel_bookmark.go +++ b/server/public/model/channel_bookmark.go @@ -5,6 +5,7 @@ package model import ( "net/http" + "strings" "unicode/utf8" ) @@ -142,6 +143,7 @@ func (o *ChannelBookmark) PreSave() { } o.DisplayName = SanitizeUnicode(o.DisplayName) + o.Emoji = strings.Trim(o.Emoji, ":") if o.CreateAt == 0 { o.CreateAt = GetMillis() } @@ -151,6 +153,7 @@ func (o *ChannelBookmark) PreSave() { func (o *ChannelBookmark) PreUpdate() { o.UpdateAt = GetMillis() o.DisplayName = SanitizeUnicode(o.DisplayName) + o.Emoji = strings.Trim(o.Emoji, ":") } func (o *ChannelBookmark) ToBookmarkWithFileInfo(f *FileInfo) *ChannelBookmarkWithFileInfo { @@ -167,7 +170,7 @@ func (o *ChannelBookmark) ToBookmarkWithFileInfo(f *FileInfo) *ChannelBookmarkWi SortOrder: o.SortOrder, LinkUrl: o.LinkUrl, ImageUrl: o.ImageUrl, - Emoji: o.Emoji, + Emoji: strings.Trim(o.Emoji, ":"), Type: o.Type, OriginalId: o.OriginalId, ParentId: o.ParentId, diff --git a/server/public/model/channel_bookmark_test.go b/server/public/model/channel_bookmark_test.go index 4a5867778f1..269d7d93f34 100644 --- a/server/public/model/channel_bookmark_test.go +++ b/server/public/model/channel_bookmark_test.go @@ -599,6 +599,56 @@ func TestChannelBookmarkPreUpdate(t *testing.T) { assert.Greater(t, bookmark.UpdateAt, originalBookmark.UpdateAt) } +func TestToBookmarkWithFileInfo(t *testing.T) { + testCases := []struct { + name string + bookmark *ChannelBookmark + fileInfo *FileInfo + expectedEmoji string + }{ + { + name: "emoji with colons", + bookmark: &ChannelBookmark{ + Id: NewId(), + DisplayName: "test bookmark", + Emoji: ":smile:", + Type: ChannelBookmarkLink, + }, + fileInfo: nil, + expectedEmoji: "smile", + }, + { + name: "emoji without colons", + bookmark: &ChannelBookmark{ + Id: NewId(), + DisplayName: "test bookmark", + Emoji: "smile", + Type: ChannelBookmarkLink, + }, + fileInfo: nil, + expectedEmoji: "smile", + }, + { + name: "empty emoji", + bookmark: &ChannelBookmark{ + Id: NewId(), + DisplayName: "test bookmark", + Emoji: "", + Type: ChannelBookmarkLink, + }, + fileInfo: nil, + expectedEmoji: "", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + result := tc.bookmark.ToBookmarkWithFileInfo(tc.fileInfo) + assert.Equal(t, tc.expectedEmoji, result.Emoji) + }) + } +} + func TestChannelBookmarkPatch(t *testing.T) { p := &ChannelBookmarkPatch{ DisplayName: NewPointer(NewId()),