diff --git a/ui/cmd/cmd.go b/ui/cmd/cmd.go new file mode 100644 index 0000000..ea48da4 --- /dev/null +++ b/ui/cmd/cmd.go @@ -0,0 +1,57 @@ +package cmd + +import tea "github.com/charmbracelet/bubbletea" + +type CallType int8 + +const ( + WinOpen CallType = iota + WinFocus + WinBlur + + ViewFocus + ViewBlur + ViewRefreshData +) + +type Arg struct { + Name string + Value interface{} +} + +type Command struct { + Call CallType + Target string + Args map[string]interface{} +} + +func New( + call CallType, + target string, + args ...Arg, +) *Command { + cmd := new(Command) + cmd.Call = call + cmd.Target = target + cmd.Args = make(map[string]interface{}) + + for _, arg := range args { + cmd.Args[arg.Name] = arg.Value + } + + return cmd +} + +func (cmd *Command) Tea() tea.Cmd { + return func() tea.Msg { + return *cmd + } +} + +func (cmd *Command) GetArg(name string) interface{} { + if iface, ok := cmd.Args[name]; ok { + return iface + } + + return nil +}