Skip to content

Commit 76e1ae8

Browse files
committed
Refactor recent emojis saving
1 parent 1238df2 commit 76e1ae8

File tree

3 files changed

+30
-35
lines changed

3 files changed

+30
-35
lines changed

‎Telegram/Controls/Chats/ChatTextFlyout.xaml.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,12 @@ void InsertText(string insert)
142142
if (e.ClickedItem is EmojiData emoji)
143143
{
144144
SettingsService.Current.Emoji.AddRecentEmoji(emoji.Value);
145-
SettingsService.Current.Emoji.SortRecentEmoji();
146-
SettingsService.Current.Emoji.SaveRecentEmoji();
147-
148145
InsertText($"{emoji.Value}");
149146
}
150147
else if (e.ClickedItem is Sticker sticker && sticker.FullType is StickerFullTypeCustomEmoji customEmoji)
151148
{
149+
SettingsService.Current.Emoji.AddRecentEmoji($"{sticker.Emoji};{customEmoji.CustomEmojiId}");
150+
152151
var range = _textBox.Document.GetRange(index, _textBox.Document.Selection.StartPosition);
153152

154153
_textBox.InsertEmoji(range, sticker.Emoji, customEmoji.CustomEmojiId);

‎Telegram/Controls/Drawers/EmojiDrawer.xaml.cs

-5
Original file line numberDiff line numberDiff line change
@@ -348,9 +348,6 @@ private async void ListView_ItemClick(object sender, ItemClickEventArgs e)
348348
_needUpdate = true;
349349

350350
SettingsService.Current.Emoji.AddRecentEmoji(data.Value);
351-
SettingsService.Current.Emoji.SortRecentEmoji();
352-
SettingsService.Current.Emoji.SaveRecentEmoji();
353-
354351
ItemClick?.Invoke(this, e);
355352
}
356353
else if (e.ClickedItem is StickerViewModel sticker)
@@ -381,8 +378,6 @@ private async void ListView_ItemClick(object sender, ItemClickEventArgs e)
381378
if (sticker.FullType is StickerFullTypeCustomEmoji customEmoji)
382379
{
383380
SettingsService.Current.Emoji.AddRecentEmoji($"{sticker.Emoji};{customEmoji.CustomEmojiId}");
384-
SettingsService.Current.Emoji.SortRecentEmoji();
385-
SettingsService.Current.Emoji.SaveRecentEmoji();
386381
}
387382

388383
ItemClick?.Invoke(this, e);

‎Telegram/Services/Settings/EmojiSettings.cs

+28-27
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
// file LICENSE or copy at https://www.gnu.org/licenses/gpl-3.0.txt)
66
//
77
using System.Collections.Generic;
8-
using System.Linq;
98
using System.Text;
10-
using Telegram.Common;
119

1210
namespace Telegram.Services.Settings
1311
{
@@ -24,6 +22,7 @@ public partial class EmojiSettings : SettingsServiceBase
2422

2523
private readonly Dictionary<string, int> _emojiUseHistory = new Dictionary<string, int>();
2624
private readonly List<string> _recentEmoji = new List<string>();
25+
private readonly object _recentEmojiLock = new();
2726
private bool _recentEmojiLoaded;
2827

2928
private const int MAX_RECENT_EMOJI_COUNT = 35;
@@ -37,40 +36,42 @@ public List<string> RecentEmoji
3736
{
3837
get
3938
{
40-
LoadRecentEmoji();
41-
return _recentEmoji;
39+
lock (_recentEmojiLock)
40+
{
41+
LoadRecentEmoji();
42+
return _recentEmoji;
43+
}
4244
}
4345
}
4446

45-
46-
public EmojiData[] GetRecentEmoji()
47-
{
48-
LoadRecentEmoji();
49-
return _recentEmoji.Select(x => new EmojiData(x)).ToArray();
50-
}
51-
5247
public void AddRecentEmoji(string code)
5348
{
54-
LoadRecentEmoji();
55-
56-
foreach (var modifier in _modifiers)
49+
lock (_recentEmojiLock)
5750
{
58-
code = code.Replace(modifier, string.Empty);
59-
}
51+
LoadRecentEmoji();
6052

61-
_emojiUseHistory.TryGetValue(code, out int count);
53+
foreach (var modifier in _modifiers)
54+
{
55+
code = code.Replace(modifier, string.Empty);
56+
}
6257

63-
if (count == 0 && _emojiUseHistory.Count >= MAX_RECENT_EMOJI_COUNT)
64-
{
65-
var emoji = _recentEmoji[_recentEmoji.Count - 1];
66-
_emojiUseHistory.Remove(emoji);
67-
_recentEmoji[_recentEmoji.Count - 1] = code;
68-
}
58+
_emojiUseHistory.TryGetValue(code, out int count);
59+
60+
if (count == 0 && _emojiUseHistory.Count >= MAX_RECENT_EMOJI_COUNT)
61+
{
62+
var emoji = _recentEmoji[_recentEmoji.Count - 1];
63+
_emojiUseHistory.Remove(emoji);
64+
_recentEmoji[_recentEmoji.Count - 1] = code;
65+
}
66+
67+
_emojiUseHistory[code] = ++count;
6968

70-
_emojiUseHistory[code] = ++count;
69+
SortRecentEmoji();
70+
SaveRecentEmoji();
71+
}
7172
}
7273

73-
public void SortRecentEmoji()
74+
private void SortRecentEmoji()
7475
{
7576
_recentEmoji.Clear();
7677

@@ -102,7 +103,7 @@ public void SortRecentEmoji()
102103
}
103104
}
104105

105-
public void SaveRecentEmoji()
106+
private void SaveRecentEmoji()
106107
{
107108
var stringBuilder = new StringBuilder();
108109

@@ -130,7 +131,7 @@ public void ClearRecentEmoji()
130131
SaveRecentEmoji();
131132
}
132133

133-
public void LoadRecentEmoji()
134+
private void LoadRecentEmoji()
134135
{
135136
if (_recentEmojiLoaded)
136137
{

0 commit comments

Comments
 (0)