File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import ChatService
2+ import Foundation
3+ import OpenAIService
4+ import SuggestionWidget
5+
6+ extension ChatProvider {
7+ convenience init ( service: ChatService , fileURL: URL , onCloseChat: @escaping ( ) -> Void ) {
8+ self . init ( )
9+ let cancellable = service. objectWillChange. sink { [ weak self] in
10+ guard let self else { return }
11+ Task { @MainActor in
12+ self . history = ( await service. chatGPTService. history) . map { message in
13+ . init(
14+ id: message. id,
15+ isUser: message. role == . user,
16+ text: message. summary ?? message. content
17+ )
18+ }
19+ self . isReceivingMessage = await service. chatGPTService. isReceivingMessage
20+ }
21+ }
22+
23+ service. objectWillChange. send ( )
24+
25+ onMessageSend = { [ cancellable] message in
26+ _ = cancellable
27+ Task {
28+ do {
29+ _ = try await service. send ( content: message)
30+ } catch {
31+ PresentInWindowSuggestionPresenter ( ) . presentError ( error)
32+ }
33+ }
34+ }
35+ onStop = {
36+ Task {
37+ await service. stopReceivingMessage ( )
38+ }
39+ }
40+
41+ onClear = {
42+ Task {
43+ await service. clearHistory ( )
44+ }
45+ }
46+
47+ onClose = {
48+ Task {
49+ await service. stopReceivingMessage ( )
50+ PresentInWindowSuggestionPresenter ( ) . closeChatRoom ( fileURL: fileURL)
51+ onCloseChat ( )
52+ }
53+ }
54+ }
55+ }
You can’t perform that action at this time.
0 commit comments