@@ -116,3 +116,87 @@ getConversation user qcnv = do
116
116
( req
117
117
& zUser uid
118
118
)
119
+
120
+ getSubConversation ::
121
+ ( HasCallStack ,
122
+ MakesValue user ,
123
+ MakesValue conv
124
+ ) =>
125
+ user ->
126
+ conv ->
127
+ String ->
128
+ App Response
129
+ getSubConversation user conv sub = do
130
+ uid <- objId user
131
+ (cnvDomain, cnvId) <- objQid conv
132
+ req <-
133
+ baseRequest user Galley Versioned $
134
+ joinHttpPath
135
+ [ " conversations" ,
136
+ cnvDomain,
137
+ cnvId,
138
+ " subconversations" ,
139
+ sub
140
+ ]
141
+ submit " GET" $ req & zUser uid
142
+
143
+ getSelfConversation :: (HasCallStack , MakesValue user ) => user -> App Response
144
+ getSelfConversation user = do
145
+ uid <- objId user
146
+ req <- baseRequest user Galley Versioned " /conversations/mls-self"
147
+ submit " GET" $ req & zUser uid & zConnection " conn"
148
+
149
+ data ListConversationIds = ListConversationIds { pagingState :: Maybe String , size :: Maybe Int }
150
+
151
+ instance Default ListConversationIds where
152
+ def = ListConversationIds Nothing Nothing
153
+
154
+ listConversationIds :: MakesValue user => user -> ListConversationIds -> App Response
155
+ listConversationIds user args = do
156
+ req <- baseRequest user Galley Versioned " /conversations/list-ids"
157
+ uid <- objId user
158
+ submit " POST" $
159
+ req
160
+ & zUser uid
161
+ & addJSONObject
162
+ ( [" paging_state" .= s | s <- toList args. pagingState]
163
+ <> [" size" .= s | s <- toList args. size]
164
+ )
165
+
166
+ listConversations :: MakesValue user => user -> [Value ] -> App Response
167
+ listConversations user cnvs = do
168
+ req <- baseRequest user Galley Versioned " /conversations/list"
169
+ uid <- objId user
170
+ submit " POST" $
171
+ req
172
+ & zUser uid
173
+ & addJSONObject [" qualified_ids" .= cnvs]
174
+
175
+ postMLSMessage :: HasCallStack => ClientIdentity -> ByteString -> App Response
176
+ postMLSMessage cid msg = do
177
+ req <- baseRequest cid Galley Versioned " /mls/messages"
178
+ uid <- objId cid
179
+ c <- cid %. " client" & asString
180
+ submit " POST" (addMLS msg req & zUser uid & zClient c & zConnection " conn" )
181
+
182
+ postMLSCommitBundle :: HasCallStack => ClientIdentity -> ByteString -> App Response
183
+ postMLSCommitBundle cid msg = do
184
+ req <- baseRequest cid Galley Versioned " /mls/commit-bundles"
185
+ uid <- objId cid
186
+ c <- cid %. " client_id" & asString
187
+ submit " POST" (addMLS msg req & zUser uid & zClient c & zConnection " conn" )
188
+
189
+ getGroupInfo ::
190
+ (HasCallStack , MakesValue user , MakesValue conv ) =>
191
+ user ->
192
+ conv ->
193
+ App Response
194
+ getGroupInfo user conv = do
195
+ (qcnv, mSub) <- objSubConv conv
196
+ (convDomain, convId) <- objQid qcnv
197
+ let path = joinHttpPath $ case mSub of
198
+ Nothing -> [" conversations" , convDomain, convId, " groupinfo" ]
199
+ Just sub -> [" conversations" , convDomain, convId, " subconversations" , sub, " groupinfo" ]
200
+ req <- baseRequest user Galley Versioned path
201
+ uid <- objId user
202
+ submit " GET" (req & zUser uid & zConnection " conn" )
0 commit comments