emdb/desktop-client/backend/backend.go

50 lines
741 B
Go

package backend
import "strings"
type Backend struct {
s *State
c chan Command
log []string
}
func NewBackend() *Backend {
b := &Backend{
s: NewState(),
c: make(chan Command),
log: make([]string, 0),
}
go b.Run()
return b
}
func (b *Backend) Out() *State {
return b.s
}
func (b *Backend) In() chan Command {
return b.c
}
func (b *Backend) Run() {
for cmd := range b.c {
switch cmd.Name {
case CommandAdd:
newName, ok := cmd.Args[ArgName]
if ok {
newNameStr, ok := newName.(string)
if ok {
b.s.Watched.Append(newNameStr)
b.Log("Item added: " + newNameStr)
}
}
}
}
}
func (b *Backend) Log(msg string) {
b.log = append(b.log, msg)
b.s.Log.Set(strings.Join(b.log, "\n"))
}