Skip to content

Commit 76eba6e

Browse files
committed
Add convenience init for ChatProvider
1 parent 1736ca3 commit 76eba6e

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
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+
}

0 commit comments

Comments
 (0)