@@ -21,6 +21,7 @@ const (
21
21
KeysPage ViewportPage = "keys"
22
22
GeneratePage ViewportPage = "generate"
23
23
TransactionPage ViewportPage = "transaction"
24
+ ErrorPage ViewportPage = "error"
24
25
)
25
26
26
27
type ViewportViewModel struct {
@@ -41,6 +42,10 @@ type ViewportViewModel struct {
41
42
42
43
page ViewportPage
43
44
client * api.ClientWithResponses
45
+
46
+ // Error Handler
47
+ errorMsg * string
48
+ errorPage ErrorViewModel
44
49
}
45
50
46
51
type DeleteFinished string
@@ -73,6 +78,9 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
73
78
cmds = append (cmds , cmd )
74
79
75
80
switch msg := msg .(type ) {
81
+ case error :
82
+ strMsg := msg .Error ()
83
+ m .errorMsg = & strMsg
76
84
// When the state updates
77
85
case internal.StateModel :
78
86
m .Data = & msg
@@ -170,6 +178,7 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
170
178
m .transactionPage , cmd = m .transactionPage .HandleMessage (pageMsg )
171
179
cmds = append (cmds , cmd )
172
180
//}
181
+ m .errorPage , cmd = m .errorPage .HandleMessage (pageMsg )
173
182
cmds = append (cmds , cmd )
174
183
// Avoid triggering commands again
175
184
return m , tea .Batch (cmds ... )
@@ -192,6 +201,13 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
192
201
193
202
// View renders the viewport.Model
194
203
func (m ViewportViewModel ) View () string {
204
+ errMsg := m .errorMsg
205
+
206
+ if errMsg != nil {
207
+ m .errorPage .Message = * errMsg
208
+ m .page = ErrorPage
209
+ }
210
+
195
211
// Handle Page render
196
212
var page tea.Model
197
213
switch m .page {
@@ -203,6 +219,8 @@ func (m ViewportViewModel) View() string {
203
219
page = m .keysPage
204
220
case TransactionPage :
205
221
page = m .transactionPage
222
+ case ErrorPage :
223
+ page = m .errorPage
206
224
}
207
225
208
226
if page == nil {
@@ -247,6 +265,8 @@ func MakeViewportViewModel(state *internal.StateModel, client *api.ClientWithRes
247
265
page : AccountsPage ,
248
266
// RPC client
249
267
client : client ,
268
+
269
+ errorPage : NewErrorViewModel ("" ),
250
270
}
251
271
252
272
return & m , nil
0 commit comments