diff --git a/submodules/PeersNearbyUI/Sources/PeersNearbyController.swift b/submodules/PeersNearbyUI/Sources/PeersNearbyController.swift index 50ab1a7250..f4eb9bd3d7 100644 --- a/submodules/PeersNearbyUI/Sources/PeersNearbyController.swift +++ b/submodules/PeersNearbyUI/Sources/PeersNearbyController.swift @@ -502,7 +502,11 @@ public func peersNearbyController(context: AccountContext) -> ViewController { }) |> mapToSignal { coordinate -> Signal in guard let coordinate = coordinate else { - let peersNearbyContext = PeersNearbyContext(network: context.account.network, stateManager: context.account.stateManager, coordinate: nil) + #if !DEBUG + #error("fix") + #endif + preconditionFailure() + /*let peersNearbyContext = PeersNearbyContext(network: context.account.network, stateManager: context.account.stateManager, coordinate: nil) return peersNearbyContext.get() |> map { peersNearby -> PeersNearbyData in var isVisible = false @@ -515,7 +519,7 @@ public func peersNearbyController(context: AccountContext) -> ViewController { } } return PeersNearbyData(latitude: 0.0, longitude: 0.0, address: nil, visible: isVisible, accountPeerId: context.account.peerId, users: [], groups: [], channels: []) - } + }*/ } return Signal { subscriber in diff --git a/submodules/TelegramUI/Components/FullScreenEffectView/Sources/RippleEffectView.swift b/submodules/TelegramUI/Components/FullScreenEffectView/Sources/RippleEffectView.swift index 2bf06f470c..9dd60d0b42 100644 --- a/submodules/TelegramUI/Components/FullScreenEffectView/Sources/RippleEffectView.swift +++ b/submodules/TelegramUI/Components/FullScreenEffectView/Sources/RippleEffectView.swift @@ -82,6 +82,8 @@ public final class RippleEffectView: MTKView { self.framebufferOnly = true self.isPaused = false + + self.isUserInteractionEnabled = false } public func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) { diff --git a/submodules/TelegramUI/Sources/TelegramRootController.swift b/submodules/TelegramUI/Sources/TelegramRootController.swift index 09996c5c3e..863fbea304 100644 --- a/submodules/TelegramUI/Sources/TelegramRootController.swift +++ b/submodules/TelegramUI/Sources/TelegramRootController.swift @@ -24,6 +24,7 @@ import LegacyMediaPickerUI import LegacyCamera import AvatarNode import LocalMediaResources +import ShareWithPeersScreen private class DetailsChatPlaceholderNode: ASDisplayNode, NavigationDetailsPlaceholderNode { private var presentationData: PresentationData @@ -349,57 +350,59 @@ public final class TelegramRootController: NavigationController, TelegramRootCon return nil } }, completion: { mediaResult, commit in - let privacy = EngineStoryPrivacy(base: .everyone, additionallyIncludePeers: []) -// if additionalCategoryIds.contains(AdditionalCategoryId.everyone.rawValue) { -// privacy.base = .everyone -// } else if additionalCategoryIds.contains(AdditionalCategoryId.contacts.rawValue) { -// privacy.base = .contacts -// } else if additionalCategoryIds.contains(AdditionalCategoryId.closeFriends.rawValue) { -// privacy.base = .closeFriends -// } -// privacy.additionallyIncludePeers = peerIds.compactMap { id -> EnginePeer.Id? in -// switch id { -// case let .peer(peerId): -// return peerId -// default: -// return nil -// } -// } - - if let chatListController = self.chatListController as? ChatListControllerImpl, let storyListContext = chatListController.storyListContext { - switch mediaResult { - case let .image(image, dimensions, caption): - if let data = image.jpegData(compressionQuality: 0.8) { - storyListContext.upload(media: .image(dimensions: dimensions, data: data), text: caption?.string ?? "", entities: [], privacy: privacy) - Queue.mainQueue().after(0.3, { [weak chatListController] in - chatListController?.animateStoryUploadRipple() - }) - } - case let .video(content, _, values, duration, dimensions, caption): - let adjustments: VideoMediaResourceAdjustments - if let valuesData = try? JSONEncoder().encode(values) { - let data = MemoryBuffer(data: valuesData) - let digest = MemoryBuffer(data: data.md5Digest()) - adjustments = VideoMediaResourceAdjustments(data: data, digest: digest, isStory: true) - - let resource: TelegramMediaResource - switch content { - case let .imageFile(path): - resource = LocalFileVideoMediaResource(randomId: Int64.random(in: .min ... .max), path: path, adjustments: adjustments) - case let .videoFile(path): - resource = LocalFileVideoMediaResource(randomId: Int64.random(in: .min ... .max), path: path, adjustments: adjustments) - case let .asset(localIdentifier): - resource = VideoLibraryMediaResource(localIdentifier: localIdentifier, conversion: .compress(adjustments)) - } - storyListContext.upload(media: .video(dimensions: dimensions, duration: Int(duration), resource: resource), text: caption?.string ?? "", entities: [], privacy: privacy) - Queue.mainQueue().after(0.3, { [weak chatListController] in - chatListController?.animateStoryUploadRipple() - }) - } + let stateContext = ShareWithPeersScreen.StateContext(context: self.context) + let _ = (stateContext.ready |> filter { $0 } |> take(1) |> deliverOnMainQueue).start(next: { [weak self] _ in + guard let self else { + return } - } - dismissCameraImpl?() - commit() + guard let controller = self.viewControllers.last as? ViewController else { + return + } + + controller.push(ShareWithPeersScreen(context: self.context, stateContext: stateContext, completion: { [weak self] privacy in + guard let self else { + dismissCameraImpl?() + commit() + return + } + + if let chatListController = self.chatListController as? ChatListControllerImpl, let storyListContext = chatListController.storyListContext { + switch mediaResult { + case let .image(image, dimensions, caption): + if let data = image.jpegData(compressionQuality: 0.8) { + storyListContext.upload(media: .image(dimensions: dimensions, data: data), text: caption?.string ?? "", entities: [], privacy: privacy) + Queue.mainQueue().after(0.3, { [weak chatListController] in + chatListController?.animateStoryUploadRipple() + }) + } + case let .video(content, _, values, duration, dimensions, caption): + let adjustments: VideoMediaResourceAdjustments + if let valuesData = try? JSONEncoder().encode(values) { + let data = MemoryBuffer(data: valuesData) + let digest = MemoryBuffer(data: data.md5Digest()) + adjustments = VideoMediaResourceAdjustments(data: data, digest: digest, isStory: true) + + let resource: TelegramMediaResource + switch content { + case let .imageFile(path): + resource = LocalFileVideoMediaResource(randomId: Int64.random(in: .min ... .max), path: path, adjustments: adjustments) + case let .videoFile(path): + resource = LocalFileVideoMediaResource(randomId: Int64.random(in: .min ... .max), path: path, adjustments: adjustments) + case let .asset(localIdentifier): + resource = VideoLibraryMediaResource(localIdentifier: localIdentifier, conversion: .compress(adjustments)) + } + storyListContext.upload(media: .video(dimensions: dimensions, duration: Int(duration), resource: resource), text: caption?.string ?? "", entities: [], privacy: privacy) + Queue.mainQueue().after(0.3, { [weak chatListController] in + chatListController?.animateStoryUploadRipple() + }) + } + } + } + + dismissCameraImpl?() + commit() + })) + }) }) controller.sourceHint = .camera controller.cancelled = {