MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / Update

Method Update

internal/tui/keys_tab.go:85–255  ·  view source on GitHub ↗
(msg tea.Msg)

Source from the content-addressed store, hash-verified

83}
84
85func (m keysTabModel) Update(msg tea.Msg) (keysTabModel, tea.Cmd) {
86 switch msg := msg.(type) {
87 case localeChangedMsg:
88 m.viewport.SetContent(m.renderContent())
89 return m, nil
90 case keysDataMsg:
91 if msg.err != nil {
92 m.err = msg.err
93 } else {
94 m.err = nil
95 m.keys = msg.apiKeys
96 m.gemini = msg.gemini
97 m.claude = msg.claude
98 m.codex = msg.codex
99 m.vertex = msg.vertex
100 m.openai = msg.openai
101 if m.cursor >= len(m.keys) {
102 m.cursor = max(0, len(m.keys)-1)
103 }
104 }
105 m.viewport.SetContent(m.renderContent())
106 return m, nil
107
108 case keyActionMsg:
109 if msg.err != nil {
110 m.status = errorStyle.Render("✗ " + msg.err.Error())
111 } else {
112 m.status = successStyle.Render("✓ " + msg.action)
113 }
114 m.confirm = -1
115 m.viewport.SetContent(m.renderContent())
116 return m, m.fetchKeys
117
118 case tea.KeyMsg:
119 // ---- Editing / Adding mode ----
120 if m.editing || m.adding {
121 switch msg.String() {
122 case "enter":
123 value := strings.TrimSpace(m.editInput.Value())
124 if value == "" {
125 m.editing = false
126 m.adding = false
127 m.editInput.Blur()
128 m.viewport.SetContent(m.renderContent())
129 return m, nil
130 }
131 isAdding := m.adding
132 editIdx := m.editIdx
133 m.editing = false
134 m.adding = false
135 m.editInput.Blur()
136 if isAdding {
137 return m, func() tea.Msg {
138 err := m.client.AddAPIKey(value)
139 if err != nil {
140 return keyActionMsg{err: err}
141 }
142 return keyActionMsg{action: T("key_added")}

Callers

nothing calls this directly

Calls 8

renderContentMethod · 0.95
maxFunction · 0.85
TFunction · 0.85
AddAPIKeyMethod · 0.80
EditAPIKeyMethod · 0.80
DeleteAPIKeyMethod · 0.80
ErrorMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected