in internal/ui/progress/progress.go [57:107]
func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) {
switch msg := msg.(type) {
case tea.WindowSizeMsg:
m.progress.Width = msg.Width - 4
return m, nil
// FrameMsg is sent when the progress bar wants to animate itself
case prog.FrameMsg:
progressModel, cmd := m.progress.Update(msg)
m.progress = progressModel.(prog.Model)
return m, cmd
case aztfexportclient.ImportItemsDoneMsg:
var cmds []tea.Cmd
// Update results
items := msg.Items
for i := range items {
m.l[m.idx+i] = items[i]
emoji := common.RandomHappyEmoji()
if items[i].ImportError != nil {
emoji = common.WarningEmoji
}
res := result{
item: items[i],
emoji: emoji,
}
m.results = append(m.results[1:], res)
}
m.idx += m.parallelism
if m.iterationDone() {
cmds = append(cmds, m.progress.SetPercent(1))
cmds = append(cmds, aztfexportclient.FinishImport(m.l))
return m, tea.Batch(cmds...)
}
cmds = append(cmds, m.progress.SetPercent(float64(m.idx)/float64(len(m.l))))
n := m.parallelism
if m.idx+m.parallelism > len(m.l) {
n = len(m.l) - m.idx
}
cmds = append(cmds, aztfexportclient.ImportItems(m.ctx, m.c, m.l[m.idx:m.idx+n]))
return m, tea.Batch(cmds...)
default:
return m, nil
}
}