@@ -106,47 +106,47 @@ awaitNotification user lastNotifId selector = do
106
106
since0 <- mapM objId lastNotifId
107
107
head <$> awaitNotifications user (Nothing :: Maybe () ) since0 1 selector
108
108
109
- isDeleteUserNotif :: (MakesValue a ) => a -> App Bool
109
+ isDeleteUserNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
110
110
isDeleteUserNotif n =
111
111
nPayload n %. " type" `isEqual` " user.delete"
112
112
113
- isFeatureConfigUpdateNotif :: (MakesValue a ) => a -> App Bool
113
+ isFeatureConfigUpdateNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
114
114
isFeatureConfigUpdateNotif n =
115
115
nPayload n %. " type" `isEqual` " feature-config.update"
116
116
117
- isNewMessageNotif :: (MakesValue a ) => a -> App Bool
117
+ isNewMessageNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
118
118
isNewMessageNotif n = fieldEquals n " payload.0.type" " conversation.otr-message-add"
119
119
120
- isNewMLSMessageNotif :: (MakesValue a ) => a -> App Bool
120
+ isNewMLSMessageNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
121
121
isNewMLSMessageNotif n = fieldEquals n " payload.0.type" " conversation.mls-message-add"
122
122
123
- isWelcomeNotif :: (MakesValue a ) => a -> App Bool
123
+ isWelcomeNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
124
124
isWelcomeNotif n = fieldEquals n " payload.0.type" " conversation.mls-welcome"
125
125
126
- isMemberJoinNotif :: (MakesValue a ) => a -> App Bool
126
+ isMemberJoinNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
127
127
isMemberJoinNotif n = fieldEquals n " payload.0.type" " conversation.member-join"
128
128
129
- isConvLeaveNotif :: (MakesValue a ) => a -> App Bool
129
+ isConvLeaveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
130
130
isConvLeaveNotif n = fieldEquals n " payload.0.type" " conversation.member-leave"
131
131
132
- isConvLeaveNotifWithLeaver :: (MakesValue user , MakesValue a ) => user -> a -> App Bool
132
+ isConvLeaveNotifWithLeaver :: (HasCallStack , MakesValue user , MakesValue a ) => user -> a -> App Bool
133
133
isConvLeaveNotifWithLeaver user n =
134
134
fieldEquals n " payload.0.type" " conversation.member-leave"
135
135
&&~ (n %. " payload.0.data.user_ids.0" ) `isEqual` (user %. " id" )
136
136
137
- isNotifConv :: (MakesValue conv , MakesValue a , HasCallStack ) => conv -> a -> App Bool
137
+ isNotifConv :: (HasCallStack , MakesValue conv , MakesValue a , HasCallStack ) => conv -> a -> App Bool
138
138
isNotifConv conv n = fieldEquals n " payload.0.qualified_conversation" (objQidObject conv)
139
139
140
- isNotifConvId :: (MakesValue a , HasCallStack ) => ConvId -> a -> App Bool
140
+ isNotifConvId :: (HasCallStack , MakesValue a , HasCallStack ) => ConvId -> a -> App Bool
141
141
isNotifConvId conv n = do
142
142
let subconvField = " payload.0.subconv"
143
143
fieldEquals n " payload.0.qualified_conversation" (convIdToQidObject conv)
144
144
&&~ maybe (isNothing <$> lookupField n subconvField) (fieldEquals n subconvField) conv. subconvId
145
145
146
- isNotifForUser :: (MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
146
+ isNotifForUser :: (HasCallStack , MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
147
147
isNotifForUser user n = fieldEquals n " payload.0.data.qualified_user_ids.0" (objQidObject user)
148
148
149
- isNotifFromUser :: (MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
149
+ isNotifFromUser :: (HasCallStack , MakesValue user , MakesValue a , HasCallStack ) => user -> a -> App Bool
150
150
isNotifFromUser user n = fieldEquals n " payload.0.qualified_from" (objQidObject user)
151
151
152
152
isConvNameChangeNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
@@ -171,66 +171,69 @@ isConvAccessUpdateNotif :: (HasCallStack, MakesValue n) => n -> App Bool
171
171
isConvAccessUpdateNotif n =
172
172
fieldEquals n " payload.0.type" " conversation.access-update"
173
173
174
- isConvCreateNotif :: (MakesValue a ) => a -> App Bool
174
+ isConvCreateNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
175
175
isConvCreateNotif n = fieldEquals n " payload.0.type" " conversation.create"
176
176
177
177
-- | like 'isConvCreateNotif' but excludes self conversations
178
- isConvCreateNotifNotSelf :: (MakesValue a ) => a -> App Bool
178
+ isConvCreateNotifNotSelf :: (HasCallStack , MakesValue a ) => a -> App Bool
179
179
isConvCreateNotifNotSelf n =
180
180
fieldEquals n " payload.0.type" " conversation.create"
181
181
&&~ do not <$> fieldEquals n " payload.0.data.access" [" private" ]
182
182
183
- isConvDeleteNotif :: (MakesValue a ) => a -> App Bool
183
+ isConvDeleteNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
184
184
isConvDeleteNotif n = fieldEquals n " payload.0.type" " conversation.delete"
185
185
186
- notifTypeIsEqual :: (MakesValue a ) => String -> a -> App Bool
186
+ notifTypeIsEqual :: (HasCallStack , MakesValue a ) => String -> a -> App Bool
187
187
notifTypeIsEqual typ n = nPayload n %. " type" `isEqual` typ
188
188
189
- isTeamMemberJoinNotif :: (MakesValue a ) => a -> App Bool
189
+ isTeamMemberJoinNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
190
190
isTeamMemberJoinNotif = notifTypeIsEqual " team.member-join"
191
191
192
- isTeamMemberLeaveNotif :: (MakesValue a ) => a -> App Bool
192
+ isTeamMemberLeaveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
193
193
isTeamMemberLeaveNotif = notifTypeIsEqual " team.member-leave"
194
194
195
- isTeamCollaboratorAddedNotif :: (MakesValue a ) => a -> App Bool
195
+ isTeamCollaboratorAddedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
196
196
isTeamCollaboratorAddedNotif = notifTypeIsEqual " team.collaborator-add"
197
197
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
199
202
isUserActivateNotif = notifTypeIsEqual " user.activate"
200
203
201
- isUserClientAddNotif :: (MakesValue a ) => a -> App Bool
204
+ isUserClientAddNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
202
205
isUserClientAddNotif = notifTypeIsEqual " user.client-add"
203
206
204
- isUserUpdatedNotif :: (MakesValue a ) => a -> App Bool
207
+ isUserUpdatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
205
208
isUserUpdatedNotif = notifTypeIsEqual " user.update"
206
209
207
- isUserClientRemoveNotif :: (MakesValue a ) => a -> App Bool
210
+ isUserClientRemoveNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
208
211
isUserClientRemoveNotif = notifTypeIsEqual " user.client-remove"
209
212
210
- isUserLegalholdRequestNotif :: (MakesValue a ) => a -> App Bool
213
+ isUserLegalholdRequestNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
211
214
isUserLegalholdRequestNotif = notifTypeIsEqual " user.legalhold-request"
212
215
213
- isUserLegalholdEnabledNotif :: (MakesValue a ) => a -> App Bool
216
+ isUserLegalholdEnabledNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
214
217
isUserLegalholdEnabledNotif = notifTypeIsEqual " user.legalhold-enable"
215
218
216
- isUserLegalholdDisabledNotif :: (MakesValue a ) => a -> App Bool
219
+ isUserLegalholdDisabledNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
217
220
isUserLegalholdDisabledNotif = notifTypeIsEqual " user.legalhold-disable"
218
221
219
- isUserConnectionNotif :: (MakesValue a ) => a -> App Bool
222
+ isUserConnectionNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
220
223
isUserConnectionNotif = notifTypeIsEqual " user.connection"
221
224
222
- isConnectionNotif :: (MakesValue a ) => String -> a -> App Bool
225
+ isConnectionNotif :: (HasCallStack , MakesValue a ) => String -> a -> App Bool
223
226
isConnectionNotif status n =
224
227
-- NB:
225
228
-- (&&) <$> (print "hello" *> pure False) <*> fail "bla" === _|_
226
229
-- runMaybeT $ (lift (print "hello") *> MaybeT (pure Nothing)) *> lift (fail "bla") === pure Nothing
227
230
nPayload n %. " type" `isEqual` " user.connection"
228
231
&&~ nPayload n %. " connection.status" `isEqual` status
229
232
230
- isUserGroupCreatedNotif :: (MakesValue a ) => a -> App Bool
233
+ isUserGroupCreatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
231
234
isUserGroupCreatedNotif = notifTypeIsEqual " user-group.created"
232
235
233
- isUserGroupUpdatedNotif :: (MakesValue a ) => a -> App Bool
236
+ isUserGroupUpdatedNotif :: (HasCallStack , MakesValue a ) => a -> App Bool
234
237
isUserGroupUpdatedNotif = notifTypeIsEqual " user-group.updated"
235
238
236
239
isConvResetNotif :: (HasCallStack , MakesValue n ) => n -> App Bool
@@ -264,7 +267,7 @@ assertLeaveNotification fromUser conv user client leaver =
264
267
]
265
268
)
266
269
267
- assertConvUserDeletedNotif :: (MakesValue leaverId ) => WebSocket -> leaverId -> App ()
270
+ assertConvUserDeletedNotif :: (HasCallStack , MakesValue leaverId ) => WebSocket -> leaverId -> App ()
268
271
assertConvUserDeletedNotif ws leaverId = do
269
272
n <- awaitMatch isConvLeaveNotif ws
270
273
nPayload n %. " data.qualified_user_ids.0" `shouldMatch` leaverId
0 commit comments