Answer handling yay
This commit is contained in:
parent
f3020b7cb0
commit
1a410072c2
9 changed files with 79 additions and 42 deletions
|
|
@ -29,13 +29,24 @@ pub fn component() -> lustre.App(
|
|||
pub opaque type Model {
|
||||
Model(
|
||||
state: Msg,
|
||||
players: List(#(String, String)),
|
||||
players: List(#(String, #(String, List(#(String, String))))),
|
||||
player: Option(#(String, String)),
|
||||
answers: List(#(String, #(String, String))),
|
||||
handler: Started(Subject(NotifyServer)),
|
||||
)
|
||||
}
|
||||
|
||||
pub opaque type Msg {
|
||||
Initial
|
||||
PickedPlayer(player: Option(#(String, String)))
|
||||
SharedMessage(message: NotifyClient)
|
||||
ReceiveName(name: Option(String))
|
||||
AcceptPlayer(accept: Option(#(String, String)))
|
||||
PickQuestion
|
||||
PickedQuestion(question: Option(#(String, String)))
|
||||
GiveAnswer(question: #(String, String), answer: Option(String))
|
||||
}
|
||||
|
||||
fn init(
|
||||
start_args: #(List(#(String, String)), message.ClientsServer),
|
||||
) -> #(Model, Effect(Msg)) {
|
||||
|
|
@ -63,17 +74,6 @@ fn init(
|
|||
)
|
||||
}
|
||||
|
||||
pub opaque type Msg {
|
||||
Initial
|
||||
PickedPlayer(player: Option(#(String, String)))
|
||||
SharedMessage(message: NotifyClient)
|
||||
ReceiveName(name: Option(String))
|
||||
AcceptPlayer(accept: Option(#(String, String)))
|
||||
PickQuestion
|
||||
PickedQuestion(question: Option(#(String, String)))
|
||||
GiveAnswer(question: #(String, String), answer: Option(String))
|
||||
}
|
||||
|
||||
fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) {
|
||||
case msg {
|
||||
Initial -> #(Model(..model, state: msg), effect.none())
|
||||
|
|
@ -168,7 +168,14 @@ fn view(model: Model) -> Element(Msg) {
|
|||
Initial ->
|
||||
case model.players {
|
||||
[] -> shared.input_new_player(ReceiveName)
|
||||
_ -> shared.view_players(model.players, PickedPlayer)
|
||||
_ ->
|
||||
shared.view_players(
|
||||
list.map(model.players, fn(player) {
|
||||
let #(id, #(name, _)) = player
|
||||
#(id, name)
|
||||
}),
|
||||
PickedPlayer,
|
||||
)
|
||||
}
|
||||
PickQuestion -> view_questions(model.answers)
|
||||
ReceiveName(_) -> shared.input_new_player(ReceiveName)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ type State {
|
|||
pub opaque type Model {
|
||||
Model(
|
||||
state: State,
|
||||
players: List(#(String, String)),
|
||||
players: List(#(String, #(String, List(#(String, String))))),
|
||||
lobby: #(String, List(User)),
|
||||
registry: GroupRegistry(NotifyClient),
|
||||
handler: Started(Subject(NotifyServer)),
|
||||
|
|
@ -137,7 +137,14 @@ fn view(model: Model) -> Element(Msg) {
|
|||
AskName ->
|
||||
case model.players {
|
||||
[] -> input_new_player(ReceiveName)
|
||||
_ -> view_players(model.players, AcceptName)
|
||||
_ ->
|
||||
view_players(
|
||||
list.map(model.players, fn(player) {
|
||||
let #(id, #(name, _)) = player
|
||||
#(id, name)
|
||||
}),
|
||||
AcceptName,
|
||||
)
|
||||
}
|
||||
NameOk(name) -> {
|
||||
shared.confirm_cells(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue