Fix gift story editing

This commit is contained in:
Ilya Laktyushin 2025-01-29 19:16:13 +04:00
parent ed12e35f18
commit 3ac9d2d9a4
3 changed files with 41 additions and 20 deletions

View File

@ -345,7 +345,11 @@ public class DrawingStickerEntityView: DrawingEntityView {
} else {
imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
self.addSubview(imageView)
if let _ = self.animationNode {
self.insertSubview(imageView, at: 0)
} else {
self.addSubview(imageView)
}
self.animatedImageView = imageView
}
imageView.image = image
@ -754,11 +758,16 @@ public class DrawingStickerEntityView: DrawingEntityView {
self.updateAnimationColor()
if case .message = self.stickerEntity.content, self.animatedImageView == nil {
let image = self.isNightTheme ? self.stickerEntity.secondaryRenderImage : self.stickerEntity.renderImage
if let image {
self.setupWithImage(image)
switch self.stickerEntity.content {
case .message, .gift:
if self.animatedImageView == nil {
let image = self.isNightTheme ? self.stickerEntity.secondaryRenderImage : self.stickerEntity.renderImage
if let image {
self.setupWithImage(image)
}
}
default:
break
}
self.updateMirroring(animated: animated)

View File

@ -31,8 +31,13 @@ extension MediaEditorScreenImpl {
let filteredEntities = self.node.entitiesView.entities.filter { entity in
if entity is DrawingMediaEntity {
return false
} else if let entity = entity as? DrawingStickerEntity, case .message = entity.content {
return false
} else if let entity = entity as? DrawingStickerEntity {
switch entity.content {
case .message, .gift:
return false
default:
break
}
}
return true
}
@ -46,6 +51,8 @@ extension MediaEditorScreenImpl {
return false
} else if case .message = subject, !filteredValues.hasChanges && filteredEntities.isEmpty && caption.string.isEmpty {
return false
} else if case .gift = subject, !filteredValues.hasChanges && filteredEntities.isEmpty && caption.string.isEmpty {
return false
} else if case .empty = subject, !self.node.hasAnyChanges && !self.node.drawingView.internalState.canUndo {
return false
} else if case .videoCollage = subject {

View File

@ -3151,9 +3151,15 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
var effectiveSubject = subject
if case let .draft(draft, _ ) = subject {
for entity in draft.values.entities {
if case let .sticker(sticker) = entity, case let .message(ids, _, _, _, _) = sticker.content {
effectiveSubject = .message(ids)
break
if case let .sticker(sticker) = entity {
switch sticker.content {
case let .message(ids, _, _, _, _):
effectiveSubject = .message(ids)
case let .gift(gift, _):
effectiveSubject = .gift(gift)
default:
break
}
}
}
}
@ -3173,11 +3179,7 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
case .image, .video:
isSavingAvailable = !controller.isEmbeddedEditor
isFromCamera = true
case .draft:
isSavingAvailable = true
case .message:
isSavingAvailable = true
case .gift:
case .draft, .message,. gift:
isSavingAvailable = true
default:
isSavingAvailable = false
@ -3454,11 +3456,14 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
let renderer = DrawingMessageRenderer(context: self.context, messages: messages, parentView: self.view, isGift: isGift, wallpaperDayColor: wallpaperColors.0, wallpaperNightColor: wallpaperColors.1)
renderer.render(completion: { result in
if case .draft = subject, let existingEntityView = self.entitiesView.getView(where: { entityView in
if let stickerEntityView = entityView as? DrawingStickerEntityView, case .message = (stickerEntityView.entity as! DrawingStickerEntity).content {
return true
} else {
return false
if let stickerEntityView = entityView as? DrawingStickerEntityView {
if case .message = (stickerEntityView.entity as! DrawingStickerEntity).content {
return true
} else if case .gift = (stickerEntityView.entity as! DrawingStickerEntity).content {
return true
}
}
return false
}) as? DrawingStickerEntityView {
existingEntityView.isNightTheme = isNightTheme
let messageEntity = existingEntityView.entity as! DrawingStickerEntity
@ -6416,7 +6421,7 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
}
fileprivate func checkPostingAvailability() {
guard self.postingAvailabilityDisposable == nil else {
guard self.postingAvailabilityDisposable == nil && !self.isEditingStory else {
return
}
self.postingAvailabilityDisposable = (self.postingAvailabilityPromise.get()