{-# LANGUAGE OverloadedStrings #-}
module SignalDBus (
SignalDBus.Interface.withConn,
SignalDBus.Interface.withConnNum,
SignalDBus.Interface.withReceiveMessages,
link,
listAccounts,
register,
registerWithCaptcha,
verify,
verifyWithPin,
getContactName,
getContactNumber,
getSelfNumber,
isContactBlocked,
isRegistered,
listNumbers,
removePin,
sendEndSessionMessage,
sendMessage,
sendMessageReaction,
sendNoteToSelfMessage,
sendReadReceipt,
sendViewedReceipt,
sendRemoteDeleteMessage,
sendTyping,
setContactBlocked,
setContactName,
deleteContact,
deleteRecipient,
setExpirationTimer,
setPin,
submitRateLimitChallenge,
updateProfile,
uploadStickerPack,
version,
createGroup,
getGroup,
joinGroup,
listGroups,
sendGroupMessage,
sendGroupTyping,
sendGroupMessageReaction,
sendGroupRemoteDeleteMessage,
addDevice,
getDevice,
listDevices,
getGroupId,
getGroupName,
getGroupDescription,
getGroupIsBlocked,
getGroupIsAdmin,
getGroupMessageExpirationTimer,
getGroupMembers,
getGroupPendingMembers,
getGroupRequestingMembers,
getGroupAdmins,
getGroupPermissionAddMember,
getGroupPermissionEditDetails,
getGroupPermissionSendMessage,
getGroupInviteLink,
setGroupName,
setGroupDescription,
setGroupAvatar,
setGroupIsBlocked,
setGroupMessageExpirationTimer,
setGroupPermissionAddMember,
setGroupPermissionEditDetails,
setGroupPermissionSendMessage,
groupAddAdmins,
groupAddMembers,
groupDisableLink,
groupEnableLink,
groupQuit,
groupRemoveAdmins,
groupRemoveMembers,
groupResetLink,
SignalDBus.Types.SignalConn,
SignalDBus.Types.Timestamp,
SignalDBus.Types.Device,
SignalDBus.Types.Group,
SignalDBus.Types.ReceivedMessage(..),
) where
import Data.ByteString (ByteString)
import Data.Int (Int32, Int64)
import DBus.Internal.Types (toVariant, ObjectPath(..))
import SignalDBus.Interface
import SignalDBus.Types
import UnliftIO (MonadIO)
link :: MonadIO m => String -> SignalConn -> m String
link :: String -> SignalConn -> m String
link String
name = MemberName -> [Variant] -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callControl MemberName
"link" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
name]
listAccounts :: MonadIO m => SignalConn -> m [String]
listAccounts :: SignalConn -> m [String]
listAccounts SignalConn
sc = do
[ObjectPath]
obs <- MemberName -> [Variant] -> SignalConn -> m [ObjectPath]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callControl MemberName
"listAccounts" [] SignalConn
sc
[String] -> m [String]
forall (m :: * -> *) a. Monad m => a -> m a
return ([String] -> m [String]) -> [String] -> m [String]
forall a b. (a -> b) -> a -> b
$! ((ObjectPath -> String) -> [ObjectPath] -> [String])
-> [ObjectPath] -> (ObjectPath -> String) -> [String]
forall a b c. (a -> b -> c) -> b -> a -> c
flip (ObjectPath -> String) -> [ObjectPath] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map [ObjectPath]
obs ((ObjectPath -> String) -> [String])
-> (ObjectPath -> String) -> [String]
forall a b. (a -> b) -> a -> b
$ \(ObjectPath String
s)
-> Char
'+' Char -> String -> String
forall a. a -> [a] -> [a]
: Int -> String -> String
forall a. Int -> [a] -> [a]
drop (String -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length (String
"/org/asamk/Signal/_" :: String)) String
s
register :: MonadIO m => String -> Bool -> SignalConn -> m ()
register :: String -> Bool -> SignalConn -> m ()
register String
name Bool
b = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callControl_ MemberName
"register" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
name, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b]
registerWithCaptcha :: MonadIO m => String -> Bool -> String -> SignalConn -> m ()
registerWithCaptcha :: String -> Bool -> String -> SignalConn -> m ()
registerWithCaptcha String
name Bool
b String
c = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callControl_ MemberName
"registerWithCaptcha"
([Variant] -> SignalConn -> m ())
-> [Variant] -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
name, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
c]
verify :: MonadIO m
=> String
-> String
-> SignalConn
-> m ()
verify :: String -> String -> SignalConn -> m ()
verify String
n String
c = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callControl_ MemberName
"verify" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
c]
verifyWithPin :: MonadIO m
=> String
-> String
-> String
-> SignalConn
-> m ()
verifyWithPin :: String -> String -> String -> SignalConn -> m ()
verifyWithPin String
n String
c String
p = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callControl_ MemberName
"verifyWithPin"
([Variant] -> SignalConn -> m ())
-> [Variant] -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
c, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
p]
getContactName :: MonadIO m => String -> SignalConn -> m String
getContactName :: String -> SignalConn -> m String
getContactName String
n = MemberName -> [Variant] -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"getContactName" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n]
getContactNumber :: MonadIO m => String -> SignalConn -> m [String]
getContactNumber :: String -> SignalConn -> m [String]
getContactNumber String
name = MemberName -> [Variant] -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"getContactNumber" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
name]
getSelfNumber :: MonadIO m => SignalConn -> m String
getSelfNumber :: SignalConn -> m String
getSelfNumber = MemberName -> [Variant] -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"getSelfNumber" []
isContactBlocked :: MonadIO m => String -> SignalConn -> m Bool
isContactBlocked :: String -> SignalConn -> m Bool
isContactBlocked String
number = MemberName -> [Variant] -> SignalConn -> m Bool
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"isContactBlocked" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
number]
isRegistered :: MonadIO m => [String] -> SignalConn -> m [Bool]
isRegistered :: [String] -> SignalConn -> m [Bool]
isRegistered [String]
nums = MemberName -> [Variant] -> SignalConn -> m [Bool]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"isRegistered" [[String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
nums]
listNumbers :: MonadIO m => SignalConn -> m [String]
listNumbers :: SignalConn -> m [String]
listNumbers = MemberName -> [Variant] -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"listNumbers" []
removePin :: MonadIO m => SignalConn -> m ()
removePin :: SignalConn -> m ()
removePin = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"removePin" []
sendEndSessionMessage :: MonadIO m => SignalConn -> m ()
sendEndSessionMessage :: SignalConn -> m ()
sendEndSessionMessage = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"sendEndSessionMessage" []
sendMessage :: MonadIO m
=> String
-> [String]
-> [String]
-> SignalConn
-> m Timestamp
sendMessage :: String -> [String] -> [String] -> SignalConn -> m Timestamp
sendMessage String
m [String]
as [String]
rs = MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendMessage"
[String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
m, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
as, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
rs]
sendMessageReaction :: MonadIO m
=> String
-> Bool
-> String
-> Timestamp
-> String
-> SignalConn
-> m Timestamp
sendMessageReaction :: String
-> Bool
-> String
-> Timestamp
-> String
-> SignalConn
-> m Timestamp
sendMessageReaction String
emoji Bool
rm String
n Timestamp
ts String
r = MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendMessageReaction"
([Variant] -> SignalConn -> m Timestamp)
-> [Variant] -> SignalConn -> m Timestamp
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
emoji, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
rm, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, Timestamp -> Variant
forall a. IsVariant a => a -> Variant
toVariant Timestamp
ts, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
r]
sendNoteToSelfMessage :: MonadIO m
=> String
-> [String]
-> SignalConn
-> m Timestamp
sendNoteToSelfMessage :: String -> [String] -> SignalConn -> m Timestamp
sendNoteToSelfMessage String
m [String]
as = MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendNoteToSelfMessage"
([Variant] -> SignalConn -> m Timestamp)
-> [Variant] -> SignalConn -> m Timestamp
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
m, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
as]
sendReadReceipt :: MonadIO m => String -> [Timestamp] -> SignalConn -> m ()
sendReadReceipt :: String -> [Timestamp] -> SignalConn -> m ()
sendReadReceipt String
r [Timestamp]
ts = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"sendReadReceipt" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
r, [Timestamp] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [Timestamp]
ts]
sendViewedReceipt :: MonadIO m => String -> [Timestamp] -> SignalConn -> m ()
sendViewedReceipt :: String -> [Timestamp] -> SignalConn -> m ()
sendViewedReceipt String
r [Timestamp]
ts = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"sendViewedReceipt" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
r, [Timestamp] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [Timestamp]
ts]
sendRemoteDeleteMessage :: MonadIO m
=> Timestamp
-> [String]
-> SignalConn
-> m Timestamp
sendRemoteDeleteMessage :: Timestamp -> [String] -> SignalConn -> m Timestamp
sendRemoteDeleteMessage Timestamp
ts [String]
rs = MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendRemoteDeleteMessage"
([Variant] -> SignalConn -> m Timestamp)
-> [Variant] -> SignalConn -> m Timestamp
forall a b. (a -> b) -> a -> b
$ [Timestamp -> Variant
forall a. IsVariant a => a -> Variant
toVariant Timestamp
ts, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
rs]
sendTyping :: MonadIO m => String -> Bool -> SignalConn -> m ()
sendTyping :: String -> Bool -> SignalConn -> m ()
sendTyping String
n Bool
b = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"sendTyping" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b]
setContactBlocked :: MonadIO m => String -> Bool -> SignalConn -> m ()
setContactBlocked :: String -> Bool -> SignalConn -> m ()
setContactBlocked String
n Bool
b = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"setContactBlocked" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b]
setContactName :: a
setContactName :: a
setContactName = String -> a
forall a. HasCallStack => String -> a
error String
"Not implemented due to documentation succ"
deleteContact :: MonadIO m => String -> SignalConn -> m ()
deleteContact :: String -> SignalConn -> m ()
deleteContact String
n = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"deleteContact" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n]
deleteRecipient :: MonadIO m => String -> SignalConn -> m ()
deleteRecipient :: String -> SignalConn -> m ()
deleteRecipient String
n = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"deleteRecipient" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n]
setExpirationTimer :: (MonadIO m, Integral i) => String -> i -> SignalConn -> m ()
setExpirationTimer :: String -> i -> SignalConn -> m ()
setExpirationTimer String
n i
i = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"setExpirationTimer"
([Variant] -> SignalConn -> m ())
-> [Variant] -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, Int32 -> Variant
forall a. IsVariant a => a -> Variant
toVariant (i -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral i
i :: Int32)]
setPin :: MonadIO m => String -> SignalConn -> m ()
setPin :: String -> SignalConn -> m ()
setPin String
p = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"setPin" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
p]
submitRateLimitChallenge :: MonadIO m => String -> String -> SignalConn -> m ()
submitRateLimitChallenge :: String -> String -> SignalConn -> m ()
submitRateLimitChallenge String
ch String
cap = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"submitRateLimitChallenge"
([Variant] -> SignalConn -> m ())
-> [Variant] -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
ch, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
cap]
updateProfile :: MonadIO m
=> String
-> String
-> String
-> String
-> String
-> Bool
-> SignalConn
-> m ()
updateProfile :: String
-> String
-> String
-> String
-> String
-> Bool
-> SignalConn
-> m ()
updateProfile String
gn String
fn String
ab String
em String
fp Bool
rm = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"updateProfile"
([Variant] -> SignalConn -> m ())
-> [Variant] -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
gn, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
fn, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
ab, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
em, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
fp, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
rm]
uploadStickerPack :: MonadIO m => String -> SignalConn -> m String
uploadStickerPack :: String -> SignalConn -> m String
uploadStickerPack String
fp = MemberName -> [Variant] -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"uploadStickerPack" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
fp]
version :: MonadIO m => SignalConn -> m String
version :: SignalConn -> m String
version = MemberName -> [Variant] -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"version" []
createGroup :: MonadIO m
=> String
-> [String]
-> String
-> SignalConn
-> m Group
createGroup :: String -> [String] -> String -> SignalConn -> m Group
createGroup String
n [String]
ms String
f SignalConn
sc = do
ByteString
gId <- MemberName -> [Variant] -> SignalConn -> m ByteString
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"createGroup" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
ms, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
f] SignalConn
sc
ByteString -> SignalConn -> m Group
forall (m :: * -> *).
MonadIO m =>
ByteString -> SignalConn -> m Group
getGroup ByteString
gId SignalConn
sc
getGroup :: MonadIO m => ByteString -> SignalConn -> m Group
getGroup :: ByteString -> SignalConn -> m Group
getGroup ByteString
g = MemberName -> [Variant] -> SignalConn -> m Group
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"getGroup" [ByteString -> Variant
forall a. IsVariant a => a -> Variant
toVariant ByteString
g]
joinGroup :: MonadIO m => String -> SignalConn -> m ()
joinGroup :: String -> SignalConn -> m ()
joinGroup String
l = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"joinGroup" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
l]
listGroups :: MonadIO m => SignalConn -> m [(Group, ByteString, String)]
listGroups :: SignalConn -> m [(Group, ByteString, String)]
listGroups = MemberName
-> [Variant] -> SignalConn -> m [(Group, ByteString, String)]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"listGroups" []
sendGroupMessage :: MonadIO m
=> String
-> [String]
-> Group
-> SignalConn
-> m Timestamp
sendGroupMessage :: String -> [String] -> Group -> SignalConn -> m Timestamp
sendGroupMessage String
m [String]
as Group
g SignalConn
sc = do
ByteString
gId <- MemberName -> Group -> SignalConn -> m ByteString
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Id" Group
g SignalConn
sc
MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendGroupMessage"
[String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
m, [String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
as, ByteString -> Variant
forall a. IsVariant a => a -> Variant
toVariant (ByteString
gId :: ByteString)] SignalConn
sc
sendGroupTyping :: MonadIO m => Group -> Bool -> SignalConn -> m ()
sendGroupTyping :: Group -> Bool -> SignalConn -> m ()
sendGroupTyping Group
g Bool
b SignalConn
sc = do
ByteString
gId <- Group -> SignalConn -> m ByteString
forall (m :: * -> *).
MonadIO m =>
Group -> SignalConn -> m ByteString
getGroupId Group
g SignalConn
sc
MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"sendGroupTyping" [ByteString -> Variant
forall a. IsVariant a => a -> Variant
toVariant ByteString
gId, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b] SignalConn
sc
sendGroupMessageReaction :: MonadIO m
=> String
-> Bool
-> String
-> Timestamp
-> Group
-> SignalConn
-> m Timestamp
sendGroupMessageReaction :: String
-> Bool
-> String
-> Timestamp
-> Group
-> SignalConn
-> m Timestamp
sendGroupMessageReaction String
emoji Bool
rm String
n Timestamp
ts Group
g SignalConn
sc = do
ByteString
gId <- Group -> SignalConn -> m ByteString
forall (m :: * -> *).
MonadIO m =>
Group -> SignalConn -> m ByteString
getGroupId Group
g SignalConn
sc
MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendGroupMessageReaction" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
emoji, Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
rm, String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
n,
Timestamp -> Variant
forall a. IsVariant a => a -> Variant
toVariant Timestamp
ts, ByteString -> Variant
forall a. IsVariant a => a -> Variant
toVariant ByteString
gId] SignalConn
sc
sendGroupRemoteDeleteMessage :: MonadIO m
=> Timestamp
-> Group
-> SignalConn
-> m Timestamp
sendGroupRemoteDeleteMessage :: Timestamp -> Group -> SignalConn -> m Timestamp
sendGroupRemoteDeleteMessage Timestamp
ts Group
g SignalConn
sc = do
ByteString
gId <- Group -> SignalConn -> m ByteString
forall (m :: * -> *).
MonadIO m =>
Group -> SignalConn -> m ByteString
getGroupId Group
g SignalConn
sc
MemberName -> [Variant] -> SignalConn -> m Timestamp
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"sendGroupRemoteDeleteMessage" [Timestamp -> Variant
forall a. IsVariant a => a -> Variant
toVariant Timestamp
ts, ByteString -> Variant
forall a. IsVariant a => a -> Variant
toVariant ByteString
gId] SignalConn
sc
addDevice :: MonadIO m => String -> SignalConn -> m ()
addDevice :: String -> SignalConn -> m ()
addDevice String
l = MemberName -> [Variant] -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> SignalConn -> m ()
callSC_ MemberName
"addDevice" [String -> Variant
forall a. IsVariant a => a -> Variant
toVariant String
l]
getDevice :: MonadIO m => Int64 -> SignalConn -> m ObjectPath
getDevice :: Int64 -> SignalConn -> m ObjectPath
getDevice Int64
d = MemberName -> [Variant] -> SignalConn -> m ObjectPath
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"getDevice" [Int64 -> Variant
forall a. IsVariant a => a -> Variant
toVariant Int64
d]
listDevices :: MonadIO m => SignalConn -> m [(ObjectPath, Int64, String)]
listDevices :: SignalConn -> m [(ObjectPath, Int64, String)]
listDevices = MemberName
-> [Variant] -> SignalConn -> m [(ObjectPath, Int64, String)]
forall (m :: * -> *) a.
(MonadIO m, IsVariant a) =>
MemberName -> [Variant] -> SignalConn -> m a
callSC MemberName
"listDevices" []
getGroupId :: MonadIO m => Group -> SignalConn -> m ByteString
getGroupId :: Group -> SignalConn -> m ByteString
getGroupId = MemberName -> Group -> SignalConn -> m ByteString
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Id"
getGroupName :: MonadIO m => Group -> SignalConn -> m String
getGroupName :: Group -> SignalConn -> m String
getGroupName = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Name"
getGroupDescription :: MonadIO m => Group -> SignalConn -> m String
getGroupDescription :: Group -> SignalConn -> m String
getGroupDescription = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Description"
getGroupIsBlocked :: MonadIO m => Group -> SignalConn -> m Bool
getGroupIsBlocked :: Group -> SignalConn -> m Bool
getGroupIsBlocked = MemberName -> Group -> SignalConn -> m Bool
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"IsBlocked"
getGroupIsAdmin :: MonadIO m => Group -> SignalConn -> m Bool
getGroupIsAdmin :: Group -> SignalConn -> m Bool
getGroupIsAdmin = MemberName -> Group -> SignalConn -> m Bool
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"IsAdmin"
getGroupMessageExpirationTimer :: MonadIO m => Group -> SignalConn -> m Int
getGroupMessageExpirationTimer :: Group -> SignalConn -> m Int
getGroupMessageExpirationTimer Group
g SignalConn
sc = do
Int32
i <- MemberName -> Group -> SignalConn -> m Int32
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"MessageExpirationTimer" Group
g SignalConn
sc
Int -> m Int
forall (m :: * -> *) a. Monad m => a -> m a
return (Int -> m Int) -> Int -> m Int
forall a b. (a -> b) -> a -> b
$! Int32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int32
i :: Int32)
getGroupMembers :: MonadIO m => Group -> SignalConn -> m [String]
getGroupMembers :: Group -> SignalConn -> m [String]
getGroupMembers = MemberName -> Group -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Members"
getGroupPendingMembers :: MonadIO m => Group -> SignalConn -> m [String]
getGroupPendingMembers :: Group -> SignalConn -> m [String]
getGroupPendingMembers = MemberName -> Group -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"PendingMembers"
getGroupRequestingMembers :: MonadIO m => Group -> SignalConn -> m [String]
getGroupRequestingMembers :: Group -> SignalConn -> m [String]
getGroupRequestingMembers = MemberName -> Group -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"RequestingMembers"
getGroupAdmins :: MonadIO m => Group -> SignalConn -> m [String]
getGroupAdmins :: Group -> SignalConn -> m [String]
getGroupAdmins = MemberName -> Group -> SignalConn -> m [String]
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"Admins"
getGroupPermissionAddMember :: MonadIO m => Group -> SignalConn -> m String
getGroupPermissionAddMember :: Group -> SignalConn -> m String
getGroupPermissionAddMember = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"PermissionAddMember"
getGroupPermissionEditDetails :: MonadIO m => Group -> SignalConn -> m String
getGroupPermissionEditDetails :: Group -> SignalConn -> m String
getGroupPermissionEditDetails = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"PermissionEditDetails"
getGroupPermissionSendMessage :: MonadIO m => Group -> SignalConn -> m String
getGroupPermissionSendMessage :: Group -> SignalConn -> m String
getGroupPermissionSendMessage = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"PermissionSendMessage"
getGroupInviteLink :: MonadIO m => Group -> SignalConn -> m String
getGroupInviteLink :: Group -> SignalConn -> m String
getGroupInviteLink = MemberName -> Group -> SignalConn -> m String
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> Group -> SignalConn -> m a
getGroupProp MemberName
"GroupInviteLink"
setGroupName :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupName :: String -> Group -> SignalConn -> m ()
setGroupName String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"Name" String
s
setGroupDescription :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupDescription :: String -> Group -> SignalConn -> m ()
setGroupDescription String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"Description" String
s
setGroupAvatar :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupAvatar :: String -> Group -> SignalConn -> m ()
setGroupAvatar String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"Avatar" String
s
setGroupIsBlocked :: MonadIO m => Bool -> Group -> SignalConn -> m ()
setGroupIsBlocked :: Bool -> Group -> SignalConn -> m ()
setGroupIsBlocked Bool
b = MemberName -> Bool -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"IsBlocked" Bool
b
setGroupMessageExpirationTimer :: MonadIO m => Int -> Group -> SignalConn -> m ()
setGroupMessageExpirationTimer :: Int -> Group -> SignalConn -> m ()
setGroupMessageExpirationTimer Int
i = MemberName -> Int32 -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"MessageExpirationTimer"
(Int32 -> Group -> SignalConn -> m ())
-> Int32 -> Group -> SignalConn -> m ()
forall a b. (a -> b) -> a -> b
$ (Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
i :: Int32)
setGroupPermissionAddMember :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupPermissionAddMember :: String -> Group -> SignalConn -> m ()
setGroupPermissionAddMember String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"PermissionAddMember" String
s
setGroupPermissionEditDetails :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupPermissionEditDetails :: String -> Group -> SignalConn -> m ()
setGroupPermissionEditDetails String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"PermissionEditDetails" String
s
setGroupPermissionSendMessage :: MonadIO m => String -> Group -> SignalConn -> m ()
setGroupPermissionSendMessage :: String -> Group -> SignalConn -> m ()
setGroupPermissionSendMessage String
s = MemberName -> String -> Group -> SignalConn -> m ()
forall (m :: * -> *) a.
(MonadIO m, IsValue a) =>
MemberName -> a -> Group -> SignalConn -> m ()
setGroupProp MemberName
"PermissionSendMessage" String
s
groupAddAdmins :: MonadIO m => [String] -> Group -> SignalConn -> m ()
groupAddAdmins :: [String] -> Group -> SignalConn -> m ()
groupAddAdmins [String]
ns = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"addAdmins" [[String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
ns]
groupAddMembers :: MonadIO m => [String] -> Group -> SignalConn -> m ()
groupAddMembers :: [String] -> Group -> SignalConn -> m ()
groupAddMembers [String]
ns = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"addMembers" [[String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
ns]
groupDisableLink :: MonadIO m => Group -> SignalConn -> m ()
groupDisableLink :: Group -> SignalConn -> m ()
groupDisableLink = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"disableLink" []
groupEnableLink :: MonadIO m => Bool -> Group -> SignalConn -> m ()
groupEnableLink :: Bool -> Group -> SignalConn -> m ()
groupEnableLink Bool
b = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"enableLink" [Bool -> Variant
forall a. IsVariant a => a -> Variant
toVariant Bool
b]
groupQuit :: MonadIO m => Group -> SignalConn -> m ()
groupQuit :: Group -> SignalConn -> m ()
groupQuit = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"quitGroup" []
groupRemoveAdmins :: MonadIO m => [String] -> Group -> SignalConn -> m ()
groupRemoveAdmins :: [String] -> Group -> SignalConn -> m ()
groupRemoveAdmins [String]
ns = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"removeAdmins" [[String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
ns]
groupRemoveMembers :: MonadIO m => [String] -> Group -> SignalConn -> m ()
groupRemoveMembers :: [String] -> Group -> SignalConn -> m ()
groupRemoveMembers [String]
ns = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"removeMembers" [[String] -> Variant
forall a. IsVariant a => a -> Variant
toVariant [String]
ns]
groupResetLink :: MonadIO m => Group -> SignalConn -> m ()
groupResetLink :: Group -> SignalConn -> m ()
groupResetLink = MemberName -> [Variant] -> Group -> SignalConn -> m ()
forall (m :: * -> *).
MonadIO m =>
MemberName -> [Variant] -> Group -> SignalConn -> m ()
callGroup_ MemberName
"resetLink" []