package main import ( "citrons.xyz/talk/tui" "citrons.xyz/talk/client/clipboard" "flag" "time" "fmt" "os" ) var globalApp *application func main() { insecure := flag.Bool("no-verify-cert", false, "don't verify tls certificate (INSECURE, for testing only!)") flag.Parse() address := flag.Arg(0) if address == "" { address = "talk.citrons.xyz:27508" } go clipboard.DiscoverCommand() err := tui.Start() if err != nil { fmt.Fprintln(os.Stderr, "error initializing terminal: ", err) os.Exit(-1) } defer func() { tui.End() fmt.Println("bye!") }() globalApp = newApplication(address, *insecure) go globalApp.RunClient() defer globalApp.Stop() drawTick := time.Tick(time.Second / 60) for { select { case m := <-globalApp.Messages(): m.Handle(globalApp) globalApp.redraw = true case e := <-tui.Events(): globalApp.onInput(e) globalApp.redraw = true case <-drawTick: if globalApp.redraw { globalApp.show() tui.DrawLayout() // multi-pass for globalApp.redraw { globalApp.redraw = false tui.Clear() globalApp.show() tui.DrawLayout() } if tui.Present() != nil { os.Exit(-1) } } case text := <-globalApp.activePaste: globalApp.onPaste(text) globalApp.activePaste = nil globalApp.redraw = true } if globalApp.quit == true { return } } }