add possibility to implement custom EmojiProvider

This commit is contained in:
Kelvas
2023-01-13 22:50:46 +01:00
parent 123c6c8d2a
commit d787591e21
7 changed files with 115 additions and 11 deletions

View File

@@ -0,0 +1,19 @@
//
// DefaultEmojiProvider.swift
//
//
// Created by Kévin Sibué on 11/01/2023.
//
import Foundation
import Smile
public final class DefaultEmojiProvider: EmojiProvider {
public init() { }
public func getAll() -> [Emoji] {
return Smile.list().map({ Emoji(value: $0, name: name(emoji: $0).first ?? "") })
}
}

View File

@@ -21,17 +21,18 @@ public struct EmojiPickerView: View {
private var selectedColor: Color
private var searchEnabled: Bool
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue) {
public init(selectedEmoji: Binding<Emoji?>, searchEnabled: Bool = false, selectedColor: Color = .blue, emojiProvider: EmojiProvider = DefaultEmojiProvider()) {
self._selectedEmoji = selectedEmoji
self.selectedColor = selectedColor
self.searchEnabled = searchEnabled
self.emojis = emojiProvider.getAll()
}
let columns = [
GridItem(.adaptive(minimum: 80))
]
let emojis = EmojiProvider().getAll()
let emojis: [Emoji]
private var searchResults: [Emoji] {
if search.isEmpty {

View File

@@ -2,16 +2,11 @@
// EmojiProvider.swift
//
//
// Created by Kévin Sibué on 11/01/2023.
// Created by Kévin Sibué on 13/01/2023.
//
import Foundation
import Smile
public final class EmojiProvider {
func getAll() -> [Emoji] {
return Smile.list().map({ Emoji(value: $0, name: name(emoji: $0).first ?? "") })
}
public protocol EmojiProvider {
func getAll() -> [Emoji]
}