Skip to content

Commit 8f8909d

Browse files
committed
Fix that chat panel can't be displayed by open commands after being hidden
1 parent a583915 commit 8f8909d

1 file changed

Lines changed: 12 additions & 14 deletions

File tree

Core/Sources/SuggestionWidget/FeatureReducers/ChatPanelFeature.swift

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct ChatPanelFeature: ReducerProtocol {
2727
case closeChatPanel
2828

2929
case updateContent
30-
case updateChatProvider(ChatProvider?)
30+
case updateChatProvider(ChatProvider?, forceDisplayIfPossible: Bool)
3131
}
3232

3333
@Dependency(\.suggestionWidgetControllerDependency) var suggestionWidgetControllerDependency
@@ -67,37 +67,35 @@ struct ChatPanelFeature: ReducerProtocol {
6767
if forceDetach {
6868
state.chatPanelInASeparateWindow = true
6969
}
70-
let oldChatProviderId = state.chat?.id
70+
7171
return .run { send in
7272
guard let provider = await fetchChatProvider(
7373
fileURL: xcodeInspector.activeDocumentURL
7474
) else { return }
75-
76-
if oldChatProviderId != provider.id {
77-
await send(.updateChatProvider(provider))
78-
}
75+
await send(.updateChatProvider(provider, forceDisplayIfPossible: true))
7976

8077
try await Task.sleep(nanoseconds: 150_000_000)
8178
await NSApplication.shared.activate(ignoringOtherApps: true)
8279
}
8380

8481
case .updateContent:
85-
let oldChatProviderId = state.chat?.id
8682
return .run { send in
8783
if let provider = await fetchChatProvider(
8884
fileURL: xcodeInspector.activeDocumentURL
8985
) {
90-
if oldChatProviderId != provider.id {
91-
await send(.updateChatProvider(provider))
92-
}
86+
await send(.updateChatProvider(provider, forceDisplayIfPossible: false))
9387
} else {
94-
await send(.updateChatProvider(nil))
88+
await send(.updateChatProvider(nil, forceDisplayIfPossible: true))
9589
}
9690
}
9791

98-
case let .updateChatProvider(provider):
99-
state.chat = provider
100-
state.isPanelDisplayed = provider != nil
92+
case let .updateChatProvider(provider, updateDisplay):
93+
if state.chat?.id != provider?.id {
94+
state.chat = provider
95+
}
96+
if updateDisplay {
97+
state.isPanelDisplayed = provider != nil
98+
}
10199
return .none
102100
}
103101
}

0 commit comments

Comments
 (0)