mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-03-14 09:45:42 +00:00
accepted status
This commit is contained in:
parent
b030a77efa
commit
f4d9049474
7 changed files with 20 additions and 20 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 =
|
||||
|
|
Loading…
Add table
Reference in a new issue