blob: cc144e27103daa09a881c81db6af51fa0d271bd0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
module Client exposing (main)
import Browser
import Html exposing (Html)
import Url exposing (Url)
type Message
= Ignore
type Model
= Error String
| JoinRoom
{ id : String
}
parseRoomId : Url -> Result String String
parseRoomId url = case String.split "/" url.path of
_ :: "rooms" :: roomId :: _ -> Ok roomId
_ -> Err <| "Invalid path: " ++ url.path
view : Model -> List (Html Message)
view model = case model of
Error str ->
[ Html.h1 [] [Html.text "Error"]
, Html.p [] [Html.text str]
]
JoinRoom room ->
[ Html.h1 [] [Html.text <| "Room " ++ room.id]
]
main : Program () Model Message
main = Browser.application
{ init = \() url key -> case parseRoomId url of
Err str -> (Error <| "Could not parse room ID: " ++ str, Cmd.none)
Ok roomId -> (JoinRoom {id = roomId}, Cmd.none)
, update = \_ model -> (model, Cmd.none)
, subscriptions = \_ -> Sub.none
, view = \model -> {title = "Client", body = view model}
, onUrlChange = \url -> Ignore
, onUrlRequest = \urlRequest -> Ignore
}
|