@@ -106,47 +106,47 @@ awaitNotification user lastNotifId selector = do
106106 since0 <- mapM objId lastNotifId
107107 head <$> awaitNotifications user (Nothing :: Maybe () ) since0 1 selector
108108
109- isDeleteUserNotif :: (MakesValue a ) => a -> App Bool
109+ isDeleteUserNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
110110isDeleteUserNotif n =
111111 nPayload n %. " type" `isEqual` " user.delete"
112112
113- isFeatureConfigUpdateNotif :: (MakesValue a ) => a -> App Bool
113+ isFeatureConfigUpdateNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
114114isFeatureConfigUpdateNotif n =
115115 nPayload n %. " type" `isEqual` " feature-config.update"
116116
117- isNewMessageNotif :: (MakesValue a ) => a -> App Bool
117+ isNewMessageNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
118118isNewMessageNotif n = fieldEquals n " payload.0.type" " conversation.otr-message-add"
119119
120- isNewMLSMessageNotif :: (MakesValue a ) => a -> App Bool
120+ isNewMLSMessageNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
121121isNewMLSMessageNotif n = fieldEquals n " payload.0.type" " conversation.mls-message-add"
122122
123- isWelcomeNotif :: (MakesValue a ) => a -> App Bool
123+ isWelcomeNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
124124isWelcomeNotif n = fieldEquals n " payload.0.type" " conversation.mls-welcome"
125125
126- isMemberJoinNotif :: (MakesValue a ) => a -> App Bool
126+ isMemberJoinNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
127127isMemberJoinNotif n = fieldEquals n " payload.0.type" " conversation.member-join"
128128
129- isConvLeaveNotif :: (MakesValue a ) => a -> App Bool
129+ isConvLeaveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
130130isConvLeaveNotif n = fieldEquals n " payload.0.type" " conversation.member-leave"
131131
132- isConvLeaveNotifWithLeaver :: (MakesValue user , MakesValue a ) => user -> a -> App Bool
132+ isConvLeaveNotifWithLeaver :: (HasCallStack , MakesValue user , MakesValue a ) => user -> a -> App Bool
133133isConvLeaveNotifWithLeaver user n =
134134 fieldEquals n " payload.0.type" " conversation.member-leave"
135135 &&~ (n %. " payload.0.data.user_ids.0" ) `isEqual` (user %. " id" )
136136
137- isNotifConv :: (MakesValue conv , MakesValue a , HasCallStack ) => conv -> a -> App Bool
137+ isNotifConv :: (HasCallStack , MakesValue conv , MakesValue a , HasCallStack ) => conv -> a -> App Bool
138138isNotifConv conv n = fieldEquals n " payload.0.qualified_conversation" (objQidObject conv)
139139
140- isNotifConvId :: (MakesValue a , HasCallStack ) => ConvId -> a -> App Bool
140+ isNotifConvId :: (HasCallStack , MakesValue a , HasCallStack ) => ConvId -> a -> App Bool
141141isNotifConvId conv n = do
142142 let subconvField = " payload.0.subconv"
143143 fieldEquals n " payload.0.qualified_conversation" (convIdToQidObject conv)
144144 &&~ maybe (isNothing <$> lookupField n subconvField) (fieldEquals n subconvField) conv. subconvId
145145
146- isNotifForUser :: (MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
146+ isNotifForUser :: (HasCallStack , MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
147147isNotifForUser user n = fieldEquals n " payload.0.data.qualified_user_ids.0" (objQidObject user)
148148
149- isNotifFromUser :: (MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
149+ isNotifFromUser :: (HasCallStack , MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
150150isNotifFromUser user n = fieldEquals n " payload.0.qualified_from" (objQidObject user)
151151
152152isConvNameChangeNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
@@ -171,66 +171,69 @@ isConvAccessUpdateNotif :: (HasCallStack, MakesValue n) => n -> App Bool
171171isConvAccessUpdateNotif n =
172172 fieldEquals n " payload.0.type" " conversation.access-update"
173173
174- isConvCreateNotif :: (MakesValue a ) => a -> App Bool
174+ isConvCreateNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
175175isConvCreateNotif n = fieldEquals n " payload.0.type" " conversation.create"
176176
177177-- | like 'isConvCreateNotif' but excludes self conversations
178- isConvCreateNotifNotSelf :: (MakesValue a ) => a -> App Bool
178+ isConvCreateNotifNotSelf :: (HasCallStack , MakesValue a ) => a -> App Bool
179179isConvCreateNotifNotSelf n =
180180 fieldEquals n " payload.0.type" " conversation.create"
181181 &&~ do not <$> fieldEquals n " payload.0.data.access" [" private" ]
182182
183- isConvDeleteNotif :: (MakesValue a ) => a -> App Bool
183+ isConvDeleteNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
184184isConvDeleteNotif n = fieldEquals n " payload.0.type" " conversation.delete"
185185
186- notifTypeIsEqual :: (MakesValue a ) => String -> a -> App Bool
186+ notifTypeIsEqual :: (HasCallStack , MakesValue a ) => String -> a -> App Bool
187187notifTypeIsEqual typ n = nPayload n %. " type" `isEqual` typ
188188
189- isTeamMemberJoinNotif :: (MakesValue a ) => a -> App Bool
189+ isTeamMemberJoinNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
190190isTeamMemberJoinNotif = notifTypeIsEqual " team.member-join"
191191
192- isTeamMemberLeaveNotif :: (MakesValue a ) => a -> App Bool
192+ isTeamMemberLeaveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
193193isTeamMemberLeaveNotif = notifTypeIsEqual " team.member-leave"
194194
195- isTeamCollaboratorAddedNotif :: (MakesValue a ) => a -> App Bool
195+ isTeamCollaboratorAddedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
196196isTeamCollaboratorAddedNotif = notifTypeIsEqual " team.collaborator-add"
197197
198- isUserActivateNotif :: (MakesValue a ) => a -> App Bool
198+ isTeamCollaboratorRemovedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
199+ isTeamCollaboratorRemovedNotif = notifTypeIsEqual " team.collaborator-remove"
200+
201+ isUserActivateNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
199202isUserActivateNotif = notifTypeIsEqual " user.activate"
200203
201- isUserClientAddNotif :: (MakesValue a ) => a -> App Bool
204+ isUserClientAddNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
202205isUserClientAddNotif = notifTypeIsEqual " user.client-add"
203206
204- isUserUpdatedNotif :: (MakesValue a ) => a -> App Bool
207+ isUserUpdatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
205208isUserUpdatedNotif = notifTypeIsEqual " user.update"
206209
207- isUserClientRemoveNotif :: (MakesValue a ) => a -> App Bool
210+ isUserClientRemoveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
208211isUserClientRemoveNotif = notifTypeIsEqual " user.client-remove"
209212
210- isUserLegalholdRequestNotif :: (MakesValue a ) => a -> App Bool
213+ isUserLegalholdRequestNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
211214isUserLegalholdRequestNotif = notifTypeIsEqual " user.legalhold-request"
212215
213- isUserLegalholdEnabledNotif :: (MakesValue a ) => a -> App Bool
216+ isUserLegalholdEnabledNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
214217isUserLegalholdEnabledNotif = notifTypeIsEqual " user.legalhold-enable"
215218
216- isUserLegalholdDisabledNotif :: (MakesValue a ) => a -> App Bool
219+ isUserLegalholdDisabledNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
217220isUserLegalholdDisabledNotif = notifTypeIsEqual " user.legalhold-disable"
218221
219- isUserConnectionNotif :: (MakesValue a ) => a -> App Bool
222+ isUserConnectionNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
220223isUserConnectionNotif = notifTypeIsEqual " user.connection"
221224
222- isConnectionNotif :: (MakesValue a ) => String -> a -> App Bool
225+ isConnectionNotif :: (HasCallStack , MakesValue a ) => String -> a -> App Bool
223226isConnectionNotif status n =
224227 -- NB:
225228 -- (&&) <$> (print "hello" *> pure False) <*> fail "bla" === _|_
226229 -- runMaybeT $ (lift (print "hello") *> MaybeT (pure Nothing)) *> lift (fail "bla") === pure Nothing
227230 nPayload n %. " type" `isEqual` " user.connection"
228231 &&~ nPayload n %. " connection.status" `isEqual` status
229232
230- isUserGroupCreatedNotif :: (MakesValue a ) => a -> App Bool
233+ isUserGroupCreatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
231234isUserGroupCreatedNotif = notifTypeIsEqual " user-group.created"
232235
233- isUserGroupUpdatedNotif :: (MakesValue a ) => a -> App Bool
236+ isUserGroupUpdatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
234237isUserGroupUpdatedNotif = notifTypeIsEqual " user-group.updated"
235238
236239isConvResetNotif :: (HasCallStack , MakesValue n ) => n -> App Bool
@@ -264,7 +267,7 @@ assertLeaveNotification fromUser conv user client leaver =
264267 ]
265268 )
266269
267- assertConvUserDeletedNotif :: (MakesValue leaverId ) => WebSocket -> leaverId -> App ()
270+ assertConvUserDeletedNotif :: (HasCallStack , MakesValue leaverId ) => WebSocket -> leaverId -> App ()
268271assertConvUserDeletedNotif ws leaverId = do
269272 n <- awaitMatch isConvLeaveNotif ws
270273 nPayload n %. " data.qualified_user_ids.0" `shouldMatch` leaverId
0 commit comments