When unauthenticated users visit a game invite link, show a prompt with options to log in, register, or continue as guest. After login/register, redirect back to the original game URL.
96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package ui
|
|
|
|
import (
|
|
"github.com/ryanhamamura/via/h"
|
|
)
|
|
|
|
func LobbyView(nicknameBind, createGameKeyDown, createGameClick h.H, isLoggedIn bool, username string, logoutClick h.H, userGames []GameListItem, deleteGameClick func(id string) h.H) h.H {
|
|
var authSection h.H
|
|
if isLoggedIn {
|
|
authSection = AuthHeader(username, logoutClick)
|
|
} else {
|
|
authSection = GuestBanner()
|
|
}
|
|
|
|
return h.Main(h.Class("container"),
|
|
h.Div(h.Class("lobby"),
|
|
authSection,
|
|
h.H1(h.Text("Connect 4")),
|
|
h.P(h.Text("Challenge a friend to a game of Connect 4!")),
|
|
h.Form(
|
|
h.FieldSet(
|
|
h.Label(h.Text("Your Nickname"), h.Attr("for", "nickname")),
|
|
h.Input(
|
|
h.ID("nickname"),
|
|
h.Type("text"),
|
|
h.Placeholder("Enter your nickname"),
|
|
nicknameBind,
|
|
h.Attr("required"),
|
|
createGameKeyDown,
|
|
),
|
|
),
|
|
h.Button(
|
|
h.Type("button"),
|
|
h.Text("Create Game"),
|
|
createGameClick,
|
|
),
|
|
),
|
|
GameList(userGames, deleteGameClick),
|
|
),
|
|
)
|
|
}
|
|
|
|
func NicknamePrompt(nicknameBind, setNicknameKeyDown, setNicknameClick h.H) h.H {
|
|
return h.Main(h.Class("container"),
|
|
h.Div(h.Class("lobby"),
|
|
h.H1(h.Text("Join Game")),
|
|
h.P(h.Text("Enter your nickname to join the game.")),
|
|
h.Form(
|
|
h.FieldSet(
|
|
h.Label(h.Text("Your Nickname"), h.Attr("for", "nickname")),
|
|
h.Input(
|
|
h.ID("nickname"),
|
|
h.Type("text"),
|
|
h.Placeholder("Enter your nickname"),
|
|
nicknameBind,
|
|
h.Attr("required"),
|
|
h.Attr("autofocus"),
|
|
setNicknameKeyDown,
|
|
),
|
|
),
|
|
h.Button(
|
|
h.Type("button"),
|
|
h.Text("Join"),
|
|
setNicknameClick,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
}
|
|
|
|
func GameJoinPrompt(loginClick, guestClick, registerClick h.H) h.H {
|
|
return h.Main(h.Class("container"),
|
|
h.Div(h.Class("lobby"),
|
|
h.H1(h.Text("Join Game")),
|
|
h.P(h.Text("Log in to track your game history, or continue as a guest.")),
|
|
h.Div(h.Class("join-options"),
|
|
h.Button(
|
|
h.Type("button"),
|
|
h.Text("Login"),
|
|
loginClick,
|
|
),
|
|
h.Button(
|
|
h.Type("button"),
|
|
h.Class("secondary"),
|
|
h.Text("Continue as Guest"),
|
|
guestClick,
|
|
),
|
|
),
|
|
h.P(h.Class("register-link"),
|
|
h.Text("Don't have an account? "),
|
|
h.A(h.Href("#"), h.Text("Register"), registerClick),
|
|
),
|
|
),
|
|
)
|
|
}
|