47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
|
//
|
||
|
// EmojiPickerWrapper.swift
|
||
|
// Tusker
|
||
|
//
|
||
|
// Created by Shadowfacts on 10/14/20.
|
||
|
// Copyright © 2020 Shadowfacts. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import SwiftUI
|
||
|
import Pachyderm
|
||
|
|
||
|
struct EmojiPickerWrapper: UIViewControllerRepresentable {
|
||
|
typealias UIViewControllerType = EmojiPickerCollectionViewController
|
||
|
|
||
|
let searchQuery: String
|
||
|
|
||
|
@EnvironmentObject private var mastodonController: MastodonController
|
||
|
@EnvironmentObject private var uiState: ComposeUIState
|
||
|
|
||
|
func makeUIViewController(context: Context) -> EmojiPickerCollectionViewController {
|
||
|
let vc = EmojiPickerCollectionViewController(mastodonController: mastodonController)
|
||
|
vc.delegate = context.coordinator
|
||
|
return vc
|
||
|
}
|
||
|
|
||
|
func updateUIViewController(_ uiViewController: EmojiPickerCollectionViewController, context: Context) {
|
||
|
uiViewController.searchQuery = searchQuery
|
||
|
}
|
||
|
|
||
|
func makeCoordinator() -> Coordinator {
|
||
|
return Coordinator(uiState: uiState)
|
||
|
}
|
||
|
|
||
|
class Coordinator: EmojiPickerCollectionViewControllerDelegate {
|
||
|
let uiState: ComposeUIState
|
||
|
|
||
|
init(uiState: ComposeUIState) {
|
||
|
self.uiState = uiState
|
||
|
}
|
||
|
|
||
|
func selectedEmoji(_ emoji: Emoji) {
|
||
|
uiState.autocompleteHandler?.autocomplete(with: ":\(emoji.shortcode):")
|
||
|
uiState.autocompleteState = nil
|
||
|
}
|
||
|
}
|
||
|
}
|