diff --git a/submodules/MediaPlayer/Package.swift b/submodules/MediaPlayer/Package.swift new file mode 100644 index 0000000000..35d1875d35 --- /dev/null +++ b/submodules/MediaPlayer/Package.swift @@ -0,0 +1,47 @@ +// swift-tools-version:5.5 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "MediaPlayer", + platforms: [.macOS(.v10_13)], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "MediaPlayer", + targets: ["MediaPlayer"]), + ], + dependencies: [ + .package(name: "TelegramCore", path: "../TelegramCore"), + .package(name: "Postbox", path: "../Postbox"), + .package(name: "FFMpegBinding", path: "../FFMpegBinding"), + .package(name: "YuvConversion", path: "../YuvConversion"), + .package(name: "RingBuffer", path: "../RingBuffer"), + .package(name: "TGUIKit", path: "../../../../packages/TGUIKit"), + + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "MediaPlayer", + dependencies: [.product(name: "TelegramCore", package: "TelegramCore", condition: nil), + .product(name: "Postbox", package: "Postbox", condition: nil), + .product(name: "FFMpegBinding", package: "FFMpegBinding", condition: nil), + .product(name: "YuvConversion", package: "YuvConversion", condition: nil), + .product(name: "RingBuffer", package: "RingBuffer", condition: nil), + .product(name: "TGUIKit", package: "TGUIKit", condition: nil), + ], + path: "Sources", + exclude: ["MediaPlayer.swift", + "MediaPlayerScrubbingNode.swift", + "MediaPlayerTimeTextNode.swift", + "MediaPlayerNode.swift", + "MediaPlayerAudioRenderer.swift", + "MediaPlayerFramePreview.swift", + "VideoPlayerProxy.swift"]), + ] +) diff --git a/submodules/MediaPlayer/Sources/MediaPlaybackData.swift b/submodules/MediaPlayer/Sources/MediaPlaybackData.swift index b1cff7fd5f..1bd4d33043 100644 --- a/submodules/MediaPlayer/Sources/MediaPlaybackData.swift +++ b/submodules/MediaPlayer/Sources/MediaPlaybackData.swift @@ -5,7 +5,7 @@ public final class MediaPlaybackBuffers { public let audioBuffer: MediaTrackFrameBuffer? public let videoBuffer: MediaTrackFrameBuffer? - init(audioBuffer: MediaTrackFrameBuffer?, videoBuffer: MediaTrackFrameBuffer?) { + public init(audioBuffer: MediaTrackFrameBuffer?, videoBuffer: MediaTrackFrameBuffer?) { self.audioBuffer = audioBuffer self.videoBuffer = videoBuffer } diff --git a/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift b/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift index de302f827a..01f76b8b5f 100644 --- a/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift +++ b/submodules/MediaPlayer/Sources/MediaTrackFrameBuffer.swift @@ -33,10 +33,10 @@ public final class MediaTrackFrameBuffer { private let decoder: MediaTrackFrameDecoder private let type: MediaTrackFrameType public let duration: CMTime - let rotationAngle: Double - let aspect: Double + public let rotationAngle: Double + public let aspect: Double - var statusUpdated: () -> Void = { } + public var statusUpdated: () -> Void = { } private var frameSourceSinkIndex: Int? diff --git a/submodules/MediaPlayer/Sources/TimeBasedVideoPreload.swift b/submodules/MediaPlayer/Sources/TimeBasedVideoPreload.swift index 596574f1f1..58109e5feb 100644 --- a/submodules/MediaPlayer/Sources/TimeBasedVideoPreload.swift +++ b/submodules/MediaPlayer/Sources/TimeBasedVideoPreload.swift @@ -1,5 +1,9 @@ import Foundation +#if !os(macOS) import UIKit +#else +import AppKit +#endif import SwiftSignalKit import Postbox import TelegramCore diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_CachedUserData.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_CachedUserData.swift index b693a9c933..7450474d34 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_CachedUserData.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_CachedUserData.swift @@ -203,6 +203,7 @@ public struct CachedUserFlags: OptionSet { public static let translationHidden = CachedUserFlags(rawValue: 1 << 0) public static let isBlockedFromStories = CachedUserFlags(rawValue: 1 << 1) + public static let readDatesPrivate = CachedUserFlags(rawValue: 1 << 2) } public final class EditableBotInfo: PostboxCoding, Equatable { diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift b/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift index d09e8f7a92..448fd0e1c4 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Peers/UpdateCachedPeerData.swift @@ -235,6 +235,20 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee let voiceCallsAvailable = (userFullFlags & (1 << 4)) != 0 let videoCallsAvailable = (userFullFlags & (1 << 13)) != 0 let voiceMessagesAvailable = (userFullFlags & (1 << 20)) == 0 + let readDatesPrivate = (userFullFlags & (1 << 30)) != 0 + let translationsDisabled = (userFullFlags & (1 << 23)) != 0 + + var flags: CachedUserFlags = previous.flags + if readDatesPrivate { + flags.insert(.readDatesPrivate) + } else { + flags.remove(.readDatesPrivate) + } + if translationsDisabled { + flags.insert(.translationHidden) + } else { + flags.remove(.translationHidden) + } let callsPrivate = (userFullFlags & (1 << 5)) != 0 let canPinMessages = (userFullFlags & (1 << 7)) != 0 @@ -286,6 +300,7 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee .withUpdatedPremiumGiftOptions(premiumGiftOptions) .withUpdatedVoiceMessagesAvailable(voiceMessagesAvailable) .withUpdatedWallpaper(wallpaper) + .withUpdatedFlags(flags) } }) }