mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Various improvements
This commit is contained in:
@@ -4155,6 +4155,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
}
|
||||
|
||||
if !self.didSetupStaticEmojiPack {
|
||||
self.didSetupStaticEmojiPack = true
|
||||
self.staticEmojiPack.set(self.context.engine.stickers.loadedStickerPack(reference: .name("staticemoji"), forceActualized: false))
|
||||
}
|
||||
|
||||
@@ -4212,7 +4213,8 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
emojiFile = .single(nil)
|
||||
}
|
||||
|
||||
let _ = emojiFile.start(next: { [weak self] emojiFile in
|
||||
let _ = (emojiFile
|
||||
|> deliverOnMainQueue).start(next: { [weak self] emojiFile in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
@@ -4570,6 +4572,63 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
self.mediaEditor?.play()
|
||||
}
|
||||
|
||||
func addWeather() {
|
||||
if !self.didSetupStaticEmojiPack {
|
||||
self.didSetupStaticEmojiPack = true
|
||||
self.staticEmojiPack.set(self.context.engine.stickers.loadedStickerPack(reference: .name("staticemoji"), forceActualized: false))
|
||||
}
|
||||
|
||||
let emojiFile: Signal<TelegramMediaFile?, NoError>
|
||||
let emoji = "☀️".strippedEmoji
|
||||
|
||||
emojiFile = self.context.animatedEmojiStickers
|
||||
|> take(1)
|
||||
|> map { result -> TelegramMediaFile? in
|
||||
if let file = result[emoji]?.first {
|
||||
return file.file
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
|
||||
// if case let .result(_, items, _) = result, let match = items.first(where: { item in
|
||||
// var displayText: String?
|
||||
// for attribute in item.file.attributes {
|
||||
// if case let .Sticker(alt, _, _) = attribute {
|
||||
// displayText = alt
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// if let displayText, displayText.hasPrefix(emoji) {
|
||||
// return true
|
||||
// } else {
|
||||
// return false
|
||||
// }
|
||||
// }) {
|
||||
// return match.file
|
||||
// } else {
|
||||
// return nil
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
let _ = (emojiFile
|
||||
|> deliverOnMainQueue).start(next: { [weak self] emojiFile in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
let scale = 1.0
|
||||
self.interaction?.insertEntity(
|
||||
DrawingWeatherEntity(
|
||||
temperature: "35°C",
|
||||
style: .white,
|
||||
icon: emojiFile
|
||||
),
|
||||
scale: scale,
|
||||
position: nil
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
func updateModalTransitionFactor(_ value: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||
guard let layout = self.validLayout, case .compact = layout.metrics.widthClass else {
|
||||
return
|
||||
@@ -4824,6 +4883,14 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
||||
controller?.dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
controller.addWeather = { [weak self, weak controller] in
|
||||
if let self {
|
||||
self.addWeather()
|
||||
|
||||
self.stickerScreen = nil
|
||||
controller?.dismiss(animated: true)
|
||||
}
|
||||
}
|
||||
controller.pushController = { [weak self] c in
|
||||
self?.controller?.push(c)
|
||||
}
|
||||
|
||||
@@ -4,14 +4,6 @@ import Display
|
||||
import CoreImage
|
||||
import MediaEditor
|
||||
|
||||
func createEmitterBehavior(type: String) -> NSObject {
|
||||
let selector = ["behaviorWith", "Type:"].joined(separator: "")
|
||||
let behaviorClass = NSClassFromString(["CA", "Emitter", "Behavior"].joined(separator: "")) as! NSObject.Type
|
||||
let behaviorWithType = behaviorClass.method(for: NSSelectorFromString(selector))!
|
||||
let castedBehaviorWithType = unsafeBitCast(behaviorWithType, to:(@convention(c)(Any?, Selector, Any?) -> NSObject).self)
|
||||
return castedBehaviorWithType(behaviorClass, NSSelectorFromString(selector), type)
|
||||
}
|
||||
|
||||
private var previousBeginTime: Int = 3
|
||||
|
||||
final class StickerCutoutOutlineView: UIView {
|
||||
@@ -81,7 +73,7 @@ final class StickerCutoutOutlineView: UIView {
|
||||
|
||||
let lineEmitterCell = CAEmitterCell()
|
||||
lineEmitterCell.beginTime = CACurrentMediaTime()
|
||||
let lineAlphaBehavior = createEmitterBehavior(type: "valueOverLife")
|
||||
let lineAlphaBehavior = CAEmitterCell.createEmitterBehavior(type: "valueOverLife")
|
||||
lineAlphaBehavior.setValue("color.alpha", forKey: "keyPath")
|
||||
lineAlphaBehavior.setValue([0.0, 0.5, 0.8, 0.5, 0.0], forKey: "values")
|
||||
lineEmitterCell.setValue([lineAlphaBehavior], forKey: "emitterBehaviors")
|
||||
@@ -107,7 +99,7 @@ final class StickerCutoutOutlineView: UIView {
|
||||
|
||||
let glowEmitterCell = CAEmitterCell()
|
||||
glowEmitterCell.beginTime = CACurrentMediaTime()
|
||||
let glowAlphaBehavior = createEmitterBehavior(type: "valueOverLife")
|
||||
let glowAlphaBehavior = CAEmitterCell.createEmitterBehavior(type: "valueOverLife")
|
||||
glowAlphaBehavior.setValue("color.alpha", forKey: "keyPath")
|
||||
glowAlphaBehavior.setValue([0.0, 0.32, 0.4, 0.2, 0.0], forKey: "values")
|
||||
glowEmitterCell.setValue([glowAlphaBehavior], forKey: "emitterBehaviors")
|
||||
|
||||
Reference in New Issue
Block a user