mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 14:45:21 +00:00
Various fixes
This commit is contained in:
@@ -1182,7 +1182,7 @@ extension Stories.StoredItem {
|
|||||||
if let parsedMedia = parsedMedia {
|
if let parsedMedia = parsedMedia {
|
||||||
var parsedPrivacy: Stories.Item.Privacy?
|
var parsedPrivacy: Stories.Item.Privacy?
|
||||||
if let privacy = privacy {
|
if let privacy = privacy {
|
||||||
var base: Stories.Item.Privacy.Base = .everyone
|
var base: Stories.Item.Privacy.Base = .nobody
|
||||||
var additionalPeerIds: [PeerId] = []
|
var additionalPeerIds: [PeerId] = []
|
||||||
for rule in privacy {
|
for rule in privacy {
|
||||||
switch rule {
|
switch rule {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
let hasAppeared: Bool
|
let hasAppeared: Bool
|
||||||
let isDismissing: Bool
|
let isDismissing: Bool
|
||||||
let bottomSafeInset: CGFloat
|
let bottomSafeInset: CGFloat
|
||||||
let mediaEditor: MediaEditor?
|
let mediaEditor: Signal<MediaEditor?, NoError>
|
||||||
let privacy: MediaEditorResultPrivacy
|
let privacy: MediaEditorResultPrivacy
|
||||||
let selectedEntity: DrawingEntity?
|
let selectedEntity: DrawingEntity?
|
||||||
let entityViewForEntity: (DrawingEntity) -> DrawingEntityView?
|
let entityViewForEntity: (DrawingEntity) -> DrawingEntityView?
|
||||||
@@ -73,7 +73,7 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
hasAppeared: Bool,
|
hasAppeared: Bool,
|
||||||
isDismissing: Bool,
|
isDismissing: Bool,
|
||||||
bottomSafeInset: CGFloat,
|
bottomSafeInset: CGFloat,
|
||||||
mediaEditor: MediaEditor?,
|
mediaEditor: Signal<MediaEditor?, NoError>,
|
||||||
privacy: MediaEditorResultPrivacy,
|
privacy: MediaEditorResultPrivacy,
|
||||||
selectedEntity: DrawingEntity?,
|
selectedEntity: DrawingEntity?,
|
||||||
entityViewForEntity: @escaping (DrawingEntity) -> DrawingEntityView?,
|
entityViewForEntity: @escaping (DrawingEntity) -> DrawingEntityView?,
|
||||||
@@ -183,20 +183,25 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
var playerStateDisposable: Disposable?
|
var playerStateDisposable: Disposable?
|
||||||
var playerState: MediaEditorPlayerState?
|
var playerState: MediaEditorPlayerState?
|
||||||
|
|
||||||
init(context: AccountContext, mediaEditor: MediaEditor?) {
|
init(context: AccountContext, mediaEditor: Signal<MediaEditor?, NoError>) {
|
||||||
self.context = context
|
self.context = context
|
||||||
|
|
||||||
super.init()
|
super.init()
|
||||||
|
|
||||||
if let mediaEditor {
|
self.playerStateDisposable = (mediaEditor
|
||||||
self.playerStateDisposable = (mediaEditor.playerState(framesCount: 16)
|
|> mapToSignal { mediaEditor in
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] playerState in
|
if let mediaEditor {
|
||||||
if let self {
|
return mediaEditor.playerState(framesCount: 16)
|
||||||
self.playerState = playerState
|
} else {
|
||||||
self.updated()
|
return .complete()
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|> deliverOnMainQueue).start(next: { [weak self] playerState in
|
||||||
|
if let self {
|
||||||
|
self.playerState = playerState
|
||||||
|
self.updated()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
@@ -824,7 +829,10 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
transition.setAlpha(view: toolsButtonView, alpha: component.isDisplayingTool || component.isDismissing || component.isInteractingWithEntities ? 0.0 : 1.0)
|
transition.setAlpha(view: toolsButtonView, alpha: component.isDisplayingTool || component.isDismissing || component.isInteractingWithEntities ? 0.0 : 1.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
let mediaEditor = component.mediaEditor
|
var mediaEditor: MediaEditor?
|
||||||
|
if let controller = environment.controller() as? MediaEditorScreen {
|
||||||
|
mediaEditor = controller.node.mediaEditor
|
||||||
|
}
|
||||||
|
|
||||||
var scrubberBottomInset: CGFloat = 0.0
|
var scrubberBottomInset: CGFloat = 0.0
|
||||||
if let playerState = state.playerState {
|
if let playerState = state.playerState {
|
||||||
@@ -1193,7 +1201,7 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let playerState = state.playerState, playerState.hasAudio {
|
if let playerState = state.playerState, playerState.hasAudio {
|
||||||
let isVideoMuted = component.mediaEditor?.values.videoIsMuted ?? false
|
let isVideoMuted = mediaEditor?.values.videoIsMuted ?? false
|
||||||
|
|
||||||
let muteContentComponent: AnyComponentWithIdentity<Empty>
|
let muteContentComponent: AnyComponentWithIdentity<Empty>
|
||||||
if component.hasAppeared {
|
if component.hasAppeared {
|
||||||
@@ -1227,8 +1235,8 @@ final class MediaEditorScreenComponent: Component {
|
|||||||
transition: transition,
|
transition: transition,
|
||||||
component: AnyComponent(CameraButton(
|
component: AnyComponent(CameraButton(
|
||||||
content: muteContentComponent,
|
content: muteContentComponent,
|
||||||
action: { [weak self, weak state] in
|
action: { [weak state, weak mediaEditor] in
|
||||||
if let self, let mediaEditor = self.component?.mediaEditor {
|
if let mediaEditor {
|
||||||
state?.muteDidChange = true
|
state?.muteDidChange = true
|
||||||
let isMuted = !mediaEditor.values.videoIsMuted
|
let isMuted = !mediaEditor.values.videoIsMuted
|
||||||
mediaEditor.setVideoIsMuted(isMuted)
|
mediaEditor.setVideoIsMuted(isMuted)
|
||||||
@@ -1556,6 +1564,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
|||||||
fileprivate let drawingView: DrawingView
|
fileprivate let drawingView: DrawingView
|
||||||
fileprivate let previewView: MediaEditorPreviewView
|
fileprivate let previewView: MediaEditorPreviewView
|
||||||
fileprivate var mediaEditor: MediaEditor?
|
fileprivate var mediaEditor: MediaEditor?
|
||||||
|
fileprivate var mediaEditorPromise = Promise<MediaEditor?>()
|
||||||
|
|
||||||
private let stickerPickerInputData = Promise<StickerPickerInputData>()
|
private let stickerPickerInputData = Promise<StickerPickerInputData>()
|
||||||
|
|
||||||
@@ -1833,6 +1842,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
self.mediaEditor = mediaEditor
|
self.mediaEditor = mediaEditor
|
||||||
|
self.mediaEditorPromise.set(.single(mediaEditor))
|
||||||
|
|
||||||
mediaEditor.onPlaybackAction = { [weak self] action in
|
mediaEditor.onPlaybackAction = { [weak self] action in
|
||||||
if let self {
|
if let self {
|
||||||
@@ -2578,7 +2588,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
|
|||||||
hasAppeared: self.hasAppeared,
|
hasAppeared: self.hasAppeared,
|
||||||
isDismissing: self.isDismissing && !self.isDismissBySwipeSuppressed,
|
isDismissing: self.isDismissing && !self.isDismissBySwipeSuppressed,
|
||||||
bottomSafeInset: layout.intrinsicInsets.bottom,
|
bottomSafeInset: layout.intrinsicInsets.bottom,
|
||||||
mediaEditor: self.mediaEditor,
|
mediaEditor: self.mediaEditorPromise.get(),
|
||||||
privacy: controller.state.privacy,
|
privacy: controller.state.privacy,
|
||||||
selectedEntity: self.isDisplayingTool ? nil : self.entitiesView.selectedEntityView?.entity,
|
selectedEntity: self.isDisplayingTool ? nil : self.entitiesView.selectedEntityView?.entity,
|
||||||
entityViewForEntity: { [weak self] entity in
|
entityViewForEntity: { [weak self] entity in
|
||||||
|
|||||||
@@ -2404,7 +2404,11 @@ public final class StoryItemSetContainerComponent: Component {
|
|||||||
|> delay(0.1, queue: Queue.mainQueue())
|
|> delay(0.1, queue: Queue.mainQueue())
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
return .single(.video(data.path, nil, nil, nil, PixelDimensions(width: 720, height: 1280), .bottomRight))
|
let symlinkPath = data.path + ".mp4"
|
||||||
|
if fileSize(symlinkPath) == nil {
|
||||||
|
let _ = try? FileManager.default.linkItem(atPath: data.path, toPath: symlinkPath)
|
||||||
|
}
|
||||||
|
return .single(.video(symlinkPath, nil, nil, nil, PixelDimensions(width: 720, height: 1280), .bottomRight))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user