2017-10-02 09:52:14 -04:00
|
|
|
{-# LANGUAGE NoImplicitPrelude #-}
|
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Widget.Hcard (hcard) where
|
|
|
|
|
|
|
|
import Import
|
2017-10-02 20:48:44 -04:00
|
|
|
import qualified Network.Libravatar as L
|
2017-10-02 09:52:14 -04:00
|
|
|
|
2017-10-02 21:53:13 -04:00
|
|
|
hcard :: Entity User -> Widget
|
|
|
|
hcard (Entity userId user) = do
|
2017-10-02 20:48:44 -04:00
|
|
|
maybeAvatar <- liftIO $ L.avatarUrl (L.Email $ userEmail user) def { L.optSecure = True, L.optSize = L.Size 512 }
|
2017-10-02 21:53:13 -04:00
|
|
|
userProfiles <- handlerToWidget . runDB $ do
|
|
|
|
profiles <- map entityVal <$> selectList [ProfileUserId ==. userId] []
|
|
|
|
sites <- belongsToJust profileSiteId `mapM` profiles
|
|
|
|
return . sortBy (comparing $ siteIcon . fst) $ zip sites profiles
|
2017-10-02 20:48:44 -04:00
|
|
|
$(widgetFile "hcard")
|