Skip to content

Commit

Permalink
Merge pull request #48 from termkit/fix-panic
Browse files Browse the repository at this point in the history
Improve the logic to prevent unexpected panic
  • Loading branch information
canack committed Mar 13, 2024
2 parents 46f70c4 + 52fde5c commit a4b5c90
Showing 1 changed file with 59 additions and 57 deletions.
116 changes: 59 additions & 57 deletions internal/terminal/handler/ghtrigger/ghtrigger.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,11 @@ func (m *ModelGithubTrigger) switchBetweenInputAndTable() {
m.textInput.SetCursor(len(m.textInput.Value()))
}

func (m *ModelGithubTrigger) inputController(ctx context.Context) {
func (m *ModelGithubTrigger) inputController(_ context.Context) {
if m.workflowContent == nil {
return
}

if len(m.tableTrigger.Rows()) > 0 {
var selectedRow = m.tableTrigger.SelectedRow()
if len(selectedRow) == 0 {
Expand Down Expand Up @@ -248,16 +252,36 @@ func (m *ModelGithubTrigger) inputController(ctx context.Context) {
}
}

if m.workflowContent != nil {
for i, choice := range m.workflowContent.Choices {
for i, choice := range m.workflowContent.Choices {
var selectedRow = m.tableTrigger.SelectedRow()
var rows = m.tableTrigger.Rows()

if len(selectedRow) == 0 || len(rows) == 0 {
return
}
if fmt.Sprintf("%d", choice.ID) == selectedRow[0] {
m.workflowContent.Choices[i].SetValue(m.optionValues[m.optionCursor])

for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.optionValues[m.optionCursor]
}
}

m.tableTrigger.SetRows(rows)
}
}

if m.workflowContent.Boolean != nil {
for i, boolean := range m.workflowContent.Boolean {
var selectedRow = m.tableTrigger.SelectedRow()
if len(selectedRow) == 0 {
var rows = m.tableTrigger.Rows()
if len(selectedRow) == 0 || len(rows) == 0 {
return
}
if fmt.Sprintf("%d", choice.ID) == selectedRow[0] {
m.workflowContent.Choices[i].SetValue(m.optionValues[m.optionCursor])
if fmt.Sprintf("%d", boolean.ID) == selectedRow[0] {
m.workflowContent.Boolean[i].SetValue(m.optionValues[m.optionCursor])

rows := m.tableTrigger.Rows()
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.optionValues[m.optionCursor]
Expand All @@ -267,69 +291,47 @@ func (m *ModelGithubTrigger) inputController(ctx context.Context) {
m.tableTrigger.SetRows(rows)
}
}
}

if m.workflowContent.Boolean != nil {
for i, boolean := range m.workflowContent.Boolean {
var selectedRow = m.tableTrigger.SelectedRow()
if len(selectedRow) == 0 {
return
}
if fmt.Sprintf("%d", boolean.ID) == selectedRow[0] {
m.workflowContent.Boolean[i].SetValue(m.optionValues[m.optionCursor])

rows := m.tableTrigger.Rows()
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.optionValues[m.optionCursor]
}
}
if m.textInput.Focused() {
if strings.HasPrefix(m.textInput.Value(), " ") {
m.textInput.SetValue("")
}

m.tableTrigger.SetRows(rows)
}
}
var selectedRow = m.tableTrigger.SelectedRow()
var rows = m.tableTrigger.Rows()
if len(selectedRow) == 0 || len(rows) == 0 {
return
}

if m.textInput.Focused() {
if strings.HasPrefix(m.textInput.Value(), " ") {
m.textInput.SetValue("")
}
for i, input := range m.workflowContent.Inputs {
if fmt.Sprintf("%d", input.ID) == selectedRow[0] {
m.textInput.Placeholder = input.Default
m.workflowContent.Inputs[i].SetValue(m.textInput.Value())

var selectedRow = m.tableTrigger.SelectedRow()
if len(selectedRow) == 0 {
return
}
for i, input := range m.workflowContent.Inputs {
if fmt.Sprintf("%d", input.ID) == selectedRow[0] {
m.textInput.Placeholder = input.Default
m.workflowContent.Inputs[i].SetValue(m.textInput.Value())

rows := m.tableTrigger.Rows()
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.textInput.Value()
}
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.textInput.Value()
}

m.tableTrigger.SetRows(rows)
}

m.tableTrigger.SetRows(rows)
}
}

for i, keyVal := range m.workflowContent.KeyVals {
if fmt.Sprintf("%d", keyVal.ID) == selectedRow[0] {
m.textInput.Placeholder = keyVal.Default
m.workflowContent.KeyVals[i].SetValue(m.textInput.Value())
for i, keyVal := range m.workflowContent.KeyVals {
if fmt.Sprintf("%d", keyVal.ID) == selectedRow[0] {
m.textInput.Placeholder = keyVal.Default
m.workflowContent.KeyVals[i].SetValue(m.textInput.Value())

rows := m.tableTrigger.Rows()
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.textInput.Value()
}
for i, row := range rows {
if row[0] == selectedRow[0] {
rows[i][4] = m.textInput.Value()
}

m.tableTrigger.SetRows(rows)
}
}

m.tableTrigger.SetRows(rows)
}
}
}
}
Expand Down

0 comments on commit a4b5c90

Please sign in to comment.