From 55c2d57f70f32626624d881b60366df9652d76c0 Mon Sep 17 00:00:00 2001 From: Rahim Rahman Date: Sun, 9 Feb 2025 21:38:29 -0700 Subject: [PATCH] fix(MM-60645): missing emoji on mobile (#30001) * fix(MM-60645): missing emoji on mobile * removing the `:` completely from being stored or being sent to the server. * proper formatting? --- server/public/model/channel_bookmark.go | 5 +- server/public/model/channel_bookmark_test.go | 50 ++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/server/public/model/channel_bookmark.go b/server/public/model/channel_bookmark.go index d144476f31..f8bb7391bf 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 4a5867778f..269d7d93f3 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()),