module Network.Xmpp.IM.Presence where import Data.Text(Text) import Network.Xmpp.Types -- | An empty presence. presence :: Presence presence = Presence { presenceID = Nothing , presenceFrom = Nothing , presenceTo = Nothing , presenceLangTag = Nothing , presenceType = Nothing , presencePayload = [] } -- | Request subscription with an entity. presenceSubscribe :: Jid -> Presence presenceSubscribe to = presence { presenceTo = Just to , presenceType = Just Subscribe } -- | Is presence a subscription request? isPresenceSubscribe :: Presence -> Bool isPresenceSubscribe pres = presenceType pres == (Just Subscribe) -- | Approve a subscripton of an entity. presenceSubscribed :: Jid -> Presence presenceSubscribed to = presence { presenceTo = Just to , presenceType = Just Subscribed } -- | Is presence a subscription approval? isPresenceSubscribed :: Presence -> Bool isPresenceSubscribed pres = presenceType pres == (Just Subscribed) -- | End a subscription with an entity. presenceUnsubscribe :: Jid -> Presence presenceUnsubscribe to = presence { presenceTo = Just to , presenceType = Just Unsubscribed } -- | Is presence an unsubscription request? isPresenceUnsubscribe :: Presence -> Bool isPresenceUnsubscribe pres = presenceType pres == (Just Unsubscribe) -- | Signal to the server that the client is available for communication. presenceOnline :: Presence presenceOnline = presence -- | Signal to the server that the client is no longer available for -- communication. presenceOffline :: Presence presenceOffline = presence {presenceType = Just Unavailable} ---- Change your status --status -- :: Maybe Text -- ^ Status message -- -> Maybe ShowType -- ^ Status Type -- -> Maybe Int -- ^ Priority -- -> Presence --status txt showType prio = presence { presenceShowType = showType -- , presencePriority = prio -- , presenceStatus = txt -- } -- | Set the current availability status. This implicitly sets the client's -- status online. --presenceAvail :: ShowType -> Presence --presenceAvail showType = status Nothing (Just showType) Nothing -- | Set the current status message. This implicitly sets the client's status -- online. --presenceMessage :: Text -> Presence --presenceMessage txt = status (Just txt) Nothing Nothing