-
-
Save ni-ko-o-kin/3c3bd1cccff863c78caa645e24e7970a to your computer and use it in GitHub Desktop.
[bug] elm-concurrent-task: debug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
port module Main exposing (main) | |
import ConcurrentTask exposing (ConcurrentTask) | |
import ConcurrentTask.Http as Http | |
import Json.Decode as Decode | |
type alias Model = | |
{ tasks : ConcurrentTask.Pool Msg Error Titles | |
} | |
type Msg | |
= OnProgress ( ConcurrentTask.Pool Msg Error Titles, Cmd Msg ) | |
| OnComplete (ConcurrentTask.Response Error Titles) | |
type alias Error = | |
Http.Error | |
-- Get All Titles Task | |
type alias Titles = | |
{ todo : String | |
, post : String | |
, album : String | |
} | |
getAllTitles : ConcurrentTask Error Titles | |
getAllTitles = | |
ConcurrentTask.succeed Titles | |
|> ConcurrentTask.andMap (getTitle "/todos/1") | |
|> ConcurrentTask.andMap (getTitle "/posts/1") | |
|> ConcurrentTask.andMap (getTitle "/albums/1") | |
-- does not work | |
|> ConcurrentTask.debug Debug.toString Debug.toString | |
-- does work | |
|> ConcurrentTask.andThen | |
(\x -> | |
let | |
_ = | |
Debug.log "" x | |
in | |
ConcurrentTask.succeed x | |
) | |
getTitle : String -> ConcurrentTask Error String | |
getTitle path = | |
Http.get | |
{ url = "https://jsonplaceholder.typicode.com" ++ path | |
, headers = [] | |
, expect = Http.expectJson (Decode.field "title" Decode.string) | |
, timeout = Nothing | |
} | |
-- Program | |
init : ( Model, Cmd Msg ) | |
init = | |
let | |
( tasks, cmd ) = | |
ConcurrentTask.attempt | |
{ send = send | |
, pool = ConcurrentTask.pool | |
, onComplete = OnComplete | |
} | |
getAllTitles | |
in | |
( { tasks = tasks }, cmd ) | |
update : Msg -> Model -> ( Model, Cmd Msg ) | |
update msg model = | |
case msg of | |
OnComplete _ -> | |
( model, Cmd.none ) | |
OnProgress ( tasks, cmd ) -> | |
( { model | tasks = tasks }, cmd ) | |
subscriptions : Model -> Sub Msg | |
subscriptions model = | |
ConcurrentTask.onProgress | |
{ send = send | |
, receive = receive | |
, onProgress = OnProgress | |
} | |
model.tasks | |
port send : Decode.Value -> Cmd msg | |
port receive : (Decode.Value -> msg) -> Sub msg | |
main : Program {} Model Msg | |
main = | |
Platform.worker | |
{ init = always init | |
, update = update | |
, subscriptions = subscriptions | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ConcurrentTask = require("@andrewmacmurray/elm-concurrent-task"); | |
const { Elm } = require("./elm.js"); | |
const app = Elm.Main.init({}); | |
ConcurrentTask.register({ | |
tasks: {}, | |
ports: { | |
send: app.ports.send, | |
receive: app.ports.receive, | |
}, | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment