accepted status

This commit is contained in:
Evgeny Poberezkin 2025-03-03 11:31:08 +00:00
parent b030a77efa
commit f4d9049474
No known key found for this signature in database
GPG key ID: 494BDDD9A28B577D
7 changed files with 20 additions and 20 deletions

View file

@ -164,9 +164,9 @@ acceptMemberHook
when (useMemberFilter img $ rejectNames a) checkName
pure $
if
| useMemberFilter img (passCaptcha a) -> (GAManual, GRMember)
| useMemberFilter img (makeObserver a) -> (GAAuto, GRObserver)
| otherwise -> (GAAuto, memberRole)
| useMemberFilter img (passCaptcha a) -> (GAPending, GRMember)
| useMemberFilter img (makeObserver a) -> (GAAccepted, GRObserver)
| otherwise -> (GAAccepted, memberRole)
-- TODO [captcha] uncomment for testing
-- pure (GAManual, GRMember)
where

View file

@ -825,11 +825,11 @@ acceptGroupJoinRequestAsync
user
gInfo@GroupInfo {groupProfile, membership, businessChat}
ucr@UserContactRequest {agentInvitationId = AgentInvId invId, cReqChatVRange}
gAcceptance
gAccepted
gLinkMemRole
incognitoProfile = do
gVar <- asks random
let initialStatus = acceptanceToStatus gAcceptance
let initialStatus = acceptanceToStatus gAccepted
(groupMemberId, memberId) <- withStore $ \db -> do
liftIO $ deleteContactRequestRec db user ucr
createJoiningMember db gVar user gInfo ucr gLinkMemRole initialStatus
@ -843,7 +843,7 @@ acceptGroupJoinRequestAsync
fromMemberName = displayName,
invitedMember = MemberIdRole memberId gLinkMemRole,
groupProfile,
acceptance = Just gAcceptance,
accepted = Just gAccepted,
business = businessChat,
groupSize = Just currentMemCount
}
@ -903,7 +903,7 @@ acceptBusinessJoinRequestAsync
fromMemberName = displayName,
invitedMember = MemberIdRole memberId GRMember,
groupProfile = businessGroupProfile userProfile groupPreferences,
acceptance = Just GAAuto,
accepted = Just GAAccepted,
-- This refers to the "title member" that defines the group name and profile.
-- This coincides with fromMember to be current user when accepting the connecting user,
-- but it will be different when inviting somebody else.

View file

@ -1208,7 +1208,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage =
Just gli@GroupLinkInfo {groupId, memberRole = gLinkMemRole} -> do
gInfo <- withStore $ \db -> getGroupInfo db vr user groupId
acceptMember_ <- asks $ acceptMember . chatHooks . config
maybe (pure $ Right (GAAuto, gLinkMemRole)) (\am -> liftIO $ am gInfo gli p) acceptMember_ >>= \case
maybe (pure $ Right (GAAccepted, gLinkMemRole)) (\am -> liftIO $ am gInfo gli p) acceptMember_ >>= \case
Right (acceptance, useRole)
| v < groupFastLinkJoinVersion ->
messageError "processUserContactRequest: chat version range incompatible for accepting group join request"

View file

@ -521,9 +521,9 @@ deleteContactCardKeepConn db connId Contact {contactId, profile = LocalProfile {
DB.execute db "DELETE FROM contact_profiles WHERE contact_profile_id = ?" (Only profileId)
createGroupInvitedViaLink :: DB.Connection -> VersionRangeChat -> User -> Connection -> GroupLinkInvitation -> ExceptT StoreError IO (GroupInfo, GroupMember)
createGroupInvitedViaLink db vr user conn GroupLinkInvitation {fromMember, fromMemberName, invitedMember, groupProfile, acceptance, business} = do
createGroupInvitedViaLink db vr user conn GroupLinkInvitation {fromMember, fromMemberName, invitedMember, groupProfile, accepted, business} = do
let fromMemberProfile = profileFromName fromMemberName
initialStatus = maybe GSMemAccepted acceptanceToStatus acceptance
initialStatus = maybe GSMemAccepted acceptanceToStatus accepted
createGroupViaLink' db vr user conn fromMember fromMemberProfile invitedMember groupProfile business initialStatus
createGroupRejectedViaLink :: DB.Connection -> VersionRangeChat -> User -> Connection -> GroupLinkRejection -> ExceptT StoreError IO (GroupInfo, GroupMember)

View file

@ -668,7 +668,7 @@ data GroupLinkInvitation = GroupLinkInvitation
fromMemberName :: ContactName,
invitedMember :: MemberIdRole,
groupProfile :: GroupProfile,
acceptance :: Maybe GroupAcceptance,
accepted :: Maybe GroupAcceptance,
business :: Maybe BusinessChatInfo,
groupSize :: Maybe Int
}
@ -1021,8 +1021,8 @@ instance ToJSON GroupMemberStatus where
acceptanceToStatus :: GroupAcceptance -> GroupMemberStatus
acceptanceToStatus = \case
GAAuto -> GSMemAccepted
GAManual -> GSMemPendingApproval
GAAccepted -> GSMemAccepted
GAPending -> GSMemPendingApproval
memberActive :: GroupMember -> Bool
memberActive m = case memberStatus m of

View file

@ -49,7 +49,7 @@ instance ToJSON GroupMemberRole where
toJSON = strToJSON
toEncoding = strToJEncoding
data GroupAcceptance = GAAuto | GAManual deriving (Eq, Show)
data GroupAcceptance = GAAccepted | GAPending deriving (Eq, Show)
-- TODO [knocking] encoding doesn't match field type
instance FromField GroupAcceptance where fromField = blobFieldDecoder strDecode
@ -58,11 +58,11 @@ instance ToField GroupAcceptance where toField = toField . strEncode
instance StrEncoding GroupAcceptance where
strEncode = \case
GAAuto -> "auto"
GAManual -> "manual"
GAAccepted -> "accepted"
GAPending -> "pending"
strDecode = \case
"auto" -> Right GAAuto
"manual" -> Right GAManual
"accepted" -> Right GAAccepted
"pending" -> Right GAPending
r -> Left $ "bad GroupAcceptance " <> B.unpack r
strP = strDecode <$?> A.takeByteString

View file

@ -2960,7 +2960,7 @@ testGLinkManualAcceptMember =
cath #> "#team hi group"
[alice, bob] *<# "#team cath> hi group"
where
cfg = testCfg {chatHooks = defaultChatHooks {acceptMember = Just (\_ _ _ -> pure $ Right (GAManual, GRObserver))}}
cfg = testCfg {chatHooks = defaultChatHooks {acceptMember = Just (\_ _ _ -> pure $ Right (GAPending, GRObserver))}}
testGLinkDeletePendingMember :: HasCallStack => TestParams -> IO ()
testGLinkDeletePendingMember =
@ -2985,7 +2985,7 @@ testGLinkDeletePendingMember =
cath <## "#team: alice removed you from the group"
cath <## "use /d #team to delete the group"
where
cfg = testCfg {chatHooks = defaultChatHooks {acceptMember = Just (\_ _ _ -> pure $ Right (GAManual, GRObserver))}}
cfg = testCfg {chatHooks = defaultChatHooks {acceptMember = Just (\_ _ _ -> pure $ Right (GAPending, GRObserver))}}
testPlanGroupLinkKnown :: HasCallStack => TestParams -> IO ()
testPlanGroupLinkKnown =