|
|
|
|
@ -1,10 +1,11 @@
@@ -1,10 +1,11 @@
|
|
|
|
|
{-# OPTIONS_HADDOCK hide #-} |
|
|
|
|
|
|
|
|
|
module Network.XMPP.Presence where |
|
|
|
|
|
|
|
|
|
import Data.Text(Text) |
|
|
|
|
import Network.XMPP.Types |
|
|
|
|
|
|
|
|
|
-- | The empty presence. |
|
|
|
|
-- | An empty presence. |
|
|
|
|
presence :: Presence |
|
|
|
|
presence = Presence { presenceID = Nothing |
|
|
|
|
, presenceFrom = Nothing |
|
|
|
|
@ -14,41 +15,42 @@ presence = Presence { presenceID = Nothing
@@ -14,41 +15,42 @@ presence = Presence { presenceID = Nothing
|
|
|
|
|
, presencePayload = [] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
-- | Request subscription with an entity |
|
|
|
|
-- | Request subscription with an entity. |
|
|
|
|
presenceSubscribe :: JID -> Presence |
|
|
|
|
presenceSubscribe to = presence { presenceTo = Just to |
|
|
|
|
, presenceType = Just Subscribe |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
-- | Is presence a subscription request |
|
|
|
|
-- | Is presence a subscription request? |
|
|
|
|
isPresenceSubscribe :: Presence -> Bool |
|
|
|
|
isPresenceSubscribe pres = presenceType pres == (Just Subscribe) |
|
|
|
|
|
|
|
|
|
-- | Approve a subscripton of an entity |
|
|
|
|
-- | Approve a subscripton of an entity. |
|
|
|
|
presenceSubscribed :: JID -> Presence |
|
|
|
|
presenceSubscribed to = presence { presenceTo = Just to |
|
|
|
|
, presenceType = Just Subscribed |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
-- | Is presence a subscription approval |
|
|
|
|
-- | Is presence a subscription approval? |
|
|
|
|
isPresenceSubscribed :: Presence -> Bool |
|
|
|
|
isPresenceSubscribed pres = presenceType pres == (Just Subscribed) |
|
|
|
|
|
|
|
|
|
-- | End a subscription with an entity |
|
|
|
|
-- | End a subscription with an entity. |
|
|
|
|
presenceUnsubscribe :: JID -> Presence |
|
|
|
|
presenceUnsubscribe to = presence { presenceTo = Just to |
|
|
|
|
, presenceType = Just Unsubscribed |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
-- | Is presence an unsubscription request |
|
|
|
|
-- | 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 |
|
|
|
|
-- | 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. |
|
|
|
|
-- | Signal to the server that the client is no longer available for |
|
|
|
|
-- communication. |
|
|
|
|
presenceOffline :: Presence |
|
|
|
|
presenceOffline = presence {presenceType = Just Unavailable} |
|
|
|
|
|
|
|
|
|
@ -63,16 +65,16 @@ presenceOffline = presence {presenceType = Just Unavailable}
@@ -63,16 +65,16 @@ presenceOffline = presence {presenceType = Just Unavailable}
|
|
|
|
|
-- , presenceStatus = txt |
|
|
|
|
-- } |
|
|
|
|
|
|
|
|
|
-- | Set the current availability status. This implicitly sets the clients |
|
|
|
|
-- status online |
|
|
|
|
-- | 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 clients |
|
|
|
|
-- status online |
|
|
|
|
-- | Set the current status message. This implicitly sets the client's status |
|
|
|
|
-- online. |
|
|
|
|
--presenceMessage :: Text -> Presence |
|
|
|
|
--presenceMessage txt = status (Just txt) Nothing Nothing |
|
|
|
|
|
|
|
|
|
-- | Add a recipient to a presence notification |
|
|
|
|
-- | Add a recipient to a presence notification. |
|
|
|
|
presTo :: Presence -> JID -> Presence |
|
|
|
|
presTo pres to = pres{presenceTo = Just to} |