module Fedi.UserDetails ( module Fedi.UserDetails, module Export, ) where import Data.Aeson qualified as A import Data.List as Export (find) import Data.Maybe as Export (fromMaybe, listToMaybe, maybeToList) import Data.String as Export (fromString) import Data.Text as Export (Text) import Data.Text qualified as T import Data.Time as Export (UTCTime) import GHC.Generics as Export (Generic) type Url = String type Domain = String type Username = String newtype Pem = Pem T.Text deriving (Show) deriving (A.FromJSON) via T.Text instance A.ToJSON Pem where toJSON (Pem pem) = A.String pem data UserDetails = UserDetails { domain :: Domain , username :: String , name :: String , summary :: String , icon :: Url , image :: Url , publicPem :: Pem , privatePem :: FilePath } deriving (Show, Generic, A.FromJSON) actorUrl :: UserDetails -> Url actorUrl details = "https://" <> details.domain <> "/" <> details.username fullmention :: UserDetails -> String fullmention details = "@" <> details.username <> "@" <> details.domain