Skip to content

Commit 21adc7d

Browse files
committed
Various improvements
1 parent f3c18e1 commit 21adc7d

14 files changed

Lines changed: 388 additions & 41 deletions

File tree

submodules/ListMessageItem/Sources/ListMessageFileItemNode.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ public final class ListMessageFileItemNode: ListMessageNode {
524524
}
525525

526526
if isExtracted {
527-
strongSelf.extractedBackgroundImageNode.image = generateStretchableFilledCircleImage(diameter: 28.0, color: item.presentationData.theme.theme.list.plainBackgroundColor)
527+
strongSelf.extractedBackgroundImageNode.image = generateStretchableFilledCircleImage(diameter: 28.0, color: item.presentationData.theme.theme.list.itemModalBlocksBackgroundColor)
528528
}
529529

530530
if let extractedRect = strongSelf.extractedRect, let nonExtractedRect = strongSelf.nonExtractedRect {
@@ -1036,7 +1036,10 @@ public final class ListMessageFileItemNode: ListMessageNode {
10361036
reorderInset = sizeAndApply.0
10371037
}
10381038

1039-
let contentRightInset = rightInset + rightOffset + reorderInset
1039+
var contentRightInset = rightInset + rightOffset + reorderInset
1040+
if !item.isGlobalSearchResult {
1041+
contentRightInset += 16.0
1042+
}
10401043

10411044
let timestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)
10421045
let dateText = stringForRelativeTimestamp(strings: item.presentationData.strings, relativeTimestamp: item.message?.timestamp ?? 0, relativeTo: timestamp, dateTimeFormat: item.presentationData.dateTimeFormat)

submodules/TelegramBaseController/Sources/MediaNavigationAccessoryHeaderNode.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,10 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, ASScrollVi
279279
self.scrollNode.addSubnode(self.previousItemNode)
280280
self.scrollNode.addSubnode(self.nextItemNode)
281281

282-
self.addSubnode(self.closeButton)
283282
self.addSubnode(self.rateButton)
284283
self.addSubnode(self.accessibilityAreaNode)
285284

286285
self.actionButton.addSubnode(self.playPauseIconNode)
287-
self.addSubnode(self.actionButton)
288286

289287
self.closeButton.addTarget(self, action: #selector(self.closeButtonPressed), forControlEvents: .touchUpInside)
290288
self.actionButton.addTarget(self, action: #selector(self.actionButtonPressed), forControlEvents: .touchUpInside)
@@ -296,6 +294,9 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, ASScrollVi
296294

297295
self.addSubnode(self.scrubbingNode)
298296

297+
self.addSubnode(self.actionButton)
298+
self.addSubnode(self.closeButton)
299+
299300
self.addSubnode(self.separatorNode)
300301

301302
self.actionButton.highligthedChanged = { [weak self] highlighted in

submodules/TelegramCore/Sources/Network/FetchedMediaResource.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ private func findMediaResource(media: Media, previousMedia: Media?, resource: Me
175175
return representation.resource
176176
}
177177
}
178+
if let video = image.video {
179+
if let resource = findMediaResource(media: video, previousMedia: previousMedia, resource: resource) {
180+
return resource
181+
}
182+
}
178183
} else if let file = media as? TelegramMediaFile {
179184
if areResourcesEqual(file.resource, resource) {
180185
return file.resource

submodules/TelegramCore/Sources/TelegramEngine/Messages/PendingStoryManager.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,11 @@ public extension Stories {
201201

202202
self.folders = try container.decodeIfPresent([Int64].self, forKey: .folders) ?? []
203203

204-
let musicData = try container.decode(Data.self, forKey: .music)
205-
self.music = PostboxDecoder(buffer: MemoryBuffer(data: musicData)).decodeRootObject() as? TelegramMediaFile
204+
if let musicData = try container.decodeIfPresent(Data.self, forKey: .music) {
205+
self.music = PostboxDecoder(buffer: MemoryBuffer(data: musicData)).decodeRootObject() as? TelegramMediaFile
206+
} else {
207+
self.music = nil
208+
}
206209

207210
self.uploadInfo = try container.decodeIfPresent(StoryUploadInfo.self, forKey: .uploadInfo)
208211
}

submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditorValues.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,27 @@ public struct MediaAudioTrack: Codable, Equatable {
6666
case artist
6767
case title
6868
case duration
69+
case file
6970
}
7071

7172
public let path: String
7273
public let artist: String?
7374
public let title: String?
7475
public let duration: Double
76+
public let file: TelegramMediaFile?
7577

7678
public init(
7779
path: String,
7880
artist: String?,
7981
title: String?,
80-
duration: Double
82+
duration: Double,
83+
file: TelegramMediaFile? = nil
8184
) {
8285
self.path = path
8386
self.artist = artist
8487
self.title = title
8588
self.duration = duration
89+
self.file = file
8690
}
8791
}
8892

submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5163,7 +5163,7 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
51635163
return
51645164
}
51655165

5166-
self.insertAudio(path: copyPath, fileName: fileName)
5166+
self.insertAudio(path: copyPath, fileName: fileName, file: file.media as? TelegramMediaFile)
51675167
}
51685168
})
51695169
}
@@ -5224,7 +5224,7 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
52245224
}), in: .window(.root))
52255225
}
52265226

5227-
private func insertAudio(path: String, fileName: String, dispose: (() -> Void)? = nil) {
5227+
private func insertAudio(path: String, fileName: String, file: TelegramMediaFile? = nil, dispose: (() -> Void)? = nil) {
52285228
guard let mediaEditor = self.mediaEditor else {
52295229
return
52305230
}
@@ -5300,7 +5300,15 @@ public final class MediaEditorScreenImpl: ViewController, MediaEditorScreen, UID
53005300
audioTrimRange = 0 ..< min(15, audioDuration)
53015301
}
53025302

5303-
mediaEditor.setAudioTrack(MediaAudioTrack(path: fileName, artist: artist, title: title, duration: audioDuration), trimRange: audioTrimRange, offset: audioOffset)
5303+
var passFile = false
5304+
if let file {
5305+
for attribute in file.attributes {
5306+
if case let .Audio(_, _, title, _, _) = attribute, let title, !title.isEmpty {
5307+
passFile = true
5308+
}
5309+
}
5310+
}
5311+
mediaEditor.setAudioTrack(MediaAudioTrack(path: fileName, artist: artist, title: title, duration: audioDuration, file: passFile ? file : nil), trimRange: audioTrimRange, offset: audioOffset)
53045312

53055313
mediaEditor.seek(mediaEditor.values.videoTrimRange?.lowerBound ?? 0.0, andPlay: true)
53065314

submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorStoryCompletion.swift

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ extension MediaEditorScreenImpl {
129129
if self.isEmbeddedEditor && !(hasAnyChanges || hasEntityChanges) {
130130
self.saveDraft(id: randomId, isEdit: true)
131131

132-
self.completion([MediaEditorScreenImpl.Result(media: nil, mediaAreas: [], caption: caption, coverTimestamp: mediaEditor.values.coverImageTimestamp, options: self.state.privacy, stickers: stickers, music: nil, randomId: randomId)], { [weak self] finished in
132+
self.completion([MediaEditorScreenImpl.Result(media: nil, mediaAreas: [], caption: caption, coverTimestamp: mediaEditor.values.coverImageTimestamp, options: self.state.privacy, stickers: stickers, music: mediaEditor.values.audioTrack?.file, randomId: randomId)], { [weak self] finished in
133133
self?.node.animateOut(finished: true, saveDraft: false, completion: { [weak self] in
134134
self?.dismiss()
135135
Queue.mainQueue().justDispatch {
@@ -464,7 +464,7 @@ extension MediaEditorScreenImpl {
464464
return
465465
}
466466
Logger.shared.log("MediaEditor", "Completed with video \(videoResult)")
467-
self.completion([MediaEditorScreenImpl.Result(media: .video(video: videoResult, coverImage: coverImage, values: values, duration: duration, dimensions: values.resultDimensions), mediaAreas: mediaAreas, caption: caption, coverTimestamp: values.coverImageTimestamp, options: self.state.privacy, stickers: stickers, music: nil, randomId: randomId)], { [weak self] finished in
467+
self.completion([MediaEditorScreenImpl.Result(media: .video(video: videoResult, coverImage: coverImage, values: values, duration: duration, dimensions: values.resultDimensions), mediaAreas: mediaAreas, caption: caption, coverTimestamp: values.coverImageTimestamp, options: self.state.privacy, stickers: stickers, music: values.audioTrack?.file, randomId: randomId)], { [weak self] finished in
468468
self?.node.animateOut(finished: true, saveDraft: false, completion: { [weak self] in
469469
self?.dismiss()
470470
Queue.mainQueue().justDispatch {
@@ -506,7 +506,7 @@ extension MediaEditorScreenImpl {
506506
return
507507
}
508508
Logger.shared.log("MediaEditor", "Completed with image \(resultImage)")
509-
self.completion([MediaEditorScreenImpl.Result(media: .image(image: resultImage, dimensions: PixelDimensions(resultImage.size)), mediaAreas: mediaAreas, caption: caption, coverTimestamp: nil, options: self.state.privacy, stickers: stickers, music: nil, randomId: randomId)], { [weak self] finished in
509+
self.completion([MediaEditorScreenImpl.Result(media: .image(image: resultImage, dimensions: PixelDimensions(resultImage.size)), mediaAreas: mediaAreas, caption: caption, coverTimestamp: nil, options: self.state.privacy, stickers: stickers, music: values.audioTrack?.file, randomId: randomId)], { [weak self] finished in
510510
self?.node.animateOut(finished: true, saveDraft: false, completion: { [weak self] in
511511
self?.dismiss()
512512
Queue.mainQueue().justDispatch {
@@ -636,7 +636,7 @@ extension MediaEditorScreenImpl {
636636
}
637637
guard let avAsset else {
638638
Queue.mainQueue().async {
639-
completion(self.createEmptyResult(randomId: randomId))
639+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
640640
}
641641
return
642642
}
@@ -683,19 +683,19 @@ extension MediaEditorScreenImpl {
683683
coverTimestamp: itemMediaEditor.values.coverImageTimestamp,
684684
options: self.state.privacy,
685685
stickers: stickers,
686-
music: nil,
686+
music: itemMediaEditor.values.audioTrack?.file,
687687
randomId: randomId
688688
)
689689
completion(result)
690690
} else {
691-
completion(self.createEmptyResult(randomId: randomId))
691+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
692692
}
693693
}
694694
} else {
695-
completion(self.createEmptyResult(randomId: randomId))
695+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
696696
}
697697
} else {
698-
completion(self.createEmptyResult(randomId: randomId))
698+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
699699
}
700700
}
701701
}
@@ -737,7 +737,7 @@ extension MediaEditorScreenImpl {
737737
return
738738
}
739739
guard let image else {
740-
completion(self.createEmptyResult(randomId: randomId))
740+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
741741
return
742742
}
743743
itemMediaEditor.replaceSource(image, additionalImage: nil, time: .zero, mirror: false)
@@ -766,16 +766,16 @@ extension MediaEditorScreenImpl {
766766
coverTimestamp: nil,
767767
options: self.state.privacy,
768768
stickers: stickers,
769-
music: nil,
769+
music: itemMediaEditor.values.audioTrack?.file,
770770
randomId: randomId
771771
)
772772
completion(result)
773773
} else {
774-
completion(self.createEmptyResult(randomId: randomId))
774+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
775775
}
776776
}
777777
} else {
778-
completion(self.createEmptyResult(randomId: randomId))
778+
completion(self.createEmptyResult(randomId: randomId, music: itemMediaEditor.values.audioTrack?.file))
779779
}
780780
}
781781

@@ -818,7 +818,6 @@ extension MediaEditorScreenImpl {
818818
mode: .default,
819819
subject: editorSubject,
820820
values: values,
821-
hasHistogram: false,
822821
isStandalone: true
823822
)
824823
}
@@ -842,7 +841,7 @@ extension MediaEditorScreenImpl {
842841
}
843842
}
844843

845-
private func createEmptyResult(randomId: Int64) -> MediaEditorScreenImpl.Result {
844+
private func createEmptyResult(randomId: Int64, music: TelegramMediaFile? = nil) -> MediaEditorScreenImpl.Result {
846845
let emptyImage = UIImage()
847846
return MediaEditorScreenImpl.Result(
848847
media: .image(
@@ -854,7 +853,7 @@ extension MediaEditorScreenImpl {
854853
coverTimestamp: nil,
855854
options: self.state.privacy,
856855
stickers: [],
857-
music: nil,
856+
music: music,
858857
randomId: randomId
859858
)
860859
}

submodules/TelegramUI/Components/MediaPlaybackHeaderPanelComponent/Sources/MediaNavigationAccessoryHeaderNode.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,12 +280,10 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, ASScrollVi
280280
self.scrollNode.addSubnode(self.previousItemNode)
281281
self.scrollNode.addSubnode(self.nextItemNode)
282282

283-
self.addSubnode(self.closeButton)
284283
self.addSubnode(self.rateButton)
285284
self.addSubnode(self.accessibilityAreaNode)
286285

287286
self.actionButton.addSubnode(self.playPauseIconNode)
288-
self.addSubnode(self.actionButton)
289287

290288
self.closeButton.addTarget(self, action: #selector(self.closeButtonPressed), forControlEvents: .touchUpInside)
291289
self.actionButton.addTarget(self, action: #selector(self.actionButtonPressed), forControlEvents: .touchUpInside)
@@ -297,6 +295,9 @@ public final class MediaNavigationAccessoryHeaderNode: ASDisplayNode, ASScrollVi
297295

298296
self.addSubnode(self.scrubbingNode)
299297

298+
self.addSubnode(self.actionButton)
299+
self.addSubnode(self.closeButton)
300+
300301
self.actionButton.highligthedChanged = { [weak self] highlighted in
301302
if let strongSelf = self {
302303
if highlighted {

submodules/TelegramUI/Components/PlainButtonComponent/Sources/PlainButtonComponent.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public final class PlainButtonComponent: Component {
2020
public let animateAlpha: Bool
2121
public let animateScale: Bool
2222
public let animateContents: Bool
23+
public let rasterizeOnScaleAnimation: Bool
2324
public let tag: AnyObject?
2425

2526
public init(
@@ -33,6 +34,7 @@ public final class PlainButtonComponent: Component {
3334
animateAlpha: Bool = true,
3435
animateScale: Bool = true,
3536
animateContents: Bool = true,
37+
rasterizeOnScaleAnimation: Bool = true,
3638
tag: AnyObject? = nil
3739
) {
3840
self.content = content
@@ -45,6 +47,7 @@ public final class PlainButtonComponent: Component {
4547
self.animateAlpha = animateAlpha
4648
self.animateScale = animateScale
4749
self.animateContents = animateContents
50+
self.rasterizeOnScaleAnimation = rasterizeOnScaleAnimation
4851
self.tag = tag
4952
}
5053

@@ -76,6 +79,9 @@ public final class PlainButtonComponent: Component {
7679
if lhs.animateContents != rhs.animateContents {
7780
return false
7881
}
82+
if lhs.rasterizeOnScaleAnimation != rhs.rasterizeOnScaleAnimation {
83+
return false
84+
}
7985
if lhs.tag !== rhs.tag {
8086
return false
8187
}

0 commit comments

Comments
 (0)