NCDatabaseManager.swift 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //
  2. // SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import Foundation
  6. @objc public extension NCDatabaseManager {
  7. func increaseEmojiUsage(forEmoji emojiString: String, forAccount accountId: String) {
  8. guard let account = NCDatabaseManager.sharedInstance().talkAccount(forAccountId: accountId) else { return }
  9. var newData: [String: Int]?
  10. if let data = account.frequentlyUsedEmojisJSONString.data(using: .utf8),
  11. var emojiData = try? JSONSerialization.jsonObject(with: data) as? [String: Int] {
  12. if let currentEmojiCount = emojiData[emojiString] {
  13. emojiData[emojiString] = currentEmojiCount + 1
  14. } else {
  15. emojiData[emojiString] = 1
  16. }
  17. newData = emojiData
  18. } else {
  19. // No existing data, start new
  20. newData = [emojiString: 1]
  21. }
  22. guard let newData, let jsonData = try? JSONSerialization.data(withJSONObject: newData),
  23. let jsonString = String(data: jsonData, encoding: .utf8)
  24. else { return }
  25. let realm = RLMRealm.default()
  26. try? realm.transaction {
  27. if let managedTalkAccount = TalkAccount.objects(where: "accountId = %@", account.accountId).firstObject() as? TalkAccount {
  28. managedTalkAccount.frequentlyUsedEmojisJSONString = jsonString
  29. }
  30. }
  31. }
  32. }