Various fixes

This commit is contained in:
Ilya Laktyushin
2023-06-24 15:49:07 +02:00
parent b362a9b732
commit e6ca5a2603
3 changed files with 32 additions and 18 deletions

View File

@@ -1182,7 +1182,7 @@ extension Stories.StoredItem {
if let parsedMedia = parsedMedia {
var parsedPrivacy: Stories.Item.Privacy?
if let privacy = privacy {
var base: Stories.Item.Privacy.Base = .everyone
var base: Stories.Item.Privacy.Base = .nobody
var additionalPeerIds: [PeerId] = []
for rule in privacy {
switch rule {

View File

@@ -57,7 +57,7 @@ final class MediaEditorScreenComponent: Component {
let hasAppeared: Bool
let isDismissing: Bool
let bottomSafeInset: CGFloat
let mediaEditor: MediaEditor?
let mediaEditor: Signal<MediaEditor?, NoError>
let privacy: MediaEditorResultPrivacy
let selectedEntity: DrawingEntity?
let entityViewForEntity: (DrawingEntity) -> DrawingEntityView?
@@ -73,7 +73,7 @@ final class MediaEditorScreenComponent: Component {
hasAppeared: Bool,
isDismissing: Bool,
bottomSafeInset: CGFloat,
mediaEditor: MediaEditor?,
mediaEditor: Signal<MediaEditor?, NoError>,
privacy: MediaEditorResultPrivacy,
selectedEntity: DrawingEntity?,
entityViewForEntity: @escaping (DrawingEntity) -> DrawingEntityView?,
@@ -183,20 +183,25 @@ final class MediaEditorScreenComponent: Component {
var playerStateDisposable: Disposable?
var playerState: MediaEditorPlayerState?
init(context: AccountContext, mediaEditor: MediaEditor?) {
init(context: AccountContext, mediaEditor: Signal<MediaEditor?, NoError>) {
self.context = context
super.init()
if let mediaEditor {
self.playerStateDisposable = (mediaEditor.playerState(framesCount: 16)
|> deliverOnMainQueue).start(next: { [weak self] playerState in
if let self {
self.playerState = playerState
self.updated()
}
})
self.playerStateDisposable = (mediaEditor
|> mapToSignal { mediaEditor in
if let mediaEditor {
return mediaEditor.playerState(framesCount: 16)
} else {
return .complete()
}
}
|> deliverOnMainQueue).start(next: { [weak self] playerState in
if let self {
self.playerState = playerState
self.updated()
}
})
}
deinit {
@@ -824,7 +829,10 @@ final class MediaEditorScreenComponent: Component {
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
if let playerState = state.playerState {
@@ -1193,7 +1201,7 @@ final class MediaEditorScreenComponent: Component {
}
if let playerState = state.playerState, playerState.hasAudio {
let isVideoMuted = component.mediaEditor?.values.videoIsMuted ?? false
let isVideoMuted = mediaEditor?.values.videoIsMuted ?? false
let muteContentComponent: AnyComponentWithIdentity<Empty>
if component.hasAppeared {
@@ -1227,8 +1235,8 @@ final class MediaEditorScreenComponent: Component {
transition: transition,
component: AnyComponent(CameraButton(
content: muteContentComponent,
action: { [weak self, weak state] in
if let self, let mediaEditor = self.component?.mediaEditor {
action: { [weak state, weak mediaEditor] in
if let mediaEditor {
state?.muteDidChange = true
let isMuted = !mediaEditor.values.videoIsMuted
mediaEditor.setVideoIsMuted(isMuted)
@@ -1556,6 +1564,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
fileprivate let drawingView: DrawingView
fileprivate let previewView: MediaEditorPreviewView
fileprivate var mediaEditor: MediaEditor?
fileprivate var mediaEditorPromise = Promise<MediaEditor?>()
private let stickerPickerInputData = Promise<StickerPickerInputData>()
@@ -1833,6 +1842,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
}
})
self.mediaEditor = mediaEditor
self.mediaEditorPromise.set(.single(mediaEditor))
mediaEditor.onPlaybackAction = { [weak self] action in
if let self {
@@ -2578,7 +2588,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
hasAppeared: self.hasAppeared,
isDismissing: self.isDismissing && !self.isDismissBySwipeSuppressed,
bottomSafeInset: layout.intrinsicInsets.bottom,
mediaEditor: self.mediaEditor,
mediaEditor: self.mediaEditorPromise.get(),
privacy: controller.state.privacy,
selectedEntity: self.isDisplayingTool ? nil : self.entitiesView.selectedEntityView?.entity,
entityViewForEntity: { [weak self] entity in

View File

@@ -2404,7 +2404,11 @@ public final class StoryItemSetContainerComponent: Component {
|> delay(0.1, queue: Queue.mainQueue())
)
} 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))
}
}