mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
[WIP] Multiple story upload
This commit is contained in:
@@ -1651,6 +1651,7 @@ public class CameraScreenImpl: ViewController, CameraScreen {
|
||||
case videoCollage(VideoCollage)
|
||||
case asset(PHAsset)
|
||||
case draft(MediaEditorDraft)
|
||||
case assets([PHAsset])
|
||||
|
||||
func withPIPPosition(_ position: CameraScreenImpl.PIPPosition) -> Result {
|
||||
switch self {
|
||||
@@ -3637,11 +3638,10 @@ public class CameraScreenImpl: ViewController, CameraScreen {
|
||||
selectionLimit = 10
|
||||
}
|
||||
}
|
||||
//TODO:unmock
|
||||
controller = self.context.sharedContext.makeStoryMediaPickerScreen(
|
||||
context: self.context,
|
||||
isDark: true,
|
||||
forCollage: self.cameraState.isCollageEnabled || "".isEmpty,
|
||||
forCollage: self.cameraState.isCollageEnabled,
|
||||
selectionLimit: selectionLimit,
|
||||
getSourceRect: { [weak self] in
|
||||
if let self {
|
||||
@@ -3707,44 +3707,52 @@ public class CameraScreenImpl: ViewController, CameraScreen {
|
||||
}
|
||||
}
|
||||
}
|
||||
}, multipleCompletion: { [weak self] results in
|
||||
}, multipleCompletion: { [weak self] results, collage in
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
|
||||
if !self.cameraState.isCollageEnabled {
|
||||
var selectedGrid: Camera.CollageGrid = collageGrids.first!
|
||||
for grid in collageGrids {
|
||||
if grid.count == results.count {
|
||||
selectedGrid = grid
|
||||
break
|
||||
|
||||
if collage {
|
||||
if !self.cameraState.isCollageEnabled {
|
||||
var selectedGrid: Camera.CollageGrid = collageGrids.first!
|
||||
for grid in collageGrids {
|
||||
if grid.count == results.count {
|
||||
selectedGrid = grid
|
||||
break
|
||||
}
|
||||
}
|
||||
self.updateCameraState({
|
||||
$0.updatedIsCollageEnabled(true).updatedCollageProgress(0.0).updatedIsDualCameraEnabled(false).updatedCollageGrid(selectedGrid)
|
||||
}, transition: .spring(duration: 0.3))
|
||||
}
|
||||
self.updateCameraState({
|
||||
$0.updatedIsCollageEnabled(true).updatedCollageProgress(0.0).updatedIsDualCameraEnabled(false).updatedCollageGrid(selectedGrid)
|
||||
}, transition: .spring(duration: 0.3))
|
||||
}
|
||||
|
||||
if let assets = results as? [PHAsset] {
|
||||
var results: [Signal<CameraScreenImpl.Result, NoError>] = []
|
||||
for asset in assets {
|
||||
if asset.mediaType == .video && asset.duration > 1.0 {
|
||||
results.append(.single(.asset(asset)))
|
||||
} else {
|
||||
results.append(
|
||||
assetImage(asset: asset, targetSize: CGSize(width: 1080, height: 1080), exact: false, deliveryMode: .highQualityFormat)
|
||||
|> runOn(Queue.concurrentDefaultQueue())
|
||||
|> mapToSignal { image -> Signal<CameraScreenImpl.Result, NoError> in
|
||||
if let image {
|
||||
return .single(.image(Result.Image(image: image, additionalImage: nil, additionalImagePosition: .topLeft)))
|
||||
} else {
|
||||
return .complete()
|
||||
|
||||
if let assets = results as? [PHAsset] {
|
||||
var results: [Signal<CameraScreenImpl.Result, NoError>] = []
|
||||
for asset in assets {
|
||||
if asset.mediaType == .video && asset.duration > 1.0 {
|
||||
results.append(.single(.asset(asset)))
|
||||
} else {
|
||||
results.append(
|
||||
assetImage(asset: asset, targetSize: CGSize(width: 1080, height: 1080), exact: false, deliveryMode: .highQualityFormat)
|
||||
|> runOn(Queue.concurrentDefaultQueue())
|
||||
|> mapToSignal { image -> Signal<CameraScreenImpl.Result, NoError> in
|
||||
if let image {
|
||||
return .single(.image(Result.Image(image: image, additionalImage: nil, additionalImagePosition: .topLeft)))
|
||||
} else {
|
||||
return .complete()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
self.node.collage?.addResults(signals: results)
|
||||
}
|
||||
} else {
|
||||
if let assets = results as? [PHAsset] {
|
||||
self.completion(.single(.assets(assets)), nil, {
|
||||
|
||||
})
|
||||
}
|
||||
self.node.collage?.addResults(signals: results)
|
||||
}
|
||||
self.galleryController = nil
|
||||
|
||||
|
||||
Reference in New Issue
Block a user