Created
July 18, 2018 06:46
-
-
Save Agnishom/d7e8ad081139fd4fe892fb35c7c52db5 to your computer and use it in GitHub Desktop.
Elm Arch
This file contains hidden or 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
| update : Msg -> Model -> (Model, Cmd Msg, Maybe LoadingCounter) | |
| update = | |
| case msg of | |
| Produce cmd -> (model, cmd, Just Increment) | |
| Consume -> (model, Cmd.none, Just Decrement) | |
| msg -> | |
| let | |
| (newModel, newCmd) = realUpdate msg model | |
| in | |
| (newModel, newCmd, Nothing) | |
| realUpdate : Msg -> Model -> (Model, Cmd Msg) | |
| realUpdate msg model = | |
| let | |
| computeProgress data = | |
| (*) 100 | |
| <| toFloat data.bytes / toFloat data.bytesExpected | |
| in | |
| case msg of | |
| Reload url (Ok _) -> (model, [Navigation.load url], Nothing) | |
| Reload url (Err err) -> ({ model | error = Error (toString err) }, Cmd.none) | |
| UpdatePageState (Ok pageState) -> | |
| let | |
| newSnippets = populateSnippets pageState | |
| in | |
| ({model | |
| | pageState = Just pageState | |
| , snippets = if List.isEmpty newSnippets then List.singleton emptyConvenientSnippet else newSnippets | |
| , propro = if List.isEmpty newSnippets then False else True | |
| , loading = Decrement | |
| }, Cmd.none, Nothing) | |
| UpdatePageState (Err err) -> ({ model | error = Error (toString err) }, Consume) | |
| AddSnippet -> ({ model | snippets = model.snippets ++ [defaultSnippet] }, Cmd.none) | |
| RemoveSnippet j -> ((removeSnippet j model), Cmd.none) | |
| ChangeHF j hf -> ((changeHF j hf model), Cmd.none) | |
| ChangeSnippet j s -> ((changeSnippet j s model), Cmd.none, Nothing) | |
| ChangeConditionString j s -> ((changeConditionString j s model), Cmd.none) | |
| ChangeConditionKind j s -> ((changeConditionKind j s model), Cmd.none) | |
| ChangeGlobalHeader s -> ((changeGlobalHeader s model), Cmd.none) | |
| ChangeGlobalFooter s -> ((changeGlobalFooter s model), Cmd.none) | |
| AddFiles files -> ((addFiles files model), Cmd.none) | |
| RemoveFile j -> ((removeFile j model), Cmd.none) | |
| ToggleProNess -> ({ model | propro = not model.propro }, Cmd.none) | |
| Save -> (model, [save model]) | |
| UpdateList filename -> (updateList filename model, deleteFile filename) | |
| DeleteFile (Ok _) -> (model, Cmd.none) | |
| _ -> (model, Cmd.none) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment