@@ -68,7 +68,8 @@ userGroupStoreTestInterpreter =
6868 AddUser gid uid -> addUserImpl gid uid
6969 UpdateUsers gid uids -> updateUsersImpl gid uids
7070 RemoveUser gid uid -> removeUserImpl gid uid
71- UpdateUserGroupChannels gid convIds -> updateUserGroupChannelsImpl gid convIds
71+ AddUserGroupChannels gid convIds -> updateUserGroupChannelsImpl True gid convIds
72+ UpdateUserGroupChannels gid convIds -> updateUserGroupChannelsImpl False gid convIds
7273 GetUserGroupIdsForUsers uids -> getUserGroupIdsForUsersImpl uids
7374
7475getUserGroupIdsForUsersImpl :: (UserGroupStoreInMemEffectConstraints r ) => [UserId ] -> Sem r (Map UserId [UserGroupId ])
@@ -205,23 +206,24 @@ removeUserImpl gid uid = do
205206
206207updateUserGroupChannelsImpl ::
207208 (UserGroupStoreInMemEffectConstraints r , Member (Input (Local () )) r ) =>
209+ Bool ->
208210 UserGroupId ->
209211 Vector ConvId ->
210212 Sem r ()
211- updateUserGroupChannelsImpl gid convIds = do
213+ updateUserGroupChannelsImpl appendOnly gid convIds = do
212214 qualifyLocal <- qualifyAs <$> input
213- let f :: Maybe UserGroup -> Maybe UserGroup
214- f Nothing = Nothing
215- f ( Just g) =
216- Just
217- ( g
218- { channels = Just $ tUntagged . qualifyLocal <$> convIds ,
219- channelsCount = Nothing
220- } ::
221- UserGroup
222- )
223-
224- modifyUserGroupsGidOnly gid (Map. alter f)
215+ let f :: UserGroup -> UserGroup
216+ f g =
217+ g
218+ { channels =
219+ Just $
220+ newQualifiedConvIds <> if appendOnly then fromMaybe mempty g . channels else mempty ,
221+ channelsCount = Just $ length convIds
222+ } ::
223+ UserGroup
224+ newQualifiedConvIds = tUntagged . qualifyLocal <$> convIds
225+
226+ modifyUserGroupsGidOnly gid (Map. alter $ fmap f)
225227
226228listUserGroupChannelsImpl ::
227229 (UserGroupStoreInMemEffectConstraints r ) =>
0 commit comments