mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// Copyright 2024 New Vector Ltd.
|
||||
//
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
// Please see LICENSE in the repository root for full details.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
struct EmojiItem: Equatable, Identifiable {
|
||||
var id: String {
|
||||
label
|
||||
}
|
||||
|
||||
let label: String
|
||||
let unicode: String
|
||||
let keywords: [String]
|
||||
let shortcodes: [String]
|
||||
}
|
||||
|
||||
struct EmojiCategory: Equatable, Identifiable {
|
||||
static let frequentlyUsedCategoryIdentifier = "io.element.elementx.frequently_used"
|
||||
|
||||
let id: String
|
||||
let emojis: [EmojiItem]
|
||||
}
|
||||
|
||||
enum EmojiProviderState {
|
||||
case notLoaded
|
||||
case inProgress(Task<[EmojiCategory], Never>)
|
||||
case loaded([EmojiCategory])
|
||||
}
|
||||
|
||||
@MainActor
|
||||
protocol EmojiProviderProtocol {
|
||||
var state: EmojiProviderState { get }
|
||||
|
||||
func categories(searchString: String?) async -> [EmojiCategory]
|
||||
|
||||
func frequentlyUsedSystemEmojis() -> [String]
|
||||
func markEmojiAsFrequentlyUsed(_ emoji: String)
|
||||
}
|
||||
Reference in New Issue
Block a user