summaryrefslogtreecommitdiff
path: root/client/application.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/application.go')
-rw-r--r--client/application.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/client/application.go b/client/application.go
index 6b88281..f6310b9 100644
--- a/client/application.go
+++ b/client/application.go
@@ -30,9 +30,9 @@ type application struct {
func newApplication(serverAddress string) *application {
var app application
app.Client = client.New(serverAddress)
- app.goTo(app.cmdWindow.Location())
app.cache = object.NewCache(&app)
app.windowCache = window.NewCache()
+ app.goTo(app.cmdWindow.Location())
app.cmdWindow.info("welcome! type /help for help. try: /join talk")
app.cmdWindow.info("connecting to %s", app.Client.Address)
@@ -71,17 +71,24 @@ func (a *application) OnDisconnect(err error) {
func (a *application) OnEvent(cmd proto.Command) {
switch cmd.Kind {
case "p":
- cw := a.windowCache.Get(channelLocation {cmd.Target}).(*channelWindow)
- if cw != nil && len(cmd.Args) > 0 {
- cw.put(cmd.Args[0])
+ if len(cmd.Args) == 0 {
+ break
}
+ a.windowCache.ForAll(func(win window.Window) {
+ switch win.(type) {
+ case *channelWindow:
+ if win.(*channelWindow).location.id == cmd.Target {
+ win.(*channelWindow).put(cmd.Args[0])
+ }
+ }
+ })
case "update":
if len(cmd.Args) > 0 {
a.onUpdate(cmd.Target, cmd.Args[0])
}
case "delete":
a.cache.Gone(cmd.Target)
- cl := channelLocation {cmd.Target}
+ cl := channelLocation {id: cmd.Target}
if a.windowCache.Get(cl) != nil {
a.windowCache.Evict(cl)
a.removeFromHistory(cl)