Fix #3620 - Fix frequently used emojis, stop relying on Apple's keyboard values and store everything app side instead.

This commit is contained in:
Stefan Ceriu 2024-12-16 12:09:06 +02:00 committed by Stefan Ceriu
parent f9be39eb4f
commit e04c87445e
2 changed files with 8 additions and 17 deletions

View File

@ -28,6 +28,8 @@ final class AppSettings {
case hasRunNotificationPermissionsOnboarding
case hasRunIdentityConfirmationOnboarding
case frequentlyUsedSystemEmojis
case enableNotifications
case enableInAppNotifications
case pusherProfileTag
@ -40,7 +42,6 @@ final class AppSettings {
case hideTimelineMedia
case elementCallBaseURLOverride
case elementCallEncryptionEnabled
// Feature flags
case slidingSyncDiscovery
@ -231,6 +232,9 @@ final class AppSettings {
@UserPreference(key: UserDefaultsKeys.hasRunIdentityConfirmationOnboarding, defaultValue: false, storageType: .userDefaults(store))
var hasRunIdentityConfirmationOnboarding
@UserPreference(key: UserDefaultsKeys.frequentlyUsedSystemEmojis, defaultValue: [String](), storageType: .userDefaults(store))
var frequentlyUsedSystemEmojis
// MARK: - Home Screen
@UserPreference(key: UserDefaultsKeys.hideUnreadMessagesBadge, defaultValue: false, storageType: .userDefaults(store))

View File

@ -61,14 +61,7 @@ class EmojiProvider: EmojiProviderProtocol {
return []
}
guard let preferences = UserDefaults(suiteName: "com.apple.EmojiPreferences"),
let defaults = preferences.dictionary(forKey: "EMFDefaultsKey"),
let recents = defaults["EMFRecentsKey"] as? [String]
else {
return []
}
return recents
return appSettings.frequentlyUsedSystemEmojis
}
func markEmojiAsFrequentlyUsed(_ emoji: String) {
@ -76,16 +69,10 @@ class EmojiProvider: EmojiProviderProtocol {
return
}
guard let preferences = UserDefaults(suiteName: "com.apple.EmojiPreferences"),
let defaults = preferences.dictionary(forKey: "EMFDefaultsKey"),
let recents = defaults["EMFRecentsKey"] as? [String] else {
return
}
var uniqueOrderedRecents = OrderedSet(recents)
var uniqueOrderedRecents = OrderedSet(appSettings.frequentlyUsedSystemEmojis)
uniqueOrderedRecents.insert(emoji, at: 0)
preferences.setValue(["EMFRecentsKey": Array(uniqueOrderedRecents)], forKey: "EMFDefaultsKey")
appSettings.frequentlyUsedSystemEmojis = Array(uniqueOrderedRecents)
}
// MARK: - Private