@@ -194,8 +194,7 @@ struct WindowBaseCommandHandler: SuggestionCommandHandler {
194194 let codeLanguage = languageIdentifierFromFileURL ( fileURL)
195195 guard let selection = editor. selections. last else { return }
196196
197- let chat = filespace. chatService ?? ChatService ( chatGPTService: ChatGPTService ( ) )
198- filespace. chatService = chat
197+ let chat = createChatServiceIfNeeded ( filespace: filespace)
199198
200199 await chat. mutateSystemPrompt (
201200 """
@@ -262,8 +261,7 @@ struct WindowBaseCommandHandler: SuggestionCommandHandler {
262261 """
263262 } ( )
264263
265- let chat = filespace. chatService ?? ChatService ( chatGPTService: ChatGPTService ( ) )
266- filespace. chatService = chat
264+ let chat = createChatServiceIfNeeded ( filespace: filespace)
267265
268266 await chat. mutateSystemPrompt ( prompt)
269267
@@ -282,3 +280,19 @@ struct WindowBaseCommandHandler: SuggestionCommandHandler {
282280 presenter. presentChatGPTConversation ( fileURL: fileURL)
283281 }
284282}
283+
284+ extension SuggestionCommandHandler {
285+ @ServiceActor
286+ func createChatServiceIfNeeded( filespace: Filespace ) -> ChatService {
287+ let chat : ChatService
288+ if UserDefaults . shared. value ( for: \. useGlobalChat) {
289+ chat = WidgetDataSource . shared. globalChat
290+ ?? ChatService ( chatGPTService: ChatGPTService ( ) )
291+ WidgetDataSource . shared. globalChat = chat
292+ } else {
293+ chat = filespace. chatService ?? ChatService ( chatGPTService: ChatGPTService ( ) )
294+ filespace. chatService = chat
295+ }
296+ return chat
297+ }
298+ }
0 commit comments