Skip to content

Commit

Permalink
Merge pull request #131 from levelhq/digest-settings
Browse files Browse the repository at this point in the history
Enable/disable digest
  • Loading branch information
derrickreimer committed Nov 16, 2018
2 parents b18c850 + bc7e57e commit 910133e
Show file tree
Hide file tree
Showing 28 changed files with 695 additions and 113 deletions.
8 changes: 8 additions & 0 deletions assets/css/app.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 54 additions & 0 deletions assets/elm/src/DigestSettings.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module DigestSettings exposing (DigestSettings, decoder, fragment, isEnabled, toggle)

import GraphQL exposing (Fragment)
import Json.Decode as Decode exposing (Decoder)


type DigestSettings
= DigestSettings Data


type alias Data =
{ isEnabled : Bool
}



-- PROPERTIES


isEnabled : DigestSettings -> Bool
isEnabled (DigestSettings data) =
data.isEnabled


toggle : DigestSettings -> DigestSettings
toggle (DigestSettings data) =
DigestSettings { data | isEnabled = not data.isEnabled }



-- GRAPHQL


fragment : Fragment
fragment =
let
queryBody =
"""
fragment DigestSettingsFields on DigestSettings {
isEnabled
}
"""
in
GraphQL.toFragment queryBody []



-- DECODERS


decoder : Decoder DigestSettings
decoder =
Decode.map DigestSettings <|
Decode.map Data (Decode.field "isEnabled" Decode.bool)
85 changes: 85 additions & 0 deletions assets/elm/src/Mutation/UpdateDigestSettings.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
module Mutation.UpdateDigestSettings exposing (Response(..), request, variables)

import DigestSettings exposing (DigestSettings)
import GraphQL exposing (Document)
import Id exposing (Id)
import Json.Decode as Decode exposing (Decoder)
import Json.Encode as Encode
import Session exposing (Session)
import Task exposing (Task)
import User exposing (User)
import ValidationError exposing (ValidationError)
import ValidationFields


type Response
= Success DigestSettings
| Invalid (List ValidationError)


document : Document
document =
GraphQL.toDocument
"""
mutation UpdateDigestSettings(
$spaceId: ID!,
$isEnabled: Boolean
) {
updateDigestSettings(
spaceId: $spaceId,
isEnabled: $isEnabled
) {
...ValidationFields
digestSettings {
...DigestSettingsFields
}
}
}
"""
[ User.fragment
, DigestSettings.fragment
, ValidationFields.fragment
]


variables : Id -> Bool -> Maybe Encode.Value
variables spaceId isEnabled =
Just <|
Encode.object
[ ( "spaceId", Id.encoder spaceId )
, ( "isEnabled", Encode.bool isEnabled )
]


successDecoder : Decoder Response
successDecoder =
Decode.map Success <|
Decode.at [ "data", "updateDigestSettings", "digestSettings" ] DigestSettings.decoder


failureDecoder : Decoder Response
failureDecoder =
Decode.map Invalid <|
Decode.at [ "data", "updateDigestSettings", "errors" ] (Decode.list ValidationError.decoder)


decoder : Decoder Response
decoder =
let
conditionalDecoder : Bool -> Decoder Response
conditionalDecoder success =
case success of
True ->
successDecoder

False ->
failureDecoder
in
Decode.at [ "data", "updateDigestSettings", "success" ] Decode.bool
|> Decode.andThen conditionalDecoder


request : Id -> Bool -> Session -> Task Session.Error ( Session, Response )
request spaceId isEnabled session =
Session.request session <|
GraphQL.request document (variables spaceId isEnabled) decoder
2 changes: 1 addition & 1 deletion assets/elm/src/Page/Inbox.elm
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ resolvedView repo maybeCurrentRoute pushStatus spaceUsers model data =
maybeCurrentRoute
[ div [ class "mx-auto max-w-90 leading-normal" ]
[ div [ class "sticky pin-t mb-3 pt-4 bg-white z-50" ]
[ div [ class "border-b" ]
[ div [ class "trans-border-b-grey" ]
[ div [ class "flex items-center" ]
[ h2 [ class "flex-no-shrink font-extrabold text-2xl" ] [ text "Inbox" ]
, controlsView model data
Expand Down
2 changes: 1 addition & 1 deletion assets/elm/src/Page/Posts.elm
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ resolvedView repo maybeCurrentRoute spaceUsers model data =
data.bookmarks
maybeCurrentRoute
[ div [ class "mx-auto max-w-90 leading-normal" ]
[ div [ class "sticky pin-t border-b mb-3 pt-4 bg-white z-50" ]
[ div [ class "sticky pin-t trans-border-b-grey mb-3 pt-4 bg-white z-50" ]
[ div [ class "flex items-center" ]
[ h2 [ class "flex-no-shrink font-extrabold text-2xl" ] [ text "Activity" ]
, controlsView model
Expand Down
Loading

0 comments on commit 910133e

Please sign in to comment.