@@ -20,6 +20,7 @@ const (
20
20
KeysPage ViewportPage = "keys"
21
21
GeneratePage ViewportPage = "generate"
22
22
TransactionPage ViewportPage = "transaction"
23
+ ErrorPage ViewportPage = "error"
23
24
)
24
25
25
26
type ViewportViewModel struct {
@@ -40,6 +41,10 @@ type ViewportViewModel struct {
40
41
41
42
page ViewportPage
42
43
client * api.ClientWithResponses
44
+
45
+ // Error Handler
46
+ errorMsg * string
47
+ errorPage ErrorViewModel
43
48
}
44
49
45
50
type DeleteFinished string
@@ -72,6 +77,9 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
72
77
cmds = append (cmds , cmd )
73
78
74
79
switch msg := msg .(type ) {
80
+ case error :
81
+ strMsg := msg .Error ()
82
+ m .errorMsg = & strMsg
75
83
// When the state updates
76
84
case internal.StateModel :
77
85
m .Data = & msg
@@ -158,6 +166,7 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
158
166
m .transactionPage , cmd = m .transactionPage .HandleMessage (pageMsg )
159
167
cmds = append (cmds , cmd )
160
168
//}
169
+ m .errorPage , cmd = m .errorPage .HandleMessage (pageMsg )
161
170
cmds = append (cmds , cmd )
162
171
// Avoid triggering commands again
163
172
return m , tea .Batch (cmds ... )
@@ -180,6 +189,13 @@ func (m ViewportViewModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
180
189
181
190
// View renders the viewport.Model
182
191
func (m ViewportViewModel ) View () string {
192
+ errMsg := m .errorMsg
193
+
194
+ if errMsg != nil {
195
+ m .errorPage .Message = * errMsg
196
+ m .page = ErrorPage
197
+ }
198
+
183
199
// Handle Page render
184
200
var page tea.Model
185
201
switch m .page {
@@ -191,6 +207,8 @@ func (m ViewportViewModel) View() string {
191
207
page = m .keysPage
192
208
case TransactionPage :
193
209
page = m .transactionPage
210
+ case ErrorPage :
211
+ page = m .errorPage
194
212
}
195
213
196
214
if page == nil {
@@ -235,6 +253,8 @@ func MakeViewportViewModel(state *internal.StateModel, client *api.ClientWithRes
235
253
page : AccountsPage ,
236
254
// RPC client
237
255
client : client ,
256
+
257
+ errorPage : NewErrorViewModel ("" ),
238
258
}
239
259
240
260
return & m , nil
0 commit comments