core: api to update user profile in one request (#461)

This commit is contained in:
Evgeny Poberezkin
2022-03-23 20:52:00 +00:00
committed by GitHub
parent 3c81a44273
commit d4925b7cdd
3 changed files with 10 additions and 2 deletions
+5 -1
View File
@@ -276,6 +276,7 @@ processChatCommand = \case
`E.finally` deleteContactRequest st userId connReqId
withAgent $ \a -> rejectContact a connId invId
pure $ CRContactRequestRejected cReq
APIUpdateProfile profile -> withUser (`updateProfile` profile)
GetUserSMPServers -> CRUserSMPServers <$> withUser (\user -> withStore (`getSMPServers` user))
SetUserSMPServers smpServers -> withUser $ \user -> withChatLock $ do
withStore $ \st -> overwriteSMPServers st user smpServers
@@ -1572,6 +1573,7 @@ chatCommandP =
<|> "/_delete " *> (APIDeleteChat <$> chatTypeP <*> A.decimal)
<|> "/_accept " *> (APIAcceptContact <$> A.decimal)
<|> "/_reject " *> (APIRejectContact <$> A.decimal)
<|> "/_profile " *> (APIUpdateProfile <$> jsonP)
<|> "/smp_servers default" $> SetUserSMPServers []
<|> "/smp_servers " *> (SetUserSMPServers <$> smpServersP)
<|> "/smp_servers" $> GetUserSMPServers
@@ -1628,7 +1630,7 @@ chatCommandP =
<|> (CPBefore <$ "before=" <*> A.decimal <* A.space <* "count=" <*> A.decimal)
msgContentP =
"text " *> (MCText . safeDecodeUtf8 <$> A.takeByteString)
<|> "json " *> (J.eitherDecodeStrict' <$?> A.takeByteString)
<|> "json " *> jsonP
msgDeleteMode = "broadcast" $> MDBroadcast <|> "internal" $> MDInternal
displayName = safeDecodeUtf8 <$> (B.cons <$> A.satisfy refChar <*> A.takeTill (== ' '))
sendMsgQuote msgDir = SendMessageQuote <$> displayName <* A.space <*> pure msgDir <*> quotedMsg <*> A.takeByteString
@@ -1642,6 +1644,8 @@ chatCommandP =
userProfile = do
(cName, fullName) <- userNames
pure Profile {displayName = cName, fullName, image = Nothing}
jsonP :: J.FromJSON a => Parser a
jsonP = J.eitherDecodeStrict' <$?> A.takeByteString
groupProfile = do
gName <- displayName
fullName <- fullNameP gName
+1
View File
@@ -103,6 +103,7 @@ data ChatCommand
| APIDeleteChat ChatType Int64
| APIAcceptContact Int64
| APIRejectContact Int64
| APIUpdateProfile Profile
| GetUserSMPServers
| SetUserSMPServers [SMPServer]
| ChatHelp HelpSection