mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
[WIP] Stories
This commit is contained in:
parent
952d9fd88f
commit
e6ebc89b85
@ -502,7 +502,11 @@ public func peersNearbyController(context: AccountContext) -> ViewController {
|
|||||||
})
|
})
|
||||||
|> mapToSignal { coordinate -> Signal<PeersNearbyData?, NoError> in
|
|> mapToSignal { coordinate -> Signal<PeersNearbyData?, NoError> in
|
||||||
guard let coordinate = coordinate else {
|
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()
|
return peersNearbyContext.get()
|
||||||
|> map { peersNearby -> PeersNearbyData in
|
|> map { peersNearby -> PeersNearbyData in
|
||||||
var isVisible = false
|
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 PeersNearbyData(latitude: 0.0, longitude: 0.0, address: nil, visible: isVisible, accountPeerId: context.account.peerId, users: [], groups: [], channels: [])
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
return Signal { subscriber in
|
return Signal { subscriber in
|
||||||
|
@ -82,6 +82,8 @@ public final class RippleEffectView: MTKView {
|
|||||||
self.framebufferOnly = true
|
self.framebufferOnly = true
|
||||||
|
|
||||||
self.isPaused = false
|
self.isPaused = false
|
||||||
|
|
||||||
|
self.isUserInteractionEnabled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
public func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
|
public func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
|
||||||
|
@ -24,6 +24,7 @@ import LegacyMediaPickerUI
|
|||||||
import LegacyCamera
|
import LegacyCamera
|
||||||
import AvatarNode
|
import AvatarNode
|
||||||
import LocalMediaResources
|
import LocalMediaResources
|
||||||
|
import ShareWithPeersScreen
|
||||||
|
|
||||||
private class DetailsChatPlaceholderNode: ASDisplayNode, NavigationDetailsPlaceholderNode {
|
private class DetailsChatPlaceholderNode: ASDisplayNode, NavigationDetailsPlaceholderNode {
|
||||||
private var presentationData: PresentationData
|
private var presentationData: PresentationData
|
||||||
@ -349,57 +350,59 @@ public final class TelegramRootController: NavigationController, TelegramRootCon
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}, completion: { mediaResult, commit in
|
}, completion: { mediaResult, commit in
|
||||||
let privacy = EngineStoryPrivacy(base: .everyone, additionallyIncludePeers: [])
|
let stateContext = ShareWithPeersScreen.StateContext(context: self.context)
|
||||||
// if additionalCategoryIds.contains(AdditionalCategoryId.everyone.rawValue) {
|
let _ = (stateContext.ready |> filter { $0 } |> take(1) |> deliverOnMainQueue).start(next: { [weak self] _ in
|
||||||
// privacy.base = .everyone
|
guard let self else {
|
||||||
// } else if additionalCategoryIds.contains(AdditionalCategoryId.contacts.rawValue) {
|
return
|
||||||
// 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()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
guard let controller = self.viewControllers.last as? ViewController else {
|
||||||
dismissCameraImpl?()
|
return
|
||||||
commit()
|
}
|
||||||
|
|
||||||
|
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.sourceHint = .camera
|
||||||
controller.cancelled = {
|
controller.cancelled = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user