@@ -24,6 +24,7 @@ class AppViewModel: ObservableObject {
2424
2525 @Published var analyzer : ConversationAnalyzer ?
2626 @Published var answerRequest = AnswerRequest . none
27+ @Published var errorDescription : String ?
2728
2829 @Published var transcript : String ?
2930 @Published var answer : String ?
@@ -67,35 +68,40 @@ struct CheetahApp: App {
6768 // Install manifest needed for the browser extension to talk to ExtensionHelper
6869 _ = try ? installNativeMessagingManifest ( )
6970
70- do {
71- for try await request in viewModel. $answerRequest. receive ( on: RunLoop . main) . values {
72- if let analyzer = viewModel. analyzer {
73- switch request {
74- case . answerQuestion:
75- try await analyzer. answer ( )
76- viewModel. answer = analyzer. context [ . answer]
77- viewModel. codeAnswer = analyzer. context [ . codeAnswer]
78- viewModel. answerRequest = . none
79-
80- case . refineAnswer( let selection) :
81- try await analyzer. answer ( refine: true , selection: selection)
82- viewModel. answer = analyzer. context [ . answer]
83- viewModel. codeAnswer = analyzer. context [ . codeAnswer]
84- viewModel. answerRequest = . none
85-
86- case . analyzeCode:
87- try await analyzer. analyzeCode ( extensionState: extensionState)
88- viewModel. answer = analyzer. context [ . answer]
89- viewModel. answerRequest = . none
90-
91- case . none:
92- break
71+ while true {
72+ do {
73+ for try await request in viewModel. $answerRequest. receive ( on: RunLoop . main) . values {
74+ if let analyzer = viewModel. analyzer {
75+ switch request {
76+ case . answerQuestion:
77+ try await analyzer. answer ( )
78+ viewModel. answer = analyzer. context [ . answer]
79+ viewModel. codeAnswer = analyzer. context [ . codeAnswer]
80+ viewModel. answerRequest = . none
81+
82+ case . refineAnswer( let selection) :
83+ try await analyzer. answer ( refine: true , selection: selection)
84+ viewModel. answer = analyzer. context [ . answer]
85+ viewModel. codeAnswer = analyzer. context [ . codeAnswer]
86+ viewModel. answerRequest = . none
87+
88+ case . analyzeCode:
89+ try await analyzer. analyzeCode ( extensionState: extensionState)
90+ viewModel. answer = analyzer. context [ . answer]
91+ viewModel. answerRequest = . none
92+
93+ case . none:
94+ break
95+ }
9396 }
9497 }
98+ } catch let error as ErrorResult {
99+ viewModel. errorDescription = error. message
100+ viewModel. answerRequest = . none
101+ } catch {
102+ viewModel. errorDescription = error. localizedDescription
103+ viewModel. answerRequest = . none
95104 }
96- } catch {
97- viewModel. answerRequest = . none
98- //TODO: handle error
99105 }
100106 }
101107
0 commit comments