@@ -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