chipjacks / emoji-data / EmojiData.Fetch

task : Task Http.Error (List EmojiData)

Make two CDN requests to load emoji data JSON. This is an alternative to using EmojiData.List.emojis that reduces bundle size by about 300KB.

type alias Model =
    { emojis : List EmojiData
    }

init : () -> ( Model, Cmd Msg )
init _ =
    ( Model [], Task.attempt FetchedEmojiData EmojiData.Fetch.task )

type Msg
    = FetchedEmojiData (Result Http.Error (List EmojiData))

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        FetchedEmojiData result ->
            case result of
                Ok emojis ->
                    ( { model | emojis = emojis }, Cmd.none )

                Err err ->
                    ( model
                    , Task.attempt FetchedEmojiData
                        (Process.sleep 1000
                            |> Task.andThen (\_ -> EmojiData.Fetch.task)
                        )
                    )