76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/dennwc/dom/js"
|
|
"github.com/zorchenhimer/MovieNight/common"
|
|
)
|
|
|
|
func log(s string) {
|
|
js.Get("console").Call("log", s)
|
|
}
|
|
|
|
func recieve(v []js.Value) {
|
|
if len(v) == 0 {
|
|
fmt.Printf("No data received")
|
|
return
|
|
}
|
|
|
|
fmt.Printf("Received: %s\n", v[0])
|
|
data, err := common.DecodeData(fmt.Sprintf("%s", v[0]))
|
|
if err != nil {
|
|
fmt.Printf("Error decoding data: %s\n", err)
|
|
js.Call("appendMessages", v)
|
|
return
|
|
}
|
|
|
|
switch data.GetType() {
|
|
case common.DT_CHAT, common.DT_EVENT, common.DT_ERROR:
|
|
js.Call("appendMessages", data.HTML())
|
|
case common.DT_COMMAND:
|
|
dc := data.(common.DataCommand)
|
|
|
|
switch dc.Command {
|
|
case common.CMD_PLAYING:
|
|
if dc.Arguments == nil || len(dc.Arguments) == 0 {
|
|
js.Call("setPlaying", "", "")
|
|
|
|
} else if len(dc.Arguments) == 1 {
|
|
js.Call("setPlaying", dc.Arguments[0], "")
|
|
|
|
} else if len(dc.Arguments) == 2 {
|
|
js.Call("setPlaying", dc.Arguments[0], dc.Arguments[1])
|
|
}
|
|
case common.CMD_REFRESHPLAYER:
|
|
js.Call("initPlayer", nil)
|
|
case common.CMD_PURGECHAT:
|
|
fmt.Println("//TODO: chat purge command received.")
|
|
case common.CMD_HELP:
|
|
js.Call("appendMesages", data.HTML())
|
|
// TODO: open window
|
|
//js.Call("")
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
func send(v []js.Value) {
|
|
if len(v) != 1 {
|
|
log(fmt.Sprintf("expected 1 parameter, got %d", len(v)))
|
|
return
|
|
}
|
|
js.Call("websocketSend", v)
|
|
}
|
|
|
|
func main() {
|
|
js.Set("recieveMessage", js.CallbackOf(recieve))
|
|
js.Set("sendMessage", js.CallbackOf(send))
|
|
|
|
// This is needed so the goroutine does not end
|
|
for {
|
|
time.Sleep(time.Minute)
|
|
}
|
|
}
|