skype4hs-0.0.0.0: src/Network/Skype/Protocol/Chat.hs
module Network.Skype.Protocol.Chat where
import Data.Bits (Bits)
import Data.Typeable (Typeable)
import Network.Skype.Protocol.Types
data AlterChatProperty = AlterChatAcceptAdd
| AlterChatAddMembers
| AlterChatBookmarked Bool
| AlterChatClearRecentMessages
| AlterChatDisband
| AlterChatEnterPassword
| AlterChatJoin
| AlterChatLeave
| AlterChatSetAlertString
| AlterChatSetOptions
| AlterChatSetPassword
| AlterChatSetTopic
deriving (Eq, Show, Typeable)
data ChatProperty
-- | Chat ID
= ChatName ChatID
-- | Time when chat was created.
| ChatTimestamp Timestamp
-- | User who added the current user to chat.
| ChatAdder (Maybe UserID)
-- | Chat status
| ChatStatus ChatStatus
-- | Members who have posted messages.
| ChatPosters [UserID]
-- | All users who have been there.
| ChatMembers [UserID]
-- | Chat topic
| ChatTopic ChatTopic
-- | set when a chat topic contains XML formatting elements (topic was changed
-- with ALTER CHATSETTOPICXML command) This property works in parallel with
-- TOPIC property - when TOPICXML is set, the value is stripped of XML tags
-- and updated in TOPIC.
| ChatTopicXml ChatTopic
-- | Members who have stayed in chat.
| ChatActiveMembers [UserID]
-- | Name shown in chat window title.
| ChatFriendyName ChatWindowTitle
-- | All messages IDs in this chat.
| ChatMessages [ChatMessageID]
-- | List of missed/recent chatmessage identifiers
| ChatRecentMessages [ChatMessageID]
-- | TRUE|FALSE
| ChatBookmarked Bool
-- | Contains the list of CHATMEMBER object IDs.
| ChatMemberObjects [ChatMemberID]
-- | Contains password hint text for the chat object.
| ChatPasswordHint ChatPasswordHint
-- | Contains chat guidelines text.
| ChatGuidelines ChatGuidelines
-- | Bitmap of chat options.
| ChatOptions ChatOption
-- | Currently used only for hidden synchronization channels for managing
-- shared groups.
| ChatDescription ChatDescription
-- | The handle of the dialog partner for dialog type chats
-- (chats with two participants).
| ChatDialogPartner UserID
-- | The UNIX timestamp of last activity.
| ChatActivityTimestamp Timestamp
-- | Chat type
| ChatType ChatType
-- | For public chats, this property contains encoded list of chat
-- join-points. Contents of this field is used in public chat URLs.
| ChatBlob ChatBlob
-- | User's current status in chat.
| ChatMyStatus ChatMyStatus
-- | User's privilege level in chat.
| ChatMyRole ChatRole
-- | This property contains list of skypenames of people who have applied to
-- join the chat but have not yet been accepted by a public chat
-- administrator. Users only become applicants when the chat has
-- JOINERS_BECOME_APPLICANTS option.
| ChatApplicants [UserID]
-- | Chat was opened.
| ChatOpened
-- | Chat was closed.
| ChatClosed
deriving (Eq, Show, Typeable)
data ChatStatus
-- | Old style IM
= ChatStatusLegacyDialog
-- | 1:1 chat
| ChatStatusDialog
-- | Participant in chat
| ChatStatusMultiSubscribed
-- | Left chat
| ChatStatusUnsubscribed
deriving (Eq, Show, Typeable)
newtype ChatOption = ChatOption Int
deriving (Bits, Eq, Show, Typeable)
-- | When this bit is off, new users cannot join the chat.
chatOptionJoiningEnabled :: ChatOption
chatOptionJoiningEnabled = ChatOption 1
-- | When this bit is on, new users will be able to join the chat but they
-- will be unable to post or receive messages until authorized by one of the
-- chat administrators (CREATOR or MASTER).
chatOptionJoinersBecomeApplicants :: ChatOption
chatOptionJoinersBecomeApplicants = ChatOption 2
-- | When this bit is on, new users will be able to receive message in chat
-- but unable to post until promoted to USER role. Basically a read-only flag
-- for new users.
chatOptionJoinersBecomeListeners :: ChatOption
chatOptionJoinersBecomeListeners = ChatOption 4
-- | When this bit is off, newly joined members can see chat history prior to
-- their joining. Maximum amount of history backlog available is either 400
-- messages or 2 weeks of time, depending on which limit is reached first.
chatOptionHistoryDisclosed :: ChatOption
chatOptionHistoryDisclosed = ChatOption 8
-- | Read-only flag for chat members with USER role.
chatOptionUsersAreListeners :: ChatOption
chatOptionUsersAreListeners = ChatOption 16
-- | when this bit of options is off, USER level chat members can change chat
-- topic and the topic picture.
chatOptionTopicAndPicLockedForUsers :: ChatOption
chatOptionTopicAndPicLockedForUsers = ChatOption 32
data ChatType
-- | No longer supported.
= ChatTypeLegacyDialog
-- | A chat with only two participants.
| ChatTypeDialog
-- | A chat with more than two participants.
| ChatTypeMultiChat
-- | A chat used for synchronization of shared contact groups.
| ChatTypeSharedGroup
-- | No longer supported.
| ChatTypeLegacyUnsubscribed
deriving (Eq, Show, Typeable)
data ChatMyStatus
-- | Status set when the system is trying to connect to the chat.
= ChatMyStatusConnecting
-- | Set when a new user joins a public chat. When the chat has
-- "participants need authorization to read messages" option, the MYSTATUS
-- property of a new applicant will remain in this status until he gets
-- accepted or rejected by a chat administrator. Otherwise user's MYSTATUS
-- will automatically change to either LISTENER or USER, depending on public
-- chat options.
| ChatMyStatusWaitingRemoteAccept
-- | This status is used for shared contact groups functionality.
| ChatMyStatusAcceptRequired
-- | Status set when the system is waiting for user to supply the chat
-- password.
| ChatMyStatusPasswordRequired
-- | Set when user joins the chat.
| ChatMyStatusSubscribed
-- | Set when user leaves the chat or chat ends.
| ChatMyStatusUnsubscribed
-- | Status set when the chat is disbanded.
| ChatMyStatusDisbanded
-- | Currently the maximum number of people in the same chat is 100.
| ChatMyStatusQueuedBecauseChatIsFull
-- | Set when public chat administrator has rejected user from joining.
| ChatMyStatusApplicationDenied
-- | Status set when the user has been kicked from the chat. Note that it is
-- possible for the user to re-join the chat after being kicked.
| ChatMyStatusKicked
-- | Status set when the user has been banned from the chat.
| ChatMyStatusBanned
-- | Status set when connect to chat failed and system retries to establish
-- connection.
| ChatMyStatusRetryConnecting
deriving (Eq, Show, Typeable)
data ChatRole
-- | Member who created the chat. There can be only one creator per chat. Only
-- creator can promote other members to masters.
= ChatRoleCreator
-- | Also known as chat hosts. Masters cannot promote other people to masters.
| ChatRoleMaster
-- | A semi-privileged member. Helpers will not be affected by the
-- USERS_ARE_LISTENERS option. Helpers cannot promote or demote other members.
| ChatRoleHelper
-- | Regular members who can post messages into the chat.
| ChatRoleUser
-- | A demoted member who can only receive messages but not post anything into
-- the chat.
| ChatRoleListener
-- | A member waiting for acceptance into the chat. Member cannot be demoted
-- to applicants once they have been accepted.
| ChatRoleApplicant
deriving (Eq, Show, Typeable)