From f8d19fc39dea923e513d24b2e1a69b230c006db4 Mon Sep 17 00:00:00 2001 From: Tlaster Date: Fri, 19 Jun 2026 14:43:45 +0900 Subject: [PATCH 1/2] fix ios agent input --- iosApp/flare/UI/Component/AgentChatView.swift | 11 ----------- iosApp/flare/UI/Screen/AgentChatScreen.swift | 1 - iosApp/flare/UI/Screen/LocalHistoryAgentScreen.swift | 1 - iosApp/flare/UI/Screen/ProfileInsightSheet.swift | 1 - iosApp/flare/UI/Screen/StatusInsightSheet.swift | 1 - 5 files changed, 15 deletions(-) diff --git a/iosApp/flare/UI/Component/AgentChatView.swift b/iosApp/flare/UI/Component/AgentChatView.swift index 8b80a1ec7..bf21cd524 100644 --- a/iosApp/flare/UI/Component/AgentChatView.swift +++ b/iosApp/flare/UI/Component/AgentChatView.swift @@ -5,7 +5,6 @@ import KotlinSharedUI struct AgentChatView: View { let messages: [AgentChatHistoryMessage] - let input: String let isRunning: Bool let canSend: Bool let errorMessage: String? @@ -23,7 +22,6 @@ struct AgentChatView: View { init( messages: [AgentChatHistoryMessage], - input: String, isRunning: Bool, canSend: Bool, errorMessage: String?, @@ -37,7 +35,6 @@ struct AgentChatView: View { leadingContent: @escaping () -> AnyView = { AnyView(EmptyView()) } ) { self.messages = messages - self.input = input self.isRunning = isRunning self.canSend = canSend self.errorMessage = errorMessage @@ -96,14 +93,6 @@ struct AgentChatView: View { .onPreferenceChange(AgentChatInputBarHeightPreferenceKey.self) { height in inputBarHeight = height } - .onAppear { - draft = input - } - .onChange(of: input) { _, value in - if draft != value { - draft = value - } - } .onChange(of: draft) { _, value in onInputChange(value) } diff --git a/iosApp/flare/UI/Screen/AgentChatScreen.swift b/iosApp/flare/UI/Screen/AgentChatScreen.swift index 1835fcfeb..5a5f457f3 100644 --- a/iosApp/flare/UI/Screen/AgentChatScreen.swift +++ b/iosApp/flare/UI/Screen/AgentChatScreen.swift @@ -8,7 +8,6 @@ struct AgentChatScreen: View { var body: some View { AgentChatView( messages: Array(presenter.state.messages), - input: presenter.state.input, isRunning: presenter.state.room.isRunning, canSend: presenter.state.canSend, errorMessage: presenter.state.room.errorMessage, diff --git a/iosApp/flare/UI/Screen/LocalHistoryAgentScreen.swift b/iosApp/flare/UI/Screen/LocalHistoryAgentScreen.swift index f30fd0ae0..86017664d 100644 --- a/iosApp/flare/UI/Screen/LocalHistoryAgentScreen.swift +++ b/iosApp/flare/UI/Screen/LocalHistoryAgentScreen.swift @@ -8,7 +8,6 @@ struct LocalHistoryAgentScreen: View { var body: some View { AgentChatView( messages: Array(presenter.state.messages), - input: presenter.state.input, isRunning: presenter.state.room.isRunning, canSend: presenter.state.canSend, errorMessage: presenter.state.room.errorMessage, diff --git a/iosApp/flare/UI/Screen/ProfileInsightSheet.swift b/iosApp/flare/UI/Screen/ProfileInsightSheet.swift index 03b6cdeb8..c8e7540d8 100644 --- a/iosApp/flare/UI/Screen/ProfileInsightSheet.swift +++ b/iosApp/flare/UI/Screen/ProfileInsightSheet.swift @@ -10,7 +10,6 @@ struct ProfileInsightSheet: View { var body: some View { AgentChatView( messages: Array(presenter.state.messages), - input: presenter.state.input, isRunning: presenter.state.room.isRunning, canSend: presenter.state.canSend, errorMessage: presenter.state.room.errorMessage, diff --git a/iosApp/flare/UI/Screen/StatusInsightSheet.swift b/iosApp/flare/UI/Screen/StatusInsightSheet.swift index bb8370077..de88f16c0 100644 --- a/iosApp/flare/UI/Screen/StatusInsightSheet.swift +++ b/iosApp/flare/UI/Screen/StatusInsightSheet.swift @@ -10,7 +10,6 @@ struct StatusInsightSheet: View { var body: some View { AgentChatView( messages: Array(presenter.state.messages), - input: presenter.state.input, isRunning: presenter.state.room.isRunning, canSend: presenter.state.canSend, errorMessage: presenter.state.room.errorMessage, From 1440350cae901b6dc791112327ea057e5a18c796 Mon Sep 17 00:00:00 2001 From: Tlaster Date: Fri, 19 Jun 2026 14:57:37 +0900 Subject: [PATCH 2/2] fix timeline keep screen on --- .../flare/UI/Component/CollectionViewTimeline.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/iosApp/flare/UI/Component/CollectionViewTimeline.swift b/iosApp/flare/UI/Component/CollectionViewTimeline.swift index d56787516..b6ff5adf9 100644 --- a/iosApp/flare/UI/Component/CollectionViewTimeline.swift +++ b/iosApp/flare/UI/Component/CollectionViewTimeline.swift @@ -210,6 +210,7 @@ final class CollectionViewTimelineController: UIViewController, UICollectionView private var lastRenderHashMap: [String: Int32] = [:] private var lastLoadedTimelineItemIDs: Set = [] private let autoplayPlayerView = VideoPlayerView() + private var autoplayPlayerObservation: NSKeyValueObservation? private var autoplaySelectionTask: Task? private var autoplayCountdownTask: Task? private var postRefreshPoolCleanupTask: Task? @@ -321,6 +322,7 @@ final class CollectionViewTimelineController: UIViewController, UICollectionView autoplayCountdownTask?.cancel() postRefreshPoolCleanupTask?.cancel() deferredPoolCleanupTask?.cancel() + autoplayPlayerObservation?.invalidate() NotificationCenter.default.removeObserver(self) } @@ -554,6 +556,10 @@ final class CollectionViewTimelineController: UIViewController, UICollectionView self?.handleAutoplayPlayerStateChanged(state) } } + autoplayPlayerObservation = + autoplayPlayerView.playerLayer.observe(\.player, options: [.initial, .new]) { [weak self] _, _ in + self?.configureTimelineAutoplayPlayer() + } NotificationCenter.default.addObserver( self, selector: #selector(handleTimelineVideoAutoplayNeedsUpdate), @@ -1371,12 +1377,16 @@ final class CollectionViewTimelineController: UIViewController, UICollectionView currentAutoplayID = candidate.id currentAutoplayHostView = candidate.hostView autoplayPlayerView.play(for: candidate.url) - autoplayPlayerView.player?.preventsDisplaySleepDuringVideoPlayback = false + configureTimelineAutoplayPlayer() autoplayPlayerView.isMuted = true autoplayPlayerView.isAutoReplay = true startAutoplayCountdownUpdates() } + private func configureTimelineAutoplayPlayer() { + autoplayPlayerView.player?.preventsDisplaySleepDuringVideoPlayback = false + } + private func handleAutoplayPlayerStateChanged(_ state: VideoPlayerView.State) { guard let host = currentAutoplayHostView as? MediaUIView else { return } switch state {