// // CustomEmojiImageView.swift // Tusker // // Created by Shadowfacts on 10/11/20. // Copyright © 2020 Shadowfacts. All rights reserved. // import SwiftUI import Pachyderm struct CustomEmojiImageView: View { let emoji: Emoji @State private var request: ImageCache.Request? @State private var image: UIImage? var body: some View { imageView .onAppear(perform: self.loadImage) .onDisappear(perform: self.cancelRequest) } @ViewBuilder private var imageView: some View { if let image = image { Image(uiImage: image) .renderingMode(.original) .resizable() .aspectRatio(contentMode: .fit) } else { Image(systemName: "smiley.fill") } } private func loadImage() { request = ImageCache.emojis.get(emoji.url) { (data) in if let data = data, let image = UIImage(data: data) { DispatchQueue.main.async { self.request = nil self.image = image } } else { DispatchQueue.main.async { self.request = nil } } } } private func cancelRequest() { request?.cancel() } } //struct CustomEmojiImageView_Previews: PreviewProvider { // static var previews: some View { // CustomEmojiImageView() // } //}