package main import ( "errors" "fmt" "strings" door "git.red-green.com/RedGreen/doorgo" ) var ( d door.Door udb *UserDB u *User ) func main() { d.Init("Geode") defer d.Close() udb = &UserDB{} err := udb.Open("users.db3") if err != nil { fmt.Printf("UserDB.Open(filename='users.db3') > %v\r\n", err) return } u = udb.FindUser(d.Config.Handle + "@" + d.Config.BBSID) if u != nil { d.WriteS(door.ColorTextS("BRI YEL ON BLA") + "Geode" + door.ColorTextS("WHI ON BLA") + " by " + door.ColorTextS("BRI RED ON BLA") + "Apollo" + door.ColorTextS("BRI BLA ON BLA") + "@" + door.ColorTextS("BRI GRE ON BLA") + "21:1/236" + door.Reset + door.CRNL + door.ColorTextS("BRI CYA ON BLA") + fmt.Sprintf("Welcome back %s%s", door.ColorTextS("BRI WHI ON BLA"), u.Name) + door.CRNL) d.WaitKey(door.Inactivity) } else { u = &User{} d.WriteS(door.ColorTextS("BRI YEL ON BLA") + "Geode" + door.ColorTextS("WHI ON BLA") + " by " + door.ColorTextS("BRI RED ON BLA") + "Apollo" + door.ColorTextS("BRI BLA ON BLA") + "@" + door.ColorTextS("BRI GRE ON BLA") + "21:1/236" + door.Reset + door.CRNL + door.ColorTextS("BRI CYA ON BLA") + "Welcome new user" + door.CRNL) NEW_NAME: for { d.WriteS(door.GotoS(1, 4) + door.Reset + strings.Repeat(" ", door.Width-1)) d.WriteS(door.GotoS(1, 3) + door.ColorTextS("BRI YEL ON BLA") + "Your Name: " + door.ColorTextS("BRI WHI ON BLU")) name := d.Input(30) if len(name) == 0 { d.WriteS(door.Reset + door.CRNL + "Goodbye!") return } d.WriteS(door.Reset + door.CRNL + door.ColorTextS("BRI WHI ON BLA") + name + door.ColorTextS("BRI GRE ON BLA") + " ok?" + door.Reset + " ") r, _, err := d.WaitKey(door.Inactivity) if err != nil { if errors.Is(err, door.ErrDisconnected) { return } else { continue NEW_NAME } } if r == 'y' || r == 'Y' { u.BBSName = d.Config.BBSID u.BBSNick = d.Config.Handle u.Name = name err = udb.SaveUser(u) if err != nil { d.WriteS(fmt.Sprintf("%sErr: %v", door.ColorTextS("BRI RED ON BLA"), err) + door.CRNL) d.WaitKey(door.Inactivity) return } else { d.WriteS(door.CRNL + door.Reset + "Saved!" + door.CRNL) } break NEW_NAME } } } }