I noticed that Elm/Random has no way to generate a random value as a Task. I’m not sure if this is intended.
Currently, I am trying to build a chat with Jsonstore at the backend.
If I now want to create a new chatroom, I need to first generate a number and then create the room.
Instead, I need to split it up into two messages: one for the Random value and one for everything else.
update : Msg -> Model -> (Model,Cmd Msg)
update msg model =
case msg of
PressedNewRoomButton ->
( model
, Random.generate Random.int 0 Random.maxInt
)
GeneratedRoomId int ->
( model
, insertNewRoom int
|> Task.attempt Sync
)
Alternatively I could store a seed in the model, but as this is the only time I use a Random value, I would like to avoid it.
I like this approach but I feel like its more of a workaround then a real solution. So i’ve created a new issue over at elm/random, let’s see if gets added.
Alternatively, as @MartinS said, I might switch to another RNG package like mgold/elm-random-pcg. As it uses Time.now for generating numbers.
Edit: Just noticed that @mgold’s package is outdated. If mgold doesn’t mind, I might start my own fork and update it to 0.19