Signal-iOS/SignalMessaging/ViewControllers/Stickers/StickerView.swift
2019-05-13 16:14:48 -04:00

52 lines
1.3 KiB
Swift

//
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
//
import Foundation
import YYImage
@objc
public class StickerView: YYAnimatedImageView {
private let stickerInfo: StickerInfo
// MARK: - Initializers
@available(*, unavailable, message:"use other constructor instead.")
required public init?(coder aDecoder: NSCoder) {
notImplemented()
}
public required init(stickerInfo: StickerInfo, size: CGFloat? = nil) {
self.stickerInfo = stickerInfo
super.init(frame: .zero)
if let size = size {
autoSetDimensions(to: CGSize(width: size, height: size))
}
loadSticker()
}
// MARK: -
private func loadSticker() {
guard let filePath = StickerManager.filepathForInstalledSticker(stickerInfo: stickerInfo) else {
Logger.warn("Sticker not yet installed.")
return
}
guard NSData.ows_isValidImage(atPath: filePath, mimeType: OWSMimeTypeImageWebp) else {
owsFailDebug("Invalid sticker.")
return
}
// TODO: Asset to show while loading a sticker - if any.
guard let stickerImage = YYImage(contentsOfFile: filePath) else {
owsFailDebug("Sticker could not be parsed.")
return
}
image = stickerImage
}
}