Skip to content

Commit

Permalink
Fixes support for packages with multiple homepage entries.
Browse files Browse the repository at this point in the history
Closes #238
  • Loading branch information
turboMaCk committed Dec 27, 2020
1 parent 153674a commit d1433ae
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions src/Page/Packages.elm
Expand Up @@ -66,7 +66,7 @@ type alias ResultItemSource =
, maintainers : List ResultPackageMaintainer
, platforms : List String
, position : Maybe String
, homepage : Maybe String
, homepage : List String
, system : String
, hydra : Maybe (List ResultPackageHydra)
}
Expand Down Expand Up @@ -374,7 +374,7 @@ viewResultItemDetails channel item =
, dt [] [ text "Platforms" ]
, dd [] [ asList (showPlatforms item.source.hydra item.source.platforms) ]
, dt [] [ text "Homepage" ]
, dd [] [ withEmpty asLink item.source.homepage ]
, dd [] <| List.intersperse (Html.text ", ") <| List.map asLink item.source.homepage
, dt [] [ text "Licenses" ]
, dd [] [ asList (List.map showLicence item.source.licenses) ]
, dt [] [ text "Maintainers" ]
Expand Down Expand Up @@ -426,6 +426,18 @@ makeRequest options channel query from size sort =
-- JSON


homepageDecoder : Json.Decode.Decoder (List String)
homepageDecoder =
Json.Decode.oneOf
-- null becomes [] (empty list)
-- "foo" becomes ["foo"]
-- arrays are decoded to list as expected
[ Json.Decode.map List.singleton Json.Decode.string
, Json.Decode.list Json.Decode.string
, Json.Decode.null []
]


decodeResultItemSource : Json.Decode.Decoder ResultItemSource
decodeResultItemSource =
Json.Decode.succeed ResultItemSource
Expand All @@ -438,7 +450,7 @@ decodeResultItemSource =
|> Json.Decode.Pipeline.required "package_maintainers" (Json.Decode.list decodeResultPackageMaintainer)
|> Json.Decode.Pipeline.required "package_platforms" (Json.Decode.list Json.Decode.string)
|> Json.Decode.Pipeline.required "package_position" (Json.Decode.nullable Json.Decode.string)
|> Json.Decode.Pipeline.required "package_homepage" (Json.Decode.nullable Json.Decode.string)
|> Json.Decode.Pipeline.required "package_homepage" homepageDecoder
|> Json.Decode.Pipeline.required "package_system" Json.Decode.string
|> Json.Decode.Pipeline.required "package_hydra" (Json.Decode.nullable (Json.Decode.list decodeResultPackageHydra))

Expand Down

0 comments on commit d1433ae

Please sign in to comment.