port module MoreRandomWithMemory exposing (main) import RandomNumbersUI import Random main : Program Flags Model Msg main = RandomNumbersUI.makeElement (always (initModel, requestNumbers ())) update (MouseClick, Reset, Noop) [ receiveNumbers LoadNumbers ] type alias Flags = () type Msg = Noop | Reset | MouseClick | RandomNumber Int | LoadNumbers (List Int) type alias Model = { randomNumbers: List Int } initModel = { randomNumbers = [] } update : Msg -> Model -> (Model, Cmd Msg) update msg model = case msg of Noop -> (model, Cmd.none) Reset -> (initModel, clearNumbers ()) LoadNumbers nums -> ({ randomNumbers = nums }, Cmd.none) MouseClick -> (model, Random.generate RandomNumber (Random.int 1 10)) RandomNumber n -> let nums = n :: model.randomNumbers in ({ randomNumbers = nums }, saveNumbers nums) -- Ports for loading/clearing/saving numbers in local storage -------- port requestNumbers : () -> Cmd msg port receiveNumbers : (List Int -> msg) -> Sub msg port clearNumbers : () -> Cmd msg port saveNumbers : List Int -> Cmd msg