From 2b69103055108424b601bbd3565875b5c2df20ce Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Tue, 1 Aug 2023 20:54:51 +0100 Subject: [PATCH 001/169] SimpleX Directory Service (#2766) * SimpleX Directory Service * more events * update events * fix * Apply suggestions from code review metavar Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> * metavar 2 Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> * process events * remove command serialization * update * update * process group profile update * basic group registration flow * search works * better messages * improve messages * test broadcast bot * test for directory service * better processing of group profile change, test * refactor * de-list group when owner or service is removed from the group, tests * fix: removing any member or any member leaving should not delist the group * refactor * more tests, fixes * disable bot tests in CI * remove comment --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --- apps/simplex-broadcast-bot/Main.hs | 69 +-- .../src/Broadcast/Bot.hs | 71 +++ .../{ => src/Broadcast}/Options.hs | 42 +- apps/simplex-chat/Main.hs | 2 +- apps/simplex-directory-service/Main.hs | 15 + apps/simplex-directory-service/README.md | 5 + .../src/Directory/Events.hs | 139 ++++++ .../src/Directory/Options.hs | 77 +++ .../src/Directory/Service.hs | 331 +++++++++++++ .../src/Directory/Store.hs | 90 ++++ package.yaml | 18 +- simplex-chat.cabal | 71 ++- src/Simplex/Chat.hs | 27 +- src/Simplex/Chat/Bot.hs | 35 +- src/Simplex/Chat/Bot/KnownContacts.hs | 33 ++ src/Simplex/Chat/Controller.hs | 7 +- src/Simplex/Chat/Core.hs | 7 +- src/Simplex/Chat/Store/Groups.hs | 9 +- src/Simplex/Chat/View.hs | 7 +- tests/Bots/BroadcastTests.hs | 76 +++ tests/Bots/DirectoryTests.hs | 456 ++++++++++++++++++ tests/ChatTests/Utils.hs | 23 +- tests/Test.hs | 5 + 23 files changed, 1473 insertions(+), 142 deletions(-) create mode 100644 apps/simplex-broadcast-bot/src/Broadcast/Bot.hs rename apps/simplex-broadcast-bot/{ => src/Broadcast}/Options.hs (69%) create mode 100644 apps/simplex-directory-service/Main.hs create mode 100644 apps/simplex-directory-service/README.md create mode 100644 apps/simplex-directory-service/src/Directory/Events.hs create mode 100644 apps/simplex-directory-service/src/Directory/Options.hs create mode 100644 apps/simplex-directory-service/src/Directory/Service.hs create mode 100644 apps/simplex-directory-service/src/Directory/Store.hs create mode 100644 src/Simplex/Chat/Bot/KnownContacts.hs create mode 100644 tests/Bots/BroadcastTests.hs create mode 100644 tests/Bots/DirectoryTests.hs diff --git a/apps/simplex-broadcast-bot/Main.hs b/apps/simplex-broadcast-bot/Main.hs index 966971633f..15bb743b56 100644 --- a/apps/simplex-broadcast-bot/Main.hs +++ b/apps/simplex-broadcast-bot/Main.hs @@ -1,76 +1,11 @@ -{-# LANGUAGE DuplicateRecordFields #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE OverloadedStrings #-} - module Main where -import Control.Concurrent (forkIO) -import Control.Concurrent.Async -import Control.Concurrent.STM -import Control.Monad.Reader -import qualified Data.Text as T -import Options -import Simplex.Chat.Bot -import Simplex.Chat.Controller +import Broadcast.Bot +import Broadcast.Options import Simplex.Chat.Core -import Simplex.Chat.Messages -import Simplex.Chat.Messages.CIContent -import Simplex.Chat.Options -import Simplex.Chat.Protocol (MsgContent (..)) import Simplex.Chat.Terminal (terminalChatConfig) -import Simplex.Chat.Types -import System.Directory (getAppUserDataDirectory) main :: IO () main = do opts <- welcomeGetOpts simplexChatCore terminalChatConfig (mkChatOpts opts) Nothing $ broadcastBot opts - -welcomeGetOpts :: IO BroadcastBotOpts -welcomeGetOpts = do - appDir <- getAppUserDataDirectory "simplex" - opts@BroadcastBotOpts {coreOptions = CoreChatOpts {dbFilePrefix}} <- getBroadcastBotOpts appDir "simplex_status_bot" - putStrLn $ "SimpleX Chat Bot v" ++ versionNumber - putStrLn $ "db: " <> dbFilePrefix <> "_chat.db, " <> dbFilePrefix <> "_agent.db" - pure opts - -broadcastBot :: BroadcastBotOpts -> User -> ChatController -> IO () -broadcastBot BroadcastBotOpts {publishers, welcomeMessage, prohibitedMessage} _user cc = do - initializeBotAddress cc - race_ (forever $ void getLine) . forever $ do - (_, resp) <- atomically . readTBQueue $ outputQ cc - case resp of - CRContactConnected _ ct _ -> do - contactConnected ct - sendMessage cc ct welcomeMessage - CRNewChatItem _ (AChatItem _ SMDRcv (DirectChat ct) ci@ChatItem {content = CIRcvMsgContent mc}) - | publisher `elem` publishers -> - if allowContent mc - then do - sendChatCmd cc "/contacts" >>= \case - CRContactsList _ cts -> void . forkIO $ do - let cts' = filter broadcastTo cts - forM_ cts' $ \ct' -> sendComposedMessage cc ct' Nothing mc - sendReply $ "Forwarded to " <> show (length cts') <> " contact(s)" - r -> putStrLn $ "Error getting contacts list: " <> show r - else sendReply "!1 Message is not supported!" - | otherwise -> do - sendReply prohibitedMessage - deleteMessage cc ct $ chatItemId' ci - where - sendReply = sendComposedMessage cc ct (Just $ chatItemId' ci) . textMsgContent - publisher = Publisher {contactId = contactId' ct, localDisplayName = localDisplayName' ct} - allowContent = \case - MCText _ -> True - MCLink {} -> True - MCImage {} -> True - _ -> False - broadcastTo ct'@Contact {activeConn = conn@Connection {connStatus}} = - (connStatus == ConnSndReady || connStatus == ConnReady) - && not (connDisabled conn) - && contactId' ct' /= contactId' ct - _ -> pure () - where - contactConnected ct = putStrLn $ T.unpack (localDisplayName' ct) <> " connected" diff --git a/apps/simplex-broadcast-bot/src/Broadcast/Bot.hs b/apps/simplex-broadcast-bot/src/Broadcast/Bot.hs new file mode 100644 index 0000000000..3a1be2ae08 --- /dev/null +++ b/apps/simplex-broadcast-bot/src/Broadcast/Bot.hs @@ -0,0 +1,71 @@ +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} + +module Broadcast.Bot where + +import Control.Concurrent (forkIO) +import Control.Concurrent.Async +import Control.Concurrent.STM +import Control.Monad.Reader +import qualified Data.Text as T +import Broadcast.Options +import Simplex.Chat.Bot +import Simplex.Chat.Bot.KnownContacts +import Simplex.Chat.Controller +import Simplex.Chat.Core +import Simplex.Chat.Messages +import Simplex.Chat.Messages.CIContent +import Simplex.Chat.Options +import Simplex.Chat.Protocol (MsgContent (..)) +import Simplex.Chat.Types +import System.Directory (getAppUserDataDirectory) + +welcomeGetOpts :: IO BroadcastBotOpts +welcomeGetOpts = do + appDir <- getAppUserDataDirectory "simplex" + opts@BroadcastBotOpts {coreOptions = CoreChatOpts {dbFilePrefix}} <- getBroadcastBotOpts appDir "simplex_status_bot" + putStrLn $ "SimpleX Chat Bot v" ++ versionNumber + putStrLn $ "db: " <> dbFilePrefix <> "_chat.db, " <> dbFilePrefix <> "_agent.db" + pure opts + +broadcastBot :: BroadcastBotOpts -> User -> ChatController -> IO () +broadcastBot BroadcastBotOpts {publishers, welcomeMessage, prohibitedMessage} _user cc = do + initializeBotAddress cc + race_ (forever $ void getLine) . forever $ do + (_, resp) <- atomically . readTBQueue $ outputQ cc + case resp of + CRContactConnected _ ct _ -> do + contactConnected ct + sendMessage cc ct welcomeMessage + CRNewChatItem _ (AChatItem _ SMDRcv (DirectChat ct) ci@ChatItem {content = CIRcvMsgContent mc}) + | publisher `elem` publishers -> + if allowContent mc + then do + sendChatCmd cc ListContacts >>= \case + CRContactsList _ cts -> void . forkIO $ do + let cts' = filter broadcastTo cts + forM_ cts' $ \ct' -> sendComposedMessage cc ct' Nothing mc + sendReply $ "Forwarded to " <> show (length cts') <> " contact(s)" + r -> putStrLn $ "Error getting contacts list: " <> show r + else sendReply "!1 Message is not supported!" + | otherwise -> do + sendReply prohibitedMessage + deleteMessage cc ct $ chatItemId' ci + where + sendReply = sendComposedMessage cc ct (Just $ chatItemId' ci) . textMsgContent + publisher = KnownContact {contactId = contactId' ct, localDisplayName = localDisplayName' ct} + allowContent = \case + MCText _ -> True + MCLink {} -> True + MCImage {} -> True + _ -> False + broadcastTo ct'@Contact {activeConn = conn@Connection {connStatus}} = + (connStatus == ConnSndReady || connStatus == ConnReady) + && not (connDisabled conn) + && contactId' ct' /= contactId' ct + _ -> pure () + where + contactConnected ct = putStrLn $ T.unpack (localDisplayName' ct) <> " connected" diff --git a/apps/simplex-broadcast-bot/Options.hs b/apps/simplex-broadcast-bot/src/Broadcast/Options.hs similarity index 69% rename from apps/simplex-broadcast-bot/Options.hs rename to apps/simplex-broadcast-bot/src/Broadcast/Options.hs index 994884760d..76b349a499 100644 --- a/apps/simplex-broadcast-bot/Options.hs +++ b/apps/simplex-broadcast-bot/src/Broadcast/Options.hs @@ -4,48 +4,33 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} -module Options where +module Broadcast.Options where -import qualified Data.Attoparsec.ByteString.Char8 as A -import Data.Int (Int64) import Data.Maybe (fromMaybe) -import Data.Text (Text) -import qualified Data.Text as T -import Data.Text.Encoding (encodeUtf8) import Options.Applicative +import Simplex.Chat.Bot.KnownContacts import Simplex.Chat.Controller (updateStr, versionNumber, versionString) import Simplex.Chat.Options (ChatOpts (..), CoreChatOpts, coreChatOptsP) -import Simplex.Messaging.Parsers (parseAll) -import Simplex.Messaging.Util (safeDecodeUtf8) - -data Publisher = Publisher - { contactId :: Int64, - localDisplayName :: Text - } - deriving (Eq) data BroadcastBotOpts = BroadcastBotOpts { coreOptions :: CoreChatOpts, - publishers :: [Publisher], + publishers :: [KnownContact], welcomeMessage :: String, prohibitedMessage :: String } -defaultWelcomeMessage :: [Publisher] -> String -defaultWelcomeMessage ps = "Hello! I am a broadcast bot.\nI broadcast messages to all connected users from " <> publisherNames ps <> "." +defaultWelcomeMessage :: [KnownContact] -> String +defaultWelcomeMessage ps = "Hello! I am a broadcast bot.\nI broadcast messages to all connected users from " <> knownContactNames ps <> "." -defaultProhibitedMessage :: [Publisher] -> String -defaultProhibitedMessage ps = "Sorry, only these users can broadcast messages: " <> publisherNames ps <> ". Your message is deleted." - -publisherNames :: [Publisher] -> String -publisherNames = T.unpack . T.intercalate ", " . map (("@" <>) . localDisplayName) +defaultProhibitedMessage :: [KnownContact] -> String +defaultProhibitedMessage ps = "Sorry, only these users can broadcast messages: " <> knownContactNames ps <> ". Your message is deleted." broadcastBotOpts :: FilePath -> FilePath -> Parser BroadcastBotOpts broadcastBotOpts appDir defaultDbFileName = do coreOptions <- coreChatOptsP appDir defaultDbFileName publishers <- option - parsePublishers + parseKnownContacts ( long "publishers" <> metavar "PUBLISHERS" <> help "Comma-separated list of publishers in the format CONTACT_ID:DISPLAY_NAME whose messages will be broadcasted" @@ -74,17 +59,6 @@ broadcastBotOpts appDir defaultDbFileName = do prohibitedMessage = fromMaybe (defaultProhibitedMessage publishers) prohibitedMessage_ } -parsePublishers :: ReadM [Publisher] -parsePublishers = eitherReader $ parseAll publishersP . encodeUtf8 . T.pack - -publishersP :: A.Parser [Publisher] -publishersP = publisherP `A.sepBy1` A.char ',' - where - publisherP = do - contactId <- A.decimal <* A.char ':' - localDisplayName <- safeDecodeUtf8 <$> A.takeTill (A.inClass ", ") - pure Publisher {contactId, localDisplayName} - getBroadcastBotOpts :: FilePath -> FilePath -> IO BroadcastBotOpts getBroadcastBotOpts appDir defaultDbFileName = execParser $ diff --git a/apps/simplex-chat/Main.hs b/apps/simplex-chat/Main.hs index b16bbd8ee2..8dd02623e2 100644 --- a/apps/simplex-chat/Main.hs +++ b/apps/simplex-chat/Main.hs @@ -28,7 +28,7 @@ main = do t <- withTerminal pure simplexChatTerminal terminalChatConfig opts t else simplexChatCore terminalChatConfig opts Nothing $ \user cc -> do - r <- sendChatCmd cc chatCmd + r <- sendChatCmdStr cc chatCmd ts <- getCurrentTime tz <- getCurrentTimeZone putStrLn $ serializeChatResponse (Just user) ts tz r diff --git a/apps/simplex-directory-service/Main.hs b/apps/simplex-directory-service/Main.hs new file mode 100644 index 0000000000..103f382461 --- /dev/null +++ b/apps/simplex-directory-service/Main.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE NamedFieldPuns #-} + +module Main where + +import Directory.Options +import Directory.Service +import Directory.Store +import Simplex.Chat.Core +import Simplex.Chat.Terminal (terminalChatConfig) + +main :: IO () +main = do + opts@DirectoryOpts {directoryLog} <- welcomeGetOpts + st <- getDirectoryStore directoryLog + simplexChatCore terminalChatConfig (mkChatOpts opts) Nothing $ directoryService st opts diff --git a/apps/simplex-directory-service/README.md b/apps/simplex-directory-service/README.md new file mode 100644 index 0000000000..b64e018adb --- /dev/null +++ b/apps/simplex-directory-service/README.md @@ -0,0 +1,5 @@ +# SimpleX Directory Service + +The service is currently a chat bot that allows to register and search for groups. + +Superusers are configured via CLI options. diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs new file mode 100644 index 0000000000..01bb181f84 --- /dev/null +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -0,0 +1,139 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE KindSignatures #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE StandaloneDeriving #-} + +module Directory.Events where + +import Control.Applicative ((<|>)) +import Data.Attoparsec.Text (Parser) +import qualified Data.Attoparsec.Text as A +import Data.Text (Text) +import qualified Data.Text as T +import Directory.Store +import Simplex.Chat.Controller +import Simplex.Chat.Messages +import Simplex.Chat.Messages.CIContent +import Simplex.Chat.Protocol (MsgContent (..)) +import Simplex.Chat.Types +import Data.Char (isSpace) +import Data.Either (fromRight) + +data DirectoryEvent + = DEContactConnected Contact + | DEGroupInvitation {contact :: Contact, groupInfo :: GroupInfo, fromMemberRole :: GroupMemberRole, memberRole :: GroupMemberRole} + | DEServiceJoinedGroup ContactId GroupInfo + | DEGroupUpdated {contactId :: ContactId, fromGroup :: GroupInfo, toGroup :: GroupInfo} + | DEContactRoleChanged ContactId GroupInfo GroupMemberRole + | DEServiceRoleChanged GroupInfo GroupMemberRole + | DEContactRemovedFromGroup ContactId GroupInfo + | DEContactLeftGroup ContactId GroupInfo + | DEServiceRemovedFromGroup GroupInfo + | DEGroupDeleted GroupInfo + | DEUnsupportedMessage Contact ChatItemId + | DEItemEditIgnored Contact + | DEItemDeleteIgnored Contact + | DEContactCommand Contact ChatItemId ADirectoryCmd + +crDirectoryEvent :: ChatResponse -> Maybe DirectoryEvent +crDirectoryEvent = \case + CRContactConnected {contact} -> Just $ DEContactConnected contact + CRReceivedGroupInvitation {contact, groupInfo, fromMemberRole, memberRole} -> Just $ DEGroupInvitation {contact, groupInfo, fromMemberRole, memberRole} + CRUserJoinedGroup {groupInfo, hostMember} -> (`DEServiceJoinedGroup` groupInfo) <$> memberContactId hostMember + CRGroupUpdated {fromGroup, toGroup, member_} -> (\contactId -> DEGroupUpdated {contactId, fromGroup, toGroup}) <$> (memberContactId =<< member_) + CRMemberRole {groupInfo, member, toRole} -> (\ctId -> DEContactRoleChanged ctId groupInfo toRole) <$> memberContactId member + CRMemberRoleUser {groupInfo, toRole} -> Just $ DEServiceRoleChanged groupInfo toRole + CRDeletedMember {groupInfo, deletedMember} -> (`DEContactRemovedFromGroup` groupInfo) <$> memberContactId deletedMember + CRLeftMember {groupInfo, member} -> (`DEContactLeftGroup` groupInfo) <$> memberContactId member + CRDeletedMemberUser {groupInfo} -> Just $ DEServiceRemovedFromGroup groupInfo + CRGroupDeleted {groupInfo} -> Just $ DEGroupDeleted groupInfo + CRChatItemUpdated {chatItem = AChatItem _ SMDRcv (DirectChat ct) _} -> Just $ DEItemEditIgnored ct + CRChatItemDeleted {deletedChatItem = AChatItem _ SMDRcv (DirectChat ct) _, byUser = False} -> Just $ DEItemDeleteIgnored ct + CRNewChatItem {chatItem = AChatItem _ SMDRcv (DirectChat ct) ci@ChatItem {content = CIRcvMsgContent mc, meta = CIMeta {itemLive}}} -> + Just $ case (mc, itemLive) of + (MCText t, Nothing) -> DEContactCommand ct ciId $ fromRight err $ A.parseOnly directoryCmdP $ T.dropWhileEnd isSpace t + _ -> DEUnsupportedMessage ct ciId + where + ciId = chatItemId' ci + err = ADC SDRUser DCUnknownCommand + _ -> Nothing + +data DirectoryRole = DRUser | DRSuperUser + +data SDirectoryRole (r :: DirectoryRole) where + SDRUser :: SDirectoryRole 'DRUser + SDRSuperUser :: SDirectoryRole 'DRSuperUser + +data DirectoryCmdTag (r :: DirectoryRole) where + DCHelp_ :: DirectoryCmdTag 'DRUser + DCConfirmDuplicateGroup_ :: DirectoryCmdTag 'DRUser + DCListUserGroups_ :: DirectoryCmdTag 'DRUser + DCDeleteGroup_ :: DirectoryCmdTag 'DRUser + DCApproveGroup_ :: DirectoryCmdTag 'DRSuperUser + DCRejectGroup_ :: DirectoryCmdTag 'DRSuperUser + DCSuspendGroup_ :: DirectoryCmdTag 'DRSuperUser + DCResumeGroup_ :: DirectoryCmdTag 'DRSuperUser + DCListGroups_ :: DirectoryCmdTag 'DRSuperUser + +deriving instance Show (DirectoryCmdTag r) + +data ADirectoryCmdTag = forall r. ADCT (SDirectoryRole r) (DirectoryCmdTag r) + +data DirectoryCmd (r :: DirectoryRole) where + DCHelp :: DirectoryCmd 'DRUser + DCSearchGroup :: Text -> DirectoryCmd 'DRUser + DCConfirmDuplicateGroup :: UserGroupRegId -> GroupName -> DirectoryCmd 'DRUser + DCListUserGroups :: DirectoryCmd 'DRUser + DCDeleteGroup :: UserGroupRegId -> GroupName -> DirectoryCmd 'DRUser + DCApproveGroup :: {groupId :: GroupId, localDisplayName :: GroupName, groupApprovalId :: GroupApprovalId} -> DirectoryCmd 'DRSuperUser + DCRejectGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser + DCSuspendGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser + DCResumeGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser + DCListGroups :: DirectoryCmd 'DRSuperUser + DCUnknownCommand :: DirectoryCmd 'DRUser + DCCommandError :: DirectoryCmdTag r -> DirectoryCmd r + +data ADirectoryCmd = forall r. ADC (SDirectoryRole r) (DirectoryCmd r) + +directoryCmdP :: Parser ADirectoryCmd +directoryCmdP = + (A.char '/' *> cmdStrP) <|> (ADC SDRUser . DCSearchGroup <$> A.takeText) + where + cmdStrP = + (tagP >>= \(ADCT u t) -> ADC u <$> (cmdP t <|> pure (DCCommandError t))) + <|> pure (ADC SDRUser DCUnknownCommand) + tagP = A.takeTill (== ' ') >>= \case + "help" -> u DCHelp_ + "h" -> u DCHelp_ + "confim" -> u DCConfirmDuplicateGroup_ + "list" -> u DCListUserGroups_ + "delete" -> u DCDeleteGroup_ + "approve" -> su DCApproveGroup_ + "reject" -> su DCRejectGroup_ + "suspend" -> su DCSuspendGroup_ + "resume" -> su DCResumeGroup_ + "all" -> su DCListGroups_ + _ -> fail "bad command tag" + where + u = pure . ADCT SDRUser + su = pure . ADCT SDRSuperUser + cmdP :: DirectoryCmdTag r -> Parser (DirectoryCmd r) + cmdP = \case + DCHelp_ -> pure DCHelp + DCConfirmDuplicateGroup_ -> gc DCConfirmDuplicateGroup + DCListUserGroups_ -> pure DCListUserGroups + DCDeleteGroup_ -> gc DCDeleteGroup + DCApproveGroup_ -> do + (groupId, localDisplayName) <- gc (,) + groupApprovalId <- A.space *> A.decimal + pure $ DCApproveGroup {groupId, localDisplayName, groupApprovalId} + DCRejectGroup_ -> gc DCRejectGroup + DCSuspendGroup_ -> gc DCSuspendGroup + DCResumeGroup_ -> gc DCResumeGroup + DCListGroups_ -> pure DCListGroups + where + gc f = f <$> (A.space *> A.decimal <* A.char ':') <*> A.takeTill (== ' ') diff --git a/apps/simplex-directory-service/src/Directory/Options.hs b/apps/simplex-directory-service/src/Directory/Options.hs new file mode 100644 index 0000000000..1bdde35923 --- /dev/null +++ b/apps/simplex-directory-service/src/Directory/Options.hs @@ -0,0 +1,77 @@ +{-# LANGUAGE ApplicativeDo #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} + +module Directory.Options where + +import Options.Applicative +import Simplex.Chat.Bot.KnownContacts +import Simplex.Chat.Controller (updateStr, versionNumber, versionString) +import Simplex.Chat.Options (ChatOpts (..), CoreChatOpts, coreChatOptsP) + +data DirectoryOpts = DirectoryOpts + { coreOptions :: CoreChatOpts, + superUsers :: [KnownContact], + directoryLog :: FilePath, + serviceName :: String + } + +directoryOpts :: FilePath -> FilePath -> Parser DirectoryOpts +directoryOpts appDir defaultDbFileName = do + coreOptions <- coreChatOptsP appDir defaultDbFileName + superUsers <- + option + parseKnownContacts + ( long "super-users" + <> metavar "SUPER_USERS" + <> help "Comma-separated list of super-users in the format CONTACT_ID:DISPLAY_NAME who will be allowed to manage the directory" + <> value [] + ) + directoryLog <- + strOption + ( long "directory-file" + <> metavar "DIRECTORY_FILE" + <> help "Append only log for directory state" + ) + serviceName <- + strOption + ( long "service-name" + <> metavar "SERVICE_NAME" + <> help "The display name of the directory service bot, without *'s and spaces (SimpleX-Directory)" + <> value "SimpleX-Directory" + ) + pure + DirectoryOpts + { coreOptions, + superUsers, + directoryLog, + serviceName + } + +getDirectoryOpts :: FilePath -> FilePath -> IO DirectoryOpts +getDirectoryOpts appDir defaultDbFileName = + execParser $ + info + (helper <*> versionOption <*> directoryOpts appDir defaultDbFileName) + (header versionStr <> fullDesc <> progDesc "Start SimpleX Directory Service with DB_FILE, DIRECTORY_FILE and SUPER_USERS options") + where + versionStr = versionString versionNumber + versionOption = infoOption versionAndUpdate (long "version" <> short 'v' <> help "Show version") + versionAndUpdate = versionStr <> "\n" <> updateStr + +mkChatOpts :: DirectoryOpts -> ChatOpts +mkChatOpts DirectoryOpts {coreOptions} = + ChatOpts + { coreOptions, + chatCmd = "", + chatCmdDelay = 3, + chatServerPort = Nothing, + optFilesFolder = Nothing, + showReactions = False, + allowInstantFiles = True, + autoAcceptFileSize = 0, + muteNotifications = True, + maintenance = False + } diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs new file mode 100644 index 0000000000..07cd9203e9 --- /dev/null +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -0,0 +1,331 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE MultiWayIf #-} + +module Directory.Service + ( welcomeGetOpts, + directoryService, + ) +where + +import Control.Concurrent (forkIO) +import Control.Concurrent.Async +import Control.Concurrent.STM +import Control.Monad.Reader +import qualified Data.ByteString.Char8 as B +import Data.Maybe (fromMaybe) +import qualified Data.Text as T +import Directory.Events +import Directory.Options +import Directory.Store +import Simplex.Chat.Bot +import Simplex.Chat.Bot.KnownContacts +import Simplex.Chat.Controller +import Simplex.Chat.Core +import Simplex.Chat.Messages +-- import Simplex.Chat.Messages.CIContent +import Simplex.Chat.Options +import Simplex.Chat.Protocol (MsgContent (..)) +import Simplex.Chat.Types +import Simplex.Messaging.Encoding.String +import Simplex.Messaging.Util (safeDecodeUtf8, tshow) +import System.Directory (getAppUserDataDirectory) + +data GroupProfileUpdate = GPNoServiceLink | GPServiceLinkAdded | GPServiceLinkRemoved | GPHasServiceLink | GPServiceLinkError + +welcomeGetOpts :: IO DirectoryOpts +welcomeGetOpts = do + appDir <- getAppUserDataDirectory "simplex" + opts@DirectoryOpts {coreOptions = CoreChatOpts {dbFilePrefix}} <- getDirectoryOpts appDir "simplex_directory_service" + putStrLn $ "SimpleX Directory Service Bot v" ++ versionNumber + putStrLn $ "db: " <> dbFilePrefix <> "_chat.db, " <> dbFilePrefix <> "_agent.db" + pure opts + +directoryService :: DirectoryStore -> DirectoryOpts -> User -> ChatController -> IO () +directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = do + initializeBotAddress cc + race_ (forever $ void getLine) . forever $ do + (_, resp) <- atomically . readTBQueue $ outputQ cc + forM_ (crDirectoryEvent resp) $ \case + DEContactConnected ct -> deContactConnected ct + DEGroupInvitation {contact = ct, groupInfo = g, fromMemberRole, memberRole} -> deGroupInvitation ct g fromMemberRole memberRole + DEServiceJoinedGroup ctId g -> deServiceJoinedGroup ctId g + DEGroupUpdated {contactId, fromGroup, toGroup} -> deGroupUpdated contactId fromGroup toGroup + DEContactRoleChanged ctId g role -> deContactRoleChanged ctId g role + DEServiceRoleChanged g role -> deServiceRoleChanged g role + DEContactRemovedFromGroup ctId g -> deContactRemovedFromGroup ctId g + DEContactLeftGroup ctId g -> deContactLeftGroup ctId g + DEServiceRemovedFromGroup g -> deServiceRemovedFromGroup g + DEGroupDeleted _g -> pure () + DEUnsupportedMessage _ct _ciId -> pure () + DEItemEditIgnored _ct -> pure () + DEItemDeleteIgnored _ct -> pure () + DEContactCommand ct ciId aCmd -> case aCmd of + ADC SDRUser cmd -> deUserCommand ct ciId cmd + ADC SDRSuperUser cmd -> deSuperUserCommand ct ciId cmd + where + withSuperUsers action = void . forkIO $ forM_ superUsers $ \KnownContact {contactId} -> action contactId + notifySuperUsers s = withSuperUsers $ \contactId -> sendMessage' cc contactId s + -- withContact ctId GroupInfo {localDisplayName} err action = do + -- getContact cc ctId >>= \case + -- Just ct -> action ct + -- Nothing -> putStrLn $ T.unpack $ "Error: " <> err <> ", group: " <> localDisplayName <> ", can't find contact ID " <> tshow ctId + notifyOwner GroupReg {dbContactId} = sendMessage' cc dbContactId + ctId `isOwner` GroupReg {dbContactId} = ctId == dbContactId + withGroupReg GroupInfo {groupId, localDisplayName} err action = do + atomically (getGroupReg st groupId) >>= \case + Just gr -> action gr + Nothing -> putStrLn $ T.unpack $ "Error: " <> err <> ", group: " <> localDisplayName <> ", can't find group registration ID " <> tshow groupId + setGroupInactive GroupReg {groupRegStatus, dbGroupId} grStatus = atomically $ do + writeTVar groupRegStatus grStatus + unlistGroup st dbGroupId + + groupInfoText GroupProfile {displayName = n, fullName = fn, description = d} = + n <> (if n == fn || T.null fn then "" else " (" <> fn <> ")") <> maybe "" ("\nWelcome message:\n" <>) d + groupReference GroupInfo {groupId, groupProfile = p'@GroupProfile {displayName}} = + "ID " <> show groupId <> " (" <> T.unpack displayName <> ")" + + deContactConnected :: Contact -> IO () + deContactConnected ct = do + putStrLn $ T.unpack (localDisplayName' ct) <> " connected" + sendMessage cc ct $ + "Welcome to " <> serviceName <> " service!\n\ + \Send a search string to find groups or */help* to learn how to add groups to directory.\n\n\ + \For example, send _privacy_ to find groups about privacy." + + deGroupInvitation :: Contact -> GroupInfo -> GroupMemberRole -> GroupMemberRole -> IO () + deGroupInvitation ct g fromMemberRole memberRole = + case badInvitation fromMemberRole memberRole of + -- TODO check duplicate group name and ask to confirm + Just msg -> sendMessage cc ct msg + Nothing -> do + let GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = g + atomically $ addGroupReg st ct g + r <- sendChatCmd cc $ APIJoinGroup groupId + sendMessage cc ct $ T.unpack $ case r of + CRUserAcceptedGroupSent {} -> "Joining the group #" <> displayName <> "…" + _ -> "Error joining group " <> displayName <> ", please re-send the invitation!" + + deServiceJoinedGroup :: ContactId -> GroupInfo -> IO () + deServiceJoinedGroup ctId g = + withGroupReg g "joined group" $ \gr -> + when (ctId `isOwner` gr) $ do + let GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = g + notifyOwner gr $ T.unpack $ "Joined the group #" <> displayName <> ", creating the link…" + sendChatCmd cc (APICreateGroupLink groupId GRMember) >>= \case + CRGroupLinkCreated {connReqContact} -> do + setGroupInactive gr GRSPendingUpdate + notifyOwner gr + "Created the public link to join the group via this directory service that is always online.\n\n\ + \Please add it to the group welcome message.\n\ + \For example, add:" + notifyOwner gr $ "Link to join the group " <> T.unpack displayName <> ": " <> B.unpack (strEncode connReqContact) + CRChatCmdError _ (ChatError e) -> case e of + CEGroupUserRole {} -> notifyOwner gr "Failed creating group link, as service is no longer an admin." + CEGroupMemberUserRemoved -> notifyOwner gr "Failed creating group link, as service is removed from the group." + CEGroupNotJoined _ -> notifyOwner gr $ unexpectedError "group not joined" + CEGroupMemberNotActive -> notifyOwner gr $ unexpectedError "service membership is not active" + _ -> notifyOwner gr $ unexpectedError "can't create group link" + _ -> notifyOwner gr $ unexpectedError "can't create group link" + + deGroupUpdated :: ContactId -> GroupInfo -> GroupInfo -> IO () + deGroupUpdated ctId fromGroup toGroup = + unless (sameProfile p p') $ do + atomically $ unlistGroup st groupId + withGroupReg toGroup "group updated" $ \gr -> do + readTVarIO (groupRegStatus gr) >>= \case + GRSPendingConfirmation -> pure () + GRSProposed -> pure () + GRSPendingUpdate -> groupProfileUpdate >>= \case + GPNoServiceLink -> + when (ctId `isOwner` gr) $ notifyOwner gr $ "The profile updated for " <> groupRef <> ", but the group link is not added to the welcome message." + GPServiceLinkAdded + | ctId `isOwner` gr -> groupLinkAdded gr + | otherwise -> notifyOwner gr "The group link is added by another group member, your registration will not be processed.\n\nPlease update the group profile yourself." + GPServiceLinkRemoved -> when (ctId `isOwner` gr) $ notifyOwner gr $ "The group link of " <> groupRef <> " is removed from the welcome message, please add it." + GPHasServiceLink -> when (ctId `isOwner` gr) $ groupLinkAdded gr + GPServiceLinkError -> do + when (ctId `isOwner` gr) $ notifyOwner gr $ "Error: " <> serviceName <> " has no group link for " <> groupRef <> ". Please report the error to the developers." + putStrLn $ "Error: no group link for " <> groupRef + GRSPendingApproval n -> processProfileChange gr $ n + 1 + GRSActive -> processProfileChange gr 1 + GRSSuspended -> processProfileChange gr 1 + GRSRemoved -> pure () + where + isInfix l d_ = l `T.isInfixOf` fromMaybe "" d_ + GroupInfo {groupId, groupProfile = p} = fromGroup + GroupInfo {localDisplayName, groupProfile = p'@GroupProfile {image = image'}} = toGroup + groupRef = groupReference toGroup + sameProfile + GroupProfile {displayName = n, fullName = fn, image = i, description = d} + GroupProfile {displayName = n', fullName = fn', image = i', description = d'} = + n == n' && fn == fn' && i == i' && d == d' + groupLinkAdded gr = do + notifyOwner gr $ "Thank you! The group link for " <> groupRef <> " is added to the welcome message.\nYou will be notified once the group is added to the directory - it may take up to 24 hours." + let gaId = 1 + setGroupInactive gr $ GRSPendingApproval gaId + sendForApproval gr gaId + processProfileChange gr n' = groupProfileUpdate >>= \case + GPNoServiceLink -> do + setGroupInactive gr GRSPendingUpdate + notifyOwner gr $ "The group profile is updated " <> groupRef <> ", but no link is added to the welcome message.\n\nThe group will remain hidden from the directory until the group link is added and the group is re-approved." + GPServiceLinkRemoved -> do + setGroupInactive gr GRSPendingUpdate + notifyOwner gr $ "The group link for " <> groupRef <> " is removed from the welcome message.\n\nThe group is hidden from the directory until the group link is added and the group is re-approved." + notifySuperUsers $ "The group link is removed from " <> groupRef <> ", de-listed." + GPServiceLinkAdded -> do + setGroupInactive gr $ GRSPendingApproval n' + notifyOwner gr $ "The group link is added to " <> groupRef <> "!\nIt is hidden from the directory until approved." + notifySuperUsers $ "The group link is added to " <> groupRef <> "." + sendForApproval gr n' + GPHasServiceLink -> do + setGroupInactive gr $ GRSPendingApproval n' + notifyOwner gr $ "The group " <> groupRef <> " is updated!\nIt is hidden from the directory until approved." + notifySuperUsers $ "The group " <> groupRef <> " is updated." + sendForApproval gr n' + GPServiceLinkError -> putStrLn $ "Error: no group link for " <> groupRef <> " pending approval." + groupProfileUpdate = profileUpdate <$> sendChatCmd cc (APIGetGroupLink groupId) + where + profileUpdate = \case + CRGroupLink {connReqContact} -> + let groupLink = safeDecodeUtf8 $ strEncode connReqContact + hadLinkBefore = groupLink `isInfix` description p + hasLinkNow = groupLink `isInfix` description p' + in if + | hadLinkBefore && hasLinkNow -> GPHasServiceLink + | hadLinkBefore -> GPServiceLinkRemoved + | hasLinkNow -> GPServiceLinkAdded + | otherwise -> GPNoServiceLink + _ -> GPServiceLinkError + sendForApproval GroupReg {dbGroupId, dbContactId} gaId = do + ct_ <- getContact cc dbContactId + let text = maybe ("The group ID " <> tshow dbGroupId <> " submitted: ") (\c -> localDisplayName' c <> " submitted the group ID " <> tshow dbGroupId <> ": ") ct_ + <> groupInfoText p' <> "\n\nTo approve send:" + msg = maybe (MCText text) (\image -> MCImage {text, image}) image' + withSuperUsers $ \cId -> do + sendComposedMessage' cc cId Nothing msg + sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack localDisplayName <> " " <> show gaId + + deContactRoleChanged :: ContactId -> GroupInfo -> GroupMemberRole -> IO () + deContactRoleChanged ctId g role = undefined + + deServiceRoleChanged :: GroupInfo -> GroupMemberRole -> IO () + deServiceRoleChanged g role = undefined + + deContactRemovedFromGroup :: ContactId -> GroupInfo -> IO () + deContactRemovedFromGroup ctId g = + withGroupReg g "contact removed" $ \gr -> do + when (ctId `isOwner` gr) $ do + setGroupInactive gr GRSRemoved + let groupRef = groupReference g + notifyOwner gr $ "You are removed from the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifySuperUsers $ "The group " <> groupRef <> " is de-listed (group owner is removed)." + + deContactLeftGroup :: ContactId -> GroupInfo -> IO () + deContactLeftGroup ctId g = + withGroupReg g "contact left" $ \gr -> do + when (ctId `isOwner` gr) $ do + setGroupInactive gr GRSRemoved + let groupRef = groupReference g + notifyOwner gr $ "You left the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifySuperUsers $ "The group " <> groupRef <> " is de-listed (group owner left)." + + deServiceRemovedFromGroup :: GroupInfo -> IO () + deServiceRemovedFromGroup g = + withGroupReg g "service removed" $ \gr -> do + setGroupInactive gr GRSRemoved + let groupRef = groupReference g + notifyOwner gr $ serviceName <> " is removed from the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifySuperUsers $ "The group " <> groupRef <> " is de-listed (directory service is removed)." + + deUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRUser -> IO () + deUserCommand ct ciId = \case + DCHelp -> + sendMessage cc ct $ + "You must be the owner to add the group to the directory:\n\ + \1. Invite " <> serviceName <> " bot to your group as *admin*.\n\ + \2. " <> serviceName <> " bot will create a public group link for the new members to join even when you are offline.\n\ + \3. You will then need to add this link to the group welcome message.\n\ + \4. Once the link is added, service admins will approve the group (it can take up to 24 hours), and everybody will be able to find it in directory.\n\n\ + \Start from inviting the bot to your group as admin - it will guide you through the process" + DCSearchGroup s -> do + sendChatCmd cc (APIListGroups userId Nothing $ Just $ T.unpack s) >>= \case + CRGroupsList {groups} -> + atomically (filterListedGroups st groups) >>= \case + [] -> sendReply "No groups found" + gs -> do + sendReply $ "Found " <> show (length gs) <> " group(s)" + void . forkIO $ forM_ gs $ \GroupInfo {groupProfile = p@GroupProfile {image = image_}} -> do + let text = groupInfoText p + msg = maybe (MCText text) (\image -> MCImage {text, image}) image_ + sendComposedMessage cc ct Nothing msg + _ -> sendReply "Unexpected error" + DCConfirmDuplicateGroup _ugrId _gName -> pure () + DCListUserGroups -> pure () + DCDeleteGroup _ugrId _gName -> pure () + DCUnknownCommand -> sendReply "Unknown command" + DCCommandError tag -> sendReply $ "Command error: " <> show tag + where + sendReply = sendComposedMessage cc ct (Just ciId) . textMsgContent + + deSuperUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRSuperUser -> IO () + deSuperUserCommand ct ciId cmd + | superUser `elem` superUsers = case cmd of + DCApproveGroup {groupId, localDisplayName = n, groupApprovalId} -> + atomically (getGroupReg st groupId) >>= \case + Nothing -> sendMessage cc ct $ "Group ID " <> show groupId <> " not found" + Just GroupReg {dbContactId, groupRegStatus} -> do + readTVarIO groupRegStatus >>= \case + GRSPendingApproval gaId + | gaId == groupApprovalId -> do + getGroup cc groupId >>= \case + Just GroupInfo {localDisplayName = n'} + | n == n' -> do + atomically $ do + writeTVar groupRegStatus GRSActive + listGroup st groupId + sendReply "Group approved!" + sendMessage' cc dbContactId $ "The group ID " <> show groupId <> " (" <> T.unpack n <> ") is approved and listed in directory!\nPlease note: if you change the group profile it will be hidden from directory until it is re-approved." + | otherwise -> sendReply "Incorrect group name" + Nothing -> pure () + | otherwise -> sendReply "Incorrect approval code" + _ -> sendReply $ "Error: the group ID " <> show groupId <> " (" <> T.unpack n <> ") is not pending approval." + DCRejectGroup _gaId _gName -> pure () + DCSuspendGroup _gId _gName -> pure () + DCResumeGroup _gId _gName -> pure () + DCListGroups -> pure () + DCCommandError tag -> sendReply $ "Command error: " <> show tag + | otherwise = sendReply "You are not allowed to use this command" + where + superUser = KnownContact {contactId = contactId' ct, localDisplayName = localDisplayName' ct} + sendReply = sendComposedMessage cc ct (Just ciId) . textMsgContent + +badInvitation :: GroupMemberRole -> GroupMemberRole -> Maybe String +badInvitation contactRole serviceRole = case (contactRole, serviceRole) of + (GROwner, GRAdmin) -> Nothing + (_, GRAdmin) -> Just "You must have a group *owner* role to register the group" + (GROwner, _) -> Just "You must grant directory service *admin* role to register the group" + _ -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group" + +getContact :: ChatController -> ContactId -> IO (Maybe Contact) +getContact cc ctId = resp <$> sendChatCmd cc (APIGetChat (ChatRef CTDirect ctId) (CPLast 0) Nothing) + where + resp :: ChatResponse -> Maybe Contact + resp = \case + CRApiChat _ (AChat SCTDirect Chat {chatInfo = DirectChat ct}) -> Just ct + _ -> Nothing + +getGroup :: ChatController -> GroupId -> IO (Maybe GroupInfo) +getGroup cc gId = resp <$> sendChatCmd cc (APIGetChat (ChatRef CTGroup gId) (CPLast 0) Nothing) + where + resp :: ChatResponse -> Maybe GroupInfo + resp = \case + CRApiChat _ (AChat SCTGroup Chat {chatInfo = GroupChat g}) -> Just g + _ -> Nothing + +unexpectedError :: String -> String +unexpectedError err = "Unexpected error: " <> err <> ", please notify the developers." diff --git a/apps/simplex-directory-service/src/Directory/Store.hs b/apps/simplex-directory-service/src/Directory/Store.hs new file mode 100644 index 0000000000..f41a487e28 --- /dev/null +++ b/apps/simplex-directory-service/src/Directory/Store.hs @@ -0,0 +1,90 @@ +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE NamedFieldPuns #-} + +module Directory.Store where + +import Control.Concurrent.STM +import Data.Int (Int64) +import Data.Set (Set) +import Simplex.Chat.Types +import Data.List (find) +import qualified Data.Set as S + +data DirectoryStore = DirectoryStore + { groupRegs :: TVar [GroupReg], + listedGroups :: TVar (Set GroupId) + } + +data GroupReg = GroupReg + { userGroupRegId :: UserGroupRegId, + dbGroupId :: GroupId, + dbContactId :: ContactId, + groupRegStatus :: TVar GroupRegStatus + } + +type GroupRegId = Int64 + +type UserGroupRegId = Int64 + +type GroupApprovalId = Int64 + +data GroupRegStatus + = GRSPendingConfirmation + | GRSProposed + | GRSPendingUpdate + | GRSPendingApproval GroupApprovalId + | GRSActive + | GRSSuspended + | GRSRemoved + +addGroupReg :: DirectoryStore -> Contact -> GroupInfo -> STM () +addGroupReg st ct GroupInfo {groupId} = do + groupRegStatus <- newTVar GRSProposed + let gr = GroupReg {userGroupRegId = groupId, dbGroupId = groupId, dbContactId = contactId' ct, groupRegStatus} + modifyTVar' (groupRegs st) (gr :) + +getGroupReg :: DirectoryStore -> GroupRegId -> STM (Maybe GroupReg) +getGroupReg st gId = find ((gId ==) . dbGroupId) <$> readTVar (groupRegs st) + +getUserGroupRegId :: DirectoryStore -> ContactId -> UserGroupRegId -> STM (Maybe GroupReg) +getUserGroupRegId st ctId ugrId = find (\r -> ctId == dbContactId r && ugrId == userGroupRegId r) <$> readTVar (groupRegs st) + +getContactGroupRegs :: DirectoryStore -> ContactId -> STM [GroupReg] +getContactGroupRegs st ctId = filter ((ctId ==) . dbContactId) <$> readTVar (groupRegs st) + +filterListedGroups :: DirectoryStore -> [GroupInfo] -> STM [GroupInfo] +filterListedGroups st gs = do + lgs <- readTVar $ listedGroups st + pure $ filter (\GroupInfo {groupId} -> groupId `S.member` lgs) gs + +listGroup :: DirectoryStore -> GroupId -> STM () +listGroup st gId = modifyTVar' (listedGroups st) $ S.insert gId + +unlistGroup :: DirectoryStore -> GroupId -> STM () +unlistGroup st gId = modifyTVar' (listedGroups st) $ S.delete gId + +data DirectoryLogRecord + = CreateGroupReg GroupReg + | UpdateGroupRegStatus GroupRegId GroupRegStatus + +getDirectoryStore :: FilePath -> IO DirectoryStore +getDirectoryStore path = do + groupRegs <- readDirectoryState path + st <- atomically newDirectoryStore + atomically $ mapM_ (add st) groupRegs + pure st + where + add :: DirectoryStore -> GroupReg -> STM () + add st gr = modifyTVar' (groupRegs st) (gr :) -- TODO set listedGroups + +newDirectoryStore :: STM DirectoryStore +newDirectoryStore = do + groupRegs <- newTVar [] + listedGroups <- newTVar mempty + pure DirectoryStore {groupRegs, listedGroups} + +readDirectoryState :: FilePath -> IO [GroupReg] +readDirectoryState _ = pure [] + +writeDirectoryState :: FilePath -> [GroupReg] -> IO () +writeDirectoryState _ _ = pure () diff --git a/package.yaml b/package.yaml index 9b588b1bac..f1aadc926e 100644 --- a/package.yaml +++ b/package.yaml @@ -10,6 +10,7 @@ copyright: 2020-22 simplex.chat category: Web, System, Services, Cryptography extra-source-files: - README.md + - cabal.project dependencies: - aeson == 2.0.* @@ -91,8 +92,16 @@ executables: - -threaded simplex-broadcast-bot: - source-dirs: apps/simplex-broadcast-bot - main: Main.hs + source-dirs: apps/simplex-broadcast-bot/src + main: ../Main.hs + dependencies: + - simplex-chat + ghc-options: + - -threaded + + simplex-directory-service: + source-dirs: apps/simplex-directory-service/src + main: ../Main.hs dependencies: - simplex-chat ghc-options: @@ -100,7 +109,10 @@ executables: tests: simplex-chat-test: - source-dirs: tests + source-dirs: + - tests + - apps/simplex-broadcast-bot/src + - apps/simplex-directory-service/src main: Test.hs dependencies: - simplex-chat diff --git a/simplex-chat.cabal b/simplex-chat.cabal index f2ff5f8cc6..0c713cd3f6 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -28,6 +28,7 @@ library Simplex.Chat Simplex.Chat.Archive Simplex.Chat.Bot + Simplex.Chat.Bot.KnownContacts Simplex.Chat.Call Simplex.Chat.Controller Simplex.Chat.Core @@ -275,12 +276,13 @@ executable simplex-bot-advanced cpp-options: -DswiftJSON executable simplex-broadcast-bot - main-is: Main.hs + main-is: ../Main.hs other-modules: - Options + Broadcast.Bot + Broadcast.Options Paths_simplex_chat hs-source-dirs: - apps/simplex-broadcast-bot + apps/simplex-broadcast-bot/src ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded build-depends: aeson ==2.0.* @@ -375,10 +377,65 @@ executable simplex-chat if flag(swift) cpp-options: -DswiftJSON +executable simplex-directory-service + main-is: ../Main.hs + other-modules: + Directory.Events + Directory.Options + Directory.Service + Directory.Store + Paths_simplex_chat + hs-source-dirs: + apps/simplex-directory-service/src + ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded + build-depends: + aeson ==2.0.* + , ansi-terminal >=0.10 && <0.12 + , async ==2.2.* + , attoparsec ==0.14.* + , base >=4.7 && <5 + , base64-bytestring >=1.0 && <1.3 + , bytestring ==0.10.* + , composition ==1.0.* + , constraints >=0.12 && <0.14 + , containers ==0.6.* + , cryptonite >=0.27 && <0.30 + , direct-sqlcipher ==2.3.* + , directory ==1.3.* + , email-validate ==2.3.* + , exceptions ==0.10.* + , filepath ==1.4.* + , http-types ==0.12.* + , memory ==0.15.* + , mtl ==2.2.* + , network >=3.1.2.7 && <3.2 + , optparse-applicative >=0.15 && <0.17 + , process ==1.6.* + , random >=1.1 && <1.3 + , record-hasfield ==1.0.* + , simple-logger ==0.1.* + , simplex-chat + , simplexmq >=5.0 + , socks ==0.6.* + , sqlcipher-simple ==0.4.* + , stm ==2.5.* + , template-haskell ==2.16.* + , terminal ==0.2.* + , text ==1.2.* + , time ==1.9.* + , unliftio ==0.2.* + , unliftio-core ==0.2.* + , zip ==1.7.* + default-language: Haskell2010 + if flag(swift) + cpp-options: -DswiftJSON + test-suite simplex-chat-test type: exitcode-stdio-1.0 main-is: Test.hs other-modules: + Bots.BroadcastTests + Bots.DirectoryTests ChatClient ChatTests ChatTests.Direct @@ -392,9 +449,17 @@ test-suite simplex-chat-test SchemaDump ViewTests WebRTCTests + Broadcast.Bot + Broadcast.Options + Directory.Events + Directory.Options + Directory.Service + Directory.Store Paths_simplex_chat hs-source-dirs: tests + apps/simplex-broadcast-bot/src + apps/simplex-directory-service/src ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded build-depends: aeson ==2.0.* diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 79745f198b..95343fd9a5 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -332,7 +332,13 @@ execChatCommand s = do u <- readTVarIO =<< asks currentUser case parseChatCommand s of Left e -> pure $ chatCmdError u e - Right cmd -> either (CRChatCmdError u) id <$> runExceptT (processChatCommand cmd) + Right cmd -> execChatCommand_ u cmd + +execChatCommand' :: ChatMonad' m => ChatCommand -> m ChatResponse +execChatCommand' cmd = asks currentUser >>= readTVarIO >>= (`execChatCommand_` cmd) + +execChatCommand_ :: ChatMonad' m => Maybe User -> ChatCommand -> m ChatResponse +execChatCommand_ u cmd = either (CRChatCmdError u) id <$> runExceptT (processChatCommand cmd) parseChatCommand :: ByteString -> Either String ChatCommand parseChatCommand = A.parseOnly chatCommandP . B.dropWhileEnd isSpace @@ -1486,8 +1492,11 @@ processChatCommand = \case ListMembers gName -> withUser $ \user -> do groupId <- withStore $ \db -> getGroupIdByName db user gName processChatCommand $ APIListMembers groupId - ListGroups -> withUser $ \user -> - CRGroupsList user <$> withStore' (`getUserGroupDetails` user) + APIListGroups userId contactId_ search_ -> withUserId userId $ \user -> + CRGroupsList user <$> withStore' (\db -> getUserGroupDetails db user contactId_ search_) + ListGroups cName_ search_ -> withUser $ \user@User {userId} -> do + ct_ <- forM cName_ $ \cName -> withStore $ \db -> getContactByName db user cName + processChatCommand $ APIListGroups userId (contactId' <$> ct_) search_ APIUpdateGroupProfile groupId p' -> withUser $ \user -> do g <- withStore $ \db -> getGroup db user groupId runUpdateGroupProfile user g p' @@ -1497,6 +1506,8 @@ processChatCommand = \case CRGroupProfile user <$> withStore (\db -> getGroupInfoByName db user gName) UpdateGroupDescription gName description -> updateGroupProfileByName gName $ \p -> p {description} + ShowGroupDescription gName -> withUser $ \user -> + CRGroupDescription user <$> withStore (\db -> getGroupInfoByName db user gName) APICreateGroupLink groupId mRole -> withUser $ \user -> withChatLock "createGroupLink" $ do gInfo <- withStore $ \db -> getGroupInfo db user groupId assertUserGroupRole gInfo GRAdmin @@ -2534,7 +2545,7 @@ expireChatItems user@User {userId} ttl sync = do createdAtCutoff = addUTCTime (-43200 :: NominalDiffTime) currentTs contacts <- withStoreCtx' (Just "expireChatItems, getUserContacts") (`getUserContacts` user) loop contacts $ processContact expirationDate - groups <- withStoreCtx' (Just "expireChatItems, getUserGroupDetails") (`getUserGroupDetails` user) + groups <- withStoreCtx' (Just "expireChatItems, getUserGroupDetails") (\db -> getUserGroupDetails db user Nothing Nothing) loop groups $ processGroup expirationDate createdAtCutoff where loop :: [a] -> (a -> m ()) -> m () @@ -3954,7 +3965,7 @@ processAgentMessageConn user@User {userId} corrId agentConnId agentMessage = do ci <- saveRcvChatItem user (CDDirectRcv ct) msg msgMeta content withStore' $ \db -> setGroupInvitationChatItemId db user groupId (chatItemId' ci) toView $ CRNewChatItem user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) - toView $ CRReceivedGroupInvitation user gInfo ct memRole + toView $ CRReceivedGroupInvitation {user, groupInfo = gInfo, contact = ct, fromMemberRole = fromRole, memberRole = memRole} whenContactNtfs user ct $ showToast ("#" <> localDisplayName <> " " <> c <> "> ") "invited you to join the group" where @@ -5128,11 +5139,15 @@ chatCommandP = "/clear #" *> (ClearGroup <$> displayName), "/clear " *> char_ '@' *> (ClearContact <$> displayName), ("/members " <|> "/ms ") *> char_ '#' *> (ListMembers <$> displayName), - ("/groups" <|> "/gs") $> ListGroups, + "/_groups" *> (APIListGroups <$> A.decimal <*> optional (" @" *> A.decimal) <*> optional (A.space *> stringP)), + ("/groups" <|> "/gs") *> (ListGroups <$> optional (" @" *> displayName) <*> optional (A.space *> stringP)), "/_group_profile #" *> (APIUpdateGroupProfile <$> A.decimal <* A.space <*> jsonP), ("/group_profile " <|> "/gp ") *> char_ '#' *> (UpdateGroupNames <$> displayName <* A.space <*> groupProfile), ("/group_profile " <|> "/gp ") *> char_ '#' *> (ShowGroupProfile <$> displayName), "/group_descr " *> char_ '#' *> (UpdateGroupDescription <$> displayName <*> optional (A.space *> msgTextP)), + "/set welcome " *> char_ '#' *> (UpdateGroupDescription <$> displayName <* A.space <*> (Just <$> msgTextP)), + "/delete welcome " *> char_ '#' *> (UpdateGroupDescription <$> displayName <*> pure Nothing), + "/show welcome " *> char_ '#' *> (ShowGroupDescription <$> displayName), "/_create link #" *> (APICreateGroupLink <$> A.decimal <*> (memberRole <|> pure GRMember)), "/_set link role #" *> (APIGroupLinkMemberRole <$> A.decimal <*> memberRole), "/_delete link #" *> (APIDeleteGroupLink <$> A.decimal), diff --git a/src/Simplex/Chat/Bot.hs b/src/Simplex/Chat/Bot.hs index 05a755fd87..34e752ec21 100644 --- a/src/Simplex/Chat/Bot.hs +++ b/src/Simplex/Chat/Bot.hs @@ -9,9 +9,7 @@ module Simplex.Chat.Bot where import Control.Concurrent.Async import Control.Concurrent.STM import Control.Monad.Reader -import qualified Data.Aeson as J import qualified Data.ByteString.Char8 as B -import qualified Data.ByteString.Lazy.Char8 as LB import qualified Data.Text as T import Simplex.Chat.Controller import Simplex.Chat.Core @@ -19,9 +17,8 @@ import Simplex.Chat.Messages import Simplex.Chat.Messages.CIContent import Simplex.Chat.Protocol (MsgContent (..)) import Simplex.Chat.Store -import Simplex.Chat.Types (Contact (..), IsContact (..), User (..)) +import Simplex.Chat.Types (Contact (..), ContactId, IsContact (..), User (..)) import Simplex.Messaging.Encoding.String (strEncode) -import Simplex.Messaging.Util (safeDecodeUtf8) import System.Exit (exitFailure) chatBotRepl :: String -> (Contact -> String -> IO String) -> User -> ChatController -> IO () @@ -32,49 +29,55 @@ chatBotRepl welcome answer _user cc = do case resp of CRContactConnected _ contact _ -> do contactConnected contact - void $ sendMsg contact welcome + void $ sendMessage cc contact welcome CRNewChatItem _ (AChatItem _ SMDRcv (DirectChat contact) ChatItem {content = mc@CIRcvMsgContent {}}) -> do let msg = T.unpack $ ciContentToText mc - void $ sendMsg contact =<< answer contact msg + void $ sendMessage cc contact =<< answer contact msg _ -> pure () where - sendMsg Contact {contactId} msg = sendChatCmd cc $ "/_send @" <> show contactId <> " text " <> msg contactConnected Contact {localDisplayName} = putStrLn $ T.unpack localDisplayName <> " connected" initializeBotAddress :: ChatController -> IO () initializeBotAddress cc = do - sendChatCmd cc "/show_address" >>= \case + sendChatCmd cc ShowMyAddress >>= \case CRUserContactLink _ UserContactLink {connReqContact} -> showBotAddress connReqContact CRChatCmdError _ (ChatErrorStore SEUserContactLinkNotFound) -> do putStrLn "No bot address, creating..." - sendChatCmd cc "/address" >>= \case + sendChatCmd cc CreateMyAddress >>= \case CRUserContactLinkCreated _ uri -> showBotAddress uri _ -> putStrLn "can't create bot address" >> exitFailure _ -> putStrLn "unexpected response" >> exitFailure where showBotAddress uri = do putStrLn $ "Bot's contact address is: " <> B.unpack (strEncode uri) - void $ sendChatCmd cc "/auto_accept on" + void $ sendChatCmd cc $ AddressAutoAccept $ Just AutoAccept {acceptIncognito = False, autoReply = Nothing} sendMessage :: ChatController -> Contact -> String -> IO () sendMessage cc ct = sendComposedMessage cc ct Nothing . textMsgContent +sendMessage' :: ChatController -> ContactId -> String -> IO () +sendMessage' cc ctId = sendComposedMessage' cc ctId Nothing . textMsgContent + sendComposedMessage :: ChatController -> Contact -> Maybe ChatItemId -> MsgContent -> IO () -sendComposedMessage cc ct quotedItemId msgContent = do +sendComposedMessage cc = sendComposedMessage' cc . contactId' + +sendComposedMessage' :: ChatController -> ContactId -> Maybe ChatItemId -> MsgContent -> IO () +sendComposedMessage' cc ctId quotedItemId msgContent = do let cm = ComposedMessage {filePath = Nothing, quotedItemId, msgContent} - sendChatCmd cc ("/_send @" <> show (contactId' ct) <> " json " <> jsonEncode cm) >>= \case - CRNewChatItem {} -> printLog cc CLLInfo $ "sent message to " <> contactInfo ct + sendChatCmd cc (APISendMessage (ChatRef CTDirect ctId) False Nothing cm) >>= \case + CRNewChatItem {} -> printLog cc CLLInfo $ "sent message to contact ID " <> show ctId r -> putStrLn $ "unexpected send message response: " <> show r - where - jsonEncode = T.unpack . safeDecodeUtf8 . LB.toStrict . J.encode deleteMessage :: ChatController -> Contact -> ChatItemId -> IO () deleteMessage cc ct chatItemId = do - let cmd = "/_delete item @" <> show (contactId' ct) <> " " <> show chatItemId <> " internal" + let cmd = APIDeleteChatItem (contactRef ct) chatItemId CIDMInternal sendChatCmd cc cmd >>= \case CRChatItemDeleted {} -> printLog cc CLLInfo $ "deleted message from " <> contactInfo ct r -> putStrLn $ "unexpected delete message response: " <> show r +contactRef :: Contact -> ChatRef +contactRef = ChatRef CTDirect . contactId' + textMsgContent :: String -> MsgContent textMsgContent = MCText . T.pack diff --git a/src/Simplex/Chat/Bot/KnownContacts.hs b/src/Simplex/Chat/Bot/KnownContacts.hs new file mode 100644 index 0000000000..c079b994a6 --- /dev/null +++ b/src/Simplex/Chat/Bot/KnownContacts.hs @@ -0,0 +1,33 @@ +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} + +module Simplex.Chat.Bot.KnownContacts where + +import qualified Data.Attoparsec.ByteString.Char8 as A +import Data.Int (Int64) +import Data.Text (Text) +import Data.Text.Encoding (encodeUtf8) +import qualified Data.Text as T +import Options.Applicative +import Simplex.Messaging.Parsers (parseAll) +import Simplex.Messaging.Util (safeDecodeUtf8) + +data KnownContact = KnownContact + { contactId :: Int64, + localDisplayName :: Text + } + deriving (Eq) + +knownContactNames :: [KnownContact] -> String +knownContactNames = T.unpack . T.intercalate ", " . map (("@" <>) . localDisplayName) + +parseKnownContacts :: ReadM [KnownContact] +parseKnownContacts = eitherReader $ parseAll knownContactsP . encodeUtf8 . T.pack + +knownContactsP :: A.Parser [KnownContact] +knownContactsP = contactP `A.sepBy1` A.char ',' + where + contactP = do + contactId <- A.decimal <* A.char ':' + localDisplayName <- safeDecodeUtf8 <$> A.takeTill (A.inClass ", ") + pure KnownContact {contactId, localDisplayName} diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 90f90fdcb6..bc60b371b6 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -362,10 +362,12 @@ data ChatCommand | DeleteGroup GroupName | ClearGroup GroupName | ListMembers GroupName - | ListGroups -- UserId (not used in UI) + | APIListGroups UserId (Maybe ContactId) (Maybe String) + | ListGroups (Maybe ContactName) (Maybe String) | UpdateGroupNames GroupName GroupProfile | ShowGroupProfile GroupName | UpdateGroupDescription GroupName (Maybe Text) + | ShowGroupDescription GroupName | CreateGroupLink GroupName GroupMemberRole | GroupLinkMemberRole GroupName GroupMemberRole | DeleteGroupLink GroupName @@ -518,7 +520,7 @@ data ChatResponse | CRHostConnected {protocol :: AProtocolType, transportHost :: TransportHost} | CRHostDisconnected {protocol :: AProtocolType, transportHost :: TransportHost} | CRGroupInvitation {user :: User, groupInfo :: GroupInfo} - | CRReceivedGroupInvitation {user :: User, groupInfo :: GroupInfo, contact :: Contact, memberRole :: GroupMemberRole} + | CRReceivedGroupInvitation {user :: User, groupInfo :: GroupInfo, contact :: Contact, fromMemberRole :: GroupMemberRole, memberRole :: GroupMemberRole} | CRUserJoinedGroup {user :: User, groupInfo :: GroupInfo, hostMember :: GroupMember} | CRJoinedGroupMember {user :: User, groupInfo :: GroupInfo, member :: GroupMember} | CRJoinedGroupMemberConnecting {user :: User, groupInfo :: GroupInfo, hostMember :: GroupMember, member :: GroupMember} @@ -533,6 +535,7 @@ data ChatResponse | CRGroupDeleted {user :: User, groupInfo :: GroupInfo, member :: GroupMember} | CRGroupUpdated {user :: User, fromGroup :: GroupInfo, toGroup :: GroupInfo, member_ :: Maybe GroupMember} | CRGroupProfile {user :: User, groupInfo :: GroupInfo} + | CRGroupDescription {user :: User, groupInfo :: GroupInfo} -- only used in CLI | CRGroupLinkCreated {user :: User, groupInfo :: GroupInfo, connReqContact :: ConnReqContact, memberRole :: GroupMemberRole} | CRGroupLink {user :: User, groupInfo :: GroupInfo, connReqContact :: ConnReqContact, memberRole :: GroupMemberRole} | CRGroupLinkDeleted {user :: User, groupInfo :: GroupInfo} diff --git a/src/Simplex/Chat/Core.hs b/src/Simplex/Chat/Core.hs index e23dbc5a96..2ec6ddb7f9 100644 --- a/src/Simplex/Chat/Core.hs +++ b/src/Simplex/Chat/Core.hs @@ -39,5 +39,8 @@ runSimplexChat ChatOpts {maintenance} u cc chat a2 <- async $ chat u cc waitEither_ a1 a2 -sendChatCmd :: ChatController -> String -> IO ChatResponse -sendChatCmd cc s = runReaderT (execChatCommand . encodeUtf8 $ T.pack s) cc +sendChatCmdStr :: ChatController -> String -> IO ChatResponse +sendChatCmdStr cc s = runReaderT (execChatCommand . encodeUtf8 $ T.pack s) cc + +sendChatCmd :: ChatController -> ChatCommand -> IO ChatResponse +sendChatCmd cc cmd = runReaderT (execChatCommand' cmd) cc diff --git a/src/Simplex/Chat/Store/Groups.hs b/src/Simplex/Chat/Store/Groups.hs index c3c62d52da..7b54e642ed 100644 --- a/src/Simplex/Chat/Store/Groups.hs +++ b/src/Simplex/Chat/Store/Groups.hs @@ -448,8 +448,8 @@ getUserGroups db user@User {userId} = do groupIds <- map fromOnly <$> DB.query db "SELECT group_id FROM groups WHERE user_id = ?" (Only userId) rights <$> mapM (runExceptT . getGroup db user) groupIds -getUserGroupDetails :: DB.Connection -> User -> IO [GroupInfo] -getUserGroupDetails db User {userId, userContactId} = +getUserGroupDetails :: DB.Connection -> User -> Maybe ContactId -> Maybe String -> IO [GroupInfo] +getUserGroupDetails db User {userId, userContactId} _contactId_ search_ = map (toGroupInfo userContactId) <$> DB.query db @@ -462,8 +462,11 @@ getUserGroupDetails db User {userId, userContactId} = JOIN group_members mu USING (group_id) JOIN contact_profiles pu ON pu.contact_profile_id = COALESCE(mu.member_profile_id, mu.contact_profile_id) WHERE g.user_id = ? AND mu.contact_id = ? + AND (gp.display_name LIKE '%' || ? || '%' OR gp.full_name LIKE '%' || ? || '%' OR gp.description LIKE '%' || ? || '%') |] - (userId, userContactId) + (userId, userContactId, search, search, search) + where + search = fromMaybe "" search_ getContactGroupPreferences :: DB.Connection -> User -> Contact -> IO [FullGroupPreferences] getContactGroupPreferences db User {userId} Contact {contactId} = do diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index d6e443401d..2e7232c1ef 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -200,7 +200,7 @@ responseToView user_ ChatConfig {logLevel, showReactions, showReceipts, testView addressSS UserContactSubStatus {userContactError} = maybe ("Your address is active! To show: " <> highlight' "/sa") (\e -> "User address error: " <> sShow e <> ", to delete your address: " <> highlight' "/da") userContactError (groupLinkErrors, groupLinksSubscribed) = partition (isJust . userContactError) groupLinks CRGroupInvitation u g -> ttyUser u [groupInvitation' g] - CRReceivedGroupInvitation u g c role -> ttyUser u $ viewReceivedGroupInvitation g c role + CRReceivedGroupInvitation {user = u, groupInfo = g, contact = c, memberRole = r} -> ttyUser u $ viewReceivedGroupInvitation g c r CRUserJoinedGroup u g _ -> ttyUser u $ viewUserJoinedGroup g CRJoinedGroupMember u g m -> ttyUser u $ viewJoinedGroupMember g m CRHostConnected p h -> [plain $ "connected to " <> viewHostEvent p h] @@ -217,6 +217,7 @@ responseToView user_ ChatConfig {logLevel, showReactions, showReceipts, testView CRGroupDeleted u g m -> ttyUser u [ttyGroup' g <> ": " <> ttyMember m <> " deleted the group", "use " <> highlight ("/d #" <> groupName' g) <> " to delete the local copy of the group"] CRGroupUpdated u g g' m -> ttyUser u $ viewGroupUpdated g g' m CRGroupProfile u g -> ttyUser u $ viewGroupProfile g + CRGroupDescription u g -> ttyUser u $ viewGroupDescription g CRGroupLinkCreated u g cReq mRole -> ttyUser u $ groupLink_ "Group link is created!" g cReq mRole CRGroupLink u g cReq mRole -> ttyUser u $ groupLink_ "Group link:" g cReq mRole CRGroupLinkDeleted u g -> ttyUser u $ viewGroupLinkDeleted g @@ -1135,6 +1136,10 @@ viewGroupProfile g@GroupInfo {groupProfile = GroupProfile {description, image, g where pref = getGroupPreference f . mergeGroupPreferences +viewGroupDescription :: GroupInfo -> [StyledString] +viewGroupDescription GroupInfo {groupProfile = GroupProfile {description}} = + maybe ["No welcome message!"] ((bold' "Welcome message:" :) . map plain . T.lines) description + bold' :: String -> StyledString bold' = styled Bold diff --git a/tests/Bots/BroadcastTests.hs b/tests/Bots/BroadcastTests.hs new file mode 100644 index 0000000000..69ec10a7ab --- /dev/null +++ b/tests/Bots/BroadcastTests.hs @@ -0,0 +1,76 @@ +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} + +module Bots.BroadcastTests where + +import Broadcast.Bot +import Broadcast.Options +import ChatClient +import ChatTests.Utils +import Control.Concurrent (forkIO, killThread, threadDelay) +import Control.Exception (bracket) +import Simplex.Chat.Bot.KnownContacts +import Simplex.Chat.Core +import Simplex.Chat.Options (ChatOpts (..), CoreChatOpts (..)) +import Simplex.Chat.Types (Profile (..)) +import System.FilePath (()) +import Test.Hspec + +broadcastBotTests :: SpecWith FilePath +broadcastBotTests = do + it "should broadcast message" testBroadcastMessages + +withBroadcastBot :: BroadcastBotOpts -> IO () -> IO () +withBroadcastBot opts test = + bracket (forkIO bot) killThread (\_ -> threadDelay 500000 >> test) + where + bot = simplexChatCore testCfg (mkChatOpts opts) Nothing $ broadcastBot opts + +broadcastBotProfile :: Profile +broadcastBotProfile = Profile {displayName = "broadcast_bot", fullName = "Broadcast Bot", image = Nothing, contactLink = Nothing, preferences = Nothing} + +mkBotOpts :: FilePath -> [KnownContact] -> BroadcastBotOpts +mkBotOpts tmp publishers = + BroadcastBotOpts + { coreOptions = (coreOptions (testOpts :: ChatOpts)) {dbFilePrefix = tmp botDbPrefix}, + publishers, + welcomeMessage = defaultWelcomeMessage publishers, + prohibitedMessage = defaultWelcomeMessage publishers + } + +botDbPrefix :: FilePath +botDbPrefix = "broadcast_bot" + +testBroadcastMessages :: HasCallStack => FilePath -> IO () +testBroadcastMessages tmp = do + botLink <- + withNewTestChat tmp botDbPrefix broadcastBotProfile $ \bc_bot -> + withNewTestChat tmp "alice" aliceProfile $ \alice -> do + connectUsers bc_bot alice + bc_bot ##> "/ad" + getContactLink bc_bot True + let botOpts = mkBotOpts tmp [KnownContact 2 "alice"] + withBroadcastBot botOpts $ + withTestChat tmp "alice" $ \alice -> + withNewTestChat tmp "bob" bobProfile $ \bob -> + withNewTestChat tmp "cath" cathProfile $ \cath -> do + alice <## "1 contacts connected (use /cs for the list)" + bob `connectVia` botLink + bob #> "@broadcast_bot hello" + bob <# "broadcast_bot> > hello" + bob <## " Hello! I am a broadcast bot." + bob <## "I broadcast messages to all connected users from @alice." + cath `connectVia` botLink + alice #> "@broadcast_bot hello all!" + bob <# "broadcast_bot> hello all!" + cath <# "broadcast_bot> hello all!" + alice <# "broadcast_bot> > hello all!" + alice <## " Forwarded to 2 contact(s)" + where + cc `connectVia` botLink = do + cc ##> ("/c " <> botLink) + cc <## "connection request sent!" + cc <## "broadcast_bot (Broadcast Bot): contact is connected" + cc <# "broadcast_bot> Hello! I am a broadcast bot." + cc <## "I broadcast messages to all connected users from @alice." diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs new file mode 100644 index 0000000000..eb3926df69 --- /dev/null +++ b/tests/Bots/DirectoryTests.hs @@ -0,0 +1,456 @@ +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PostfixOperators #-} + +module Bots.DirectoryTests where + +import ChatClient +import ChatTests.Utils +import Control.Concurrent (forkIO, killThread, threadDelay) +import Control.Exception (finally) +import Directory.Options +import Directory.Service +import Directory.Store +import Simplex.Chat.Bot.KnownContacts +import Simplex.Chat.Core +import Simplex.Chat.Options (ChatOpts (..), CoreChatOpts (..)) +import Simplex.Chat.Types (Profile (..), GroupMemberRole (GROwner)) +import System.FilePath (()) +import Test.Hspec + +directoryServiceTests :: SpecWith FilePath +directoryServiceTests = do + it "should register group" testDirectoryService + describe "de-listing the group" $ do + it "should de-list if owner leaves the group" testDelistedOwnerLeaves + it "should de-list if owner is removed from the group" testDelistedOwnerRemoved + it "should NOT de-list if another member leaves the group" testNotDelistedMemberLeaves + it "should NOT de-list if another member is removed from the group" testNotDelistedMemberRemoved + it "should de-list if service is removed from the group" testDelistedServiceRemoved + describe "should require re-approval if profile is changed by" $ do + it "the registration owner" testRegOwnerChangedProfile + it "another owner" testAnotherOwnerChangedProfile + describe "should require profile update if group link is removed by " $ do + it "the registration owner" testRegOwnerRemovedLink + it "another owner" testAnotherOwnerRemovedLink + +directoryProfile :: Profile +directoryProfile = Profile {displayName = "SimpleX-Directory", fullName = "", image = Nothing, contactLink = Nothing, preferences = Nothing} + +mkDirectoryOpts :: FilePath -> [KnownContact] -> DirectoryOpts +mkDirectoryOpts tmp superUsers = + DirectoryOpts + { coreOptions = (coreOptions (testOpts :: ChatOpts)) {dbFilePrefix = tmp serviceDbPrefix}, + superUsers, + directoryLog = tmp "directory_service.log", + serviceName = "SimpleX-Directory" + } + +serviceDbPrefix :: FilePath +serviceDbPrefix = "directory_service" + +testDirectoryService :: HasCallStack => FilePath -> IO () +testDirectoryService tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + bob #> "@SimpleX-Directory privacy" + bob <# "SimpleX-Directory> > privacy" + bob <## " No groups found" + putStrLn "*** create a group" + bob ##> "/g PSA Privacy, Security & Anonymity" + bob <## "group #PSA (Privacy, Security & Anonymity) is created" + bob <## "to add members use /a PSA or /create link #PSA" + bob ##> "/a PSA SimpleX-Directory member" + bob <## "invitation to join the group #PSA sent to SimpleX-Directory" + bob <# "SimpleX-Directory> You must grant directory service admin role to register the group" + bob ##> "/mr PSA SimpleX-Directory admin" + putStrLn "*** discover service joins group and creates the link for profile" + bob <## "#PSA: you changed the role of SimpleX-Directory from member to admin" + bob <# "SimpleX-Directory> Joining the group #PSA…" + bob <## "#PSA: SimpleX-Directory joined the group" + bob <# "SimpleX-Directory> Joined the group #PSA, creating the link…" + bob <# "SimpleX-Directory> Created the public link to join the group via this directory service that is always online." + bob <## "" + bob <## "Please add it to the group welcome message." + bob <## "For example, add:" + welcomeWithLink <- dropStrPrefix "SimpleX-Directory> " . dropTime <$> getTermLine bob + putStrLn "*** update profile without link" + updateGroupProfile bob "Welcome!" + bob <# "SimpleX-Directory> The profile updated for ID 1 (PSA), but the group link is not added to the welcome message." + (superUser Thank you! The group link for ID 1 (PSA) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + approvalRequested superUser welcomeWithLink (1 :: Int) + putStrLn "*** update profile so that it still has link" + let welcomeWithLink' = "Welcome! " <> welcomeWithLink + updateGroupProfile bob welcomeWithLink' + bob <# "SimpleX-Directory> The group ID 1 (PSA) is updated!" + bob <## "It is hidden from the directory until approved." + superUser <# "SimpleX-Directory> The group ID 1 (PSA) is updated." + approvalRequested superUser welcomeWithLink' (2 :: Int) + putStrLn "*** try approving with the old registration code" + superUser #> "@SimpleX-Directory /approve 1:PSA 1" + superUser <# "SimpleX-Directory> > /approve 1:PSA 1" + superUser <## " Incorrect approval code" + putStrLn "*** update profile so that it has no link" + updateGroupProfile bob "Welcome!" + bob <# "SimpleX-Directory> The group link for ID 1 (PSA) is removed from the welcome message." + bob <## "" + bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." + superUser <# "SimpleX-Directory> The group link is removed from ID 1 (PSA), de-listed." + superUser #> "@SimpleX-Directory /approve 1:PSA 2" + superUser <# "SimpleX-Directory> > /approve 1:PSA 2" + superUser <## " Error: the group ID 1 (PSA) is not pending approval." + putStrLn "*** update profile so that it has link again" + updateGroupProfile bob welcomeWithLink' + bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (PSA) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + approvalRequested superUser welcomeWithLink' (1 :: Int) + superUser #> "@SimpleX-Directory /approve 1:PSA 1" + superUser <# "SimpleX-Directory> > /approve 1:PSA 1" + superUser <## " Group approved!" + bob <# "SimpleX-Directory> The group ID 1 (PSA) is approved and listed in directory!" + bob <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." + search bob "privacy" welcomeWithLink' + search bob "security" welcomeWithLink' + cath `connectVia` dsLink + search cath "privacy" welcomeWithLink' + where + search u s welcome = do + u #> ("@SimpleX-Directory " <> s) + u <# ("SimpleX-Directory> > " <> s) + u <## " Found 1 group(s)" + u <# "SimpleX-Directory> PSA (Privacy, Security & Anonymity)" + u <## "Welcome message:" + u <## welcome + updateGroupProfile u welcome = do + u ##> ("/set welcome #PSA " <> welcome) + u <## "description changed to:" + u <## welcome + approvalRequested su welcome grId = do + su <# "SimpleX-Directory> bob submitted the group ID 1: PSA (Privacy, Security & Anonymity)" + su <## "Welcome message:" + su <## welcome + su <## "" + su <## "To approve send:" + su <# ("SimpleX-Directory> /approve 1:PSA " <> show grId) + +testDelistedOwnerLeaves :: HasCallStack => FilePath -> IO () +testDelistedOwnerLeaves tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + leaveGroup "privacy" bob + cath <## "#privacy: bob left the group" + bob <# "SimpleX-Directory> You left the group ID 1 (privacy)." + bob <## "" + bob <## "Group is no longer listed in the directory." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (group owner left)." + groupNotFound cath "privacy" + +testDelistedOwnerRemoved :: HasCallStack => FilePath -> IO () +testDelistedOwnerRemoved tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + removeMember "privacy" cath bob + bob <# "SimpleX-Directory> You are removed from the group ID 1 (privacy)." + bob <## "" + bob <## "Group is no longer listed in the directory." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (group owner is removed)." + groupNotFound cath "privacy" + +testNotDelistedMemberLeaves :: HasCallStack => FilePath -> IO () +testNotDelistedMemberLeaves tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + leaveGroup "privacy" cath + bob <## "#privacy: cath left the group" + (superUser FilePath -> IO () +testNotDelistedMemberRemoved tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + removeMember "privacy" bob cath + (superUser FilePath -> IO () +testDelistedServiceRemoved tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/rm #privacy SimpleX-Directory" + bob <## "#privacy: you removed SimpleX-Directory from the group" + cath <## "#privacy: bob removed SimpleX-Directory from the group" + bob <# "SimpleX-Directory> SimpleX-Directory is removed from the group ID 1 (privacy)." + bob <## "" + bob <## "Group is no longer listed in the directory." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (directory service is removed)." + groupNotFound cath "privacy" + +testRegOwnerChangedProfile :: HasCallStack => FilePath -> IO () +testRegOwnerChangedProfile tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/gp privacy privacy Privacy and Security" + bob <## "full name changed to: Privacy and Security" + bob <# "SimpleX-Directory> The group ID 1 (privacy) is updated!" + bob <## "It is hidden from the directory until approved." + cath <## "bob updated group #privacy:" + cath <## "full name changed to: Privacy and Security" + groupNotFound cath "privacy" + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is updated." + reapproveGroup superUser bob + groupFound cath "privacy" + +testAnotherOwnerChangedProfile :: HasCallStack => FilePath -> IO () +testAnotherOwnerChangedProfile tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + cath ##> "/gp privacy privacy Privacy and Security" + cath <## "full name changed to: Privacy and Security" + bob <## "cath updated group #privacy:" + bob <## "full name changed to: Privacy and Security" + bob <# "SimpleX-Directory> The group ID 1 (privacy) is updated!" + bob <## "It is hidden from the directory until approved." + groupNotFound cath "privacy" + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is updated." + reapproveGroup superUser bob + groupFound cath "privacy" + +testRegOwnerRemovedLink :: HasCallStack => FilePath -> IO () +testRegOwnerRemovedLink tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/show welcome #privacy" + bob <## "Welcome message:" + welcomeWithLink <- getTermLine bob + bob ##> "/set welcome #privacy Welcome!" + bob <## "description changed to:" + bob <## "Welcome!" + bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." + bob <## "" + bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## "Welcome!" + superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." + groupNotFound cath "privacy" + bob ##> ("/set welcome #privacy " <> welcomeWithLink) + bob <## "description changed to:" + bob <## welcomeWithLink + bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## welcomeWithLink + reapproveGroup superUser bob + groupFound cath "privacy" + +testAnotherOwnerRemovedLink :: HasCallStack => FilePath -> IO () +testAnotherOwnerRemovedLink tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/show welcome #privacy" + bob <## "Welcome message:" + welcomeWithLink <- getTermLine bob + cath ##> "/set welcome #privacy Welcome!" + cath <## "description changed to:" + cath <## "Welcome!" + bob <## "cath updated group #privacy:" + bob <## "description changed to:" + bob <## "Welcome!" + bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." + bob <## "" + bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." + superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." + groupNotFound cath "privacy" + cath ##> ("/set welcome #privacy " <> welcomeWithLink) + cath <## "description changed to:" + cath <## welcomeWithLink + bob <## "cath updated group #privacy:" + bob <## "description changed to:" + bob <## welcomeWithLink + bob <# "SimpleX-Directory> The group link is added by another group member, your registration will not be processed." + bob <## "" + bob <## "Please update the group profile yourself." + bob ##> ("/set welcome #privacy " <> welcomeWithLink <> " - welcome!") + bob <## "description changed to:" + bob <## (welcomeWithLink <> " - welcome!") + bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## (welcomeWithLink <> " - welcome!") + reapproveGroup superUser bob + groupFound cath "privacy" + +reapproveGroup :: HasCallStack => TestCC -> TestCC -> IO () +reapproveGroup superUser bob = do + superUser <#. "SimpleX-Directory> bob submitted the group ID 1: privacy (" + superUser <## "Welcome message:" + superUser <##. "Link to join the group privacy: " + superUser <## "" + superUser <## "To approve send:" + superUser <# "SimpleX-Directory> /approve 1:privacy 1" + superUser #> "@SimpleX-Directory /approve 1:privacy 1" + superUser <# "SimpleX-Directory> > /approve 1:privacy 1" + superUser <## " Group approved!" + bob <# "SimpleX-Directory> The group ID 1 (privacy) is approved and listed in directory!" + bob <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." + +addCathAsOwner :: HasCallStack => TestCC -> TestCC -> IO () +addCathAsOwner bob cath = do + connectUsers bob cath + fullAddMember "privacy" "Privacy" bob cath GROwner + joinGroup "privacy" cath bob + cath <## "#privacy: member SimpleX-Directory is connected" + +withDirectoryService :: HasCallStack => FilePath -> (TestCC -> String -> IO ()) -> IO () +withDirectoryService tmp test = do + dsLink <- + withNewTestChat tmp serviceDbPrefix directoryProfile $ \ds -> + withNewTestChat tmp "super_user" aliceProfile $ \superUser -> do + connectUsers ds superUser + ds ##> "/ad" + getContactLink ds True + let opts = mkDirectoryOpts tmp [KnownContact 2 "alice"] + withDirectory opts $ + withTestChat tmp "super_user" $ \superUser -> do + superUser <## "1 contacts connected (use /cs for the list)" + test superUser dsLink + where + withDirectory :: DirectoryOpts -> IO () -> IO () + withDirectory opts@DirectoryOpts {directoryLog} action = do + st <- getDirectoryStore directoryLog + t <- forkIO $ bot st + threadDelay 500000 + action `finally` killThread t + where + bot st = simplexChatCore testCfg (mkChatOpts opts) Nothing $ directoryService st opts + +registerGroup :: TestCC -> TestCC -> String -> String -> IO () +registerGroup su u n fn = do + u ##> ("/g " <> n <> " " <> fn) + u <## ("group #" <> n <> " (" <> fn <> ") is created") + u <## ("to add members use /a " <> n <> " or /create link #" <> n) + u ##> ("/a " <> n <> " SimpleX-Directory admin") + u <## ("invitation to join the group #" <> n <> " sent to SimpleX-Directory") + u <# ("SimpleX-Directory> Joining the group #" <> n <> "…") + u <## ("#" <> n <> ": SimpleX-Directory joined the group") + u <# ("SimpleX-Directory> Joined the group #" <> n <> ", creating the link…") + u <# "SimpleX-Directory> Created the public link to join the group via this directory service that is always online." + u <## "" + u <## "Please add it to the group welcome message." + u <## "For example, add:" + welcomeWithLink <- dropStrPrefix "SimpleX-Directory> " . dropTime <$> getTermLine u + u ##> ("/set welcome " <> n <> " " <> welcomeWithLink) + u <## "description changed to:" + u <## welcomeWithLink + u <# ("SimpleX-Directory> Thank you! The group link for ID 1 (" <> n <> ") is added to the welcome message.") + u <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + su <# ("SimpleX-Directory> bob submitted the group ID 1: " <> n <> " (" <> fn <> ")") + su <## "Welcome message:" + su <## welcomeWithLink + su <## "" + su <## "To approve send:" + let approve = "/approve 1:" <> n <> " 1" + su <# ("SimpleX-Directory> " <> approve) + su #> ("@SimpleX-Directory " <> approve) + su <# ("SimpleX-Directory> > " <> approve) + su <## " Group approved!" + u <# ("SimpleX-Directory> The group ID 1 (" <> n <> ") is approved and listed in directory!") + u <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." + +connectVia :: TestCC -> String -> IO () +u `connectVia` dsLink = do + u ##> ("/c " <> dsLink) + u <## "connection request sent!" + u <## "SimpleX-Directory: contact is connected" + u <# "SimpleX-Directory> Welcome to SimpleX-Directory service!" + u <## "Send a search string to find groups or /help to learn how to add groups to directory." + u <## "" + u <## "For example, send privacy to find groups about privacy." + +joinGroup :: String -> TestCC -> TestCC -> IO () +joinGroup gName member host = do + let gn = "#" <> gName + memberName <- userName member + hostName <- userName host + member ##> ("/j " <> gName) + member <## (gn <> ": you joined the group") + member <#. (gn <> " " <> hostName <> "> Link to join the group " <> gName <> ": ") + host <## (gn <> ": " <> memberName <> " joined the group") + +leaveGroup :: String -> TestCC -> IO () +leaveGroup gName member = do + let gn = "#" <> gName + member ##> ("/l " <> gName) + member <## (gn <> ": you left the group") + member <## ("use /d " <> gn <> " to delete the group") + +removeMember :: String -> TestCC -> TestCC -> IO () +removeMember gName admin removed = do + let gn = "#" <> gName + adminName <- userName admin + removedName <- userName removed + admin ##> ("/rm " <> gName <> " " <> removedName) + admin <## (gn <> ": you removed " <> removedName <> " from the group") + removed <## (gn <> ": " <> adminName <> " removed you from the group") + removed <## ("use /d " <> gn <> " to delete the group") + +groupFound :: TestCC -> String -> IO () +groupFound u s = do + u #> ("@SimpleX-Directory " <> s) + u <# ("SimpleX-Directory> > " <> s) + u <## " Found 1 group(s)" + u <#. "SimpleX-Directory> privacy (" + u <## "Welcome message:" + u <##. "Link to join the group privacy: " + +groupNotFound :: TestCC -> String -> IO () +groupNotFound u s = do + u #> ("@SimpleX-Directory " <> s) + u <# ("SimpleX-Directory> > " <> s) + u <## " No groups found" diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index c4b7e16c58..694ef847c0 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -48,9 +48,15 @@ xit' :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) xit' = if os == "linux" then xit else it xit'' :: (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) -xit'' d t = do +xit'' = ifCI xit it + +xdescribe'' :: HasCallStack => String -> SpecWith a -> SpecWith a +xdescribe'' = ifCI xdescribe describe + +ifCI :: HasCallStack => (HasCallStack => String -> a -> SpecWith b) -> (HasCallStack => String -> a -> SpecWith b) -> String -> a -> SpecWith b +ifCI xrun run d t = do ci <- runIO $ lookupEnv "CI" - (if ci == Just "true" then xit else it) d t + (if ci == Just "true" then xrun else run) d t versionTestMatrix2 :: (HasCallStack => TestCC -> TestCC -> IO ()) -> SpecWith FilePath versionTestMatrix2 runTest = do @@ -349,6 +355,11 @@ dropTime_ msg = case splitAt 6 msg of if all isDigit [m, m', s, s'] then Just text else Nothing _ -> Nothing +dropStrPrefix :: HasCallStack => String -> String -> String +dropStrPrefix pfx s = + let (p, rest) = splitAt (length pfx) s + in if p == pfx then rest else error $ "no prefix " <> pfx <> " in string : " <> s + dropReceipt :: HasCallStack => String -> String dropReceipt msg = fromMaybe err $ dropReceipt_ msg where @@ -475,14 +486,18 @@ createGroup3 gName cc1 cc2 cc3 = do ] addMember :: HasCallStack => String -> TestCC -> TestCC -> GroupMemberRole -> IO () -addMember gName inviting invitee role = do +addMember gName = fullAddMember gName "" + +fullAddMember :: HasCallStack => String -> String -> TestCC -> TestCC -> GroupMemberRole -> IO () +fullAddMember gName fullName inviting invitee role = do name1 <- userName inviting memName <- userName invitee inviting ##> ("/a " <> gName <> " " <> memName <> " " <> B.unpack (strEncode role)) + let fullName' = if null fullName || fullName == gName then "" else " (" <> fullName <> ")" concurrentlyN_ [ inviting <## ("invitation to join the group #" <> gName <> " sent to " <> memName), do - invitee <## ("#" <> gName <> ": " <> name1 <> " invites you to join the group as " <> B.unpack (strEncode role)) + invitee <## ("#" <> gName <> fullName' <> ": " <> name1 <> " invites you to join the group as " <> B.unpack (strEncode role)) invitee <## ("use /j " <> gName <> " to accept") ] diff --git a/tests/Test.hs b/tests/Test.hs index 9010aefa0f..d9d36d472b 100644 --- a/tests/Test.hs +++ b/tests/Test.hs @@ -1,5 +1,8 @@ +import Bots.BroadcastTests +import Bots.DirectoryTests import ChatClient import ChatTests +import ChatTests.Utils (xdescribe'') import Control.Logger.Simple import Data.Time.Clock.System import MarkdownTests @@ -23,6 +26,8 @@ main = do around testBracket $ do describe "Mobile API Tests" mobileTests describe "SimpleX chat client" chatTests + xdescribe'' "SimpleX Broadcast bot" broadcastBotTests + xdescribe'' "SimpleX Directory service bot" directoryServiceTests where testBracket test = do t <- getSystemTime From 497275646df344e6e918ad30452a1f0e3a35b664 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 3 Aug 2023 09:21:48 +0100 Subject: [PATCH 002/169] directory: registration of duplicate groups (#2840) * directory: confirm registration of duplicate groups * do not send duplicate groups for approval * add test --- .../src/Directory/Events.hs | 8 +- .../src/Directory/Service.hs | 146 +++++--- .../src/Directory/Store.hs | 6 +- tests/Bots/DirectoryTests.hs | 315 +++++++++++++----- 4 files changed, 337 insertions(+), 138 deletions(-) diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index 01bb181f84..95216dffcf 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -89,7 +89,7 @@ data DirectoryCmd (r :: DirectoryRole) where DCConfirmDuplicateGroup :: UserGroupRegId -> GroupName -> DirectoryCmd 'DRUser DCListUserGroups :: DirectoryCmd 'DRUser DCDeleteGroup :: UserGroupRegId -> GroupName -> DirectoryCmd 'DRUser - DCApproveGroup :: {groupId :: GroupId, localDisplayName :: GroupName, groupApprovalId :: GroupApprovalId} -> DirectoryCmd 'DRSuperUser + DCApproveGroup :: {groupId :: GroupId, displayName :: GroupName, groupApprovalId :: GroupApprovalId} -> DirectoryCmd 'DRSuperUser DCRejectGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser DCSuspendGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser DCResumeGroup :: GroupId -> GroupName -> DirectoryCmd 'DRSuperUser @@ -109,7 +109,7 @@ directoryCmdP = tagP = A.takeTill (== ' ') >>= \case "help" -> u DCHelp_ "h" -> u DCHelp_ - "confim" -> u DCConfirmDuplicateGroup_ + "confirm" -> u DCConfirmDuplicateGroup_ "list" -> u DCListUserGroups_ "delete" -> u DCDeleteGroup_ "approve" -> su DCApproveGroup_ @@ -128,9 +128,9 @@ directoryCmdP = DCListUserGroups_ -> pure DCListUserGroups DCDeleteGroup_ -> gc DCDeleteGroup DCApproveGroup_ -> do - (groupId, localDisplayName) <- gc (,) + (groupId, displayName) <- gc (,) groupApprovalId <- A.space *> A.decimal - pure $ DCApproveGroup {groupId, localDisplayName, groupApprovalId} + pure $ DCApproveGroup {groupId, displayName, groupApprovalId} DCRejectGroup_ -> gc DCRejectGroup DCSuspendGroup_ -> gc DCSuspendGroup DCResumeGroup_ -> gc DCResumeGroup diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index 07cd9203e9..116440b91a 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -18,6 +18,8 @@ import Control.Concurrent.STM import Control.Monad.Reader import qualified Data.ByteString.Char8 as B import Data.Maybe (fromMaybe) +import qualified Data.Set as S +import Data.Text (Text) import qualified Data.Text as T import Directory.Events import Directory.Options @@ -37,6 +39,11 @@ import System.Directory (getAppUserDataDirectory) data GroupProfileUpdate = GPNoServiceLink | GPServiceLinkAdded | GPServiceLinkRemoved | GPHasServiceLink | GPServiceLinkError +data DuplicateGroup + = DGUnique -- display name or full name is unique + | DGRegistered -- the group with the same names is registered, additional confirmation is required + | DGListed -- the group with the same names is listed, the registration is not allowed + welcomeGetOpts :: IO DirectoryOpts welcomeGetOpts = do appDir <- getAppUserDataDirectory "simplex" @@ -70,10 +77,6 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d where withSuperUsers action = void . forkIO $ forM_ superUsers $ \KnownContact {contactId} -> action contactId notifySuperUsers s = withSuperUsers $ \contactId -> sendMessage' cc contactId s - -- withContact ctId GroupInfo {localDisplayName} err action = do - -- getContact cc ctId >>= \case - -- Just ct -> action ct - -- Nothing -> putStrLn $ T.unpack $ "Error: " <> err <> ", group: " <> localDisplayName <> ", can't find contact ID " <> tshow ctId notifyOwner GroupReg {dbContactId} = sendMessage' cc dbContactId ctId `isOwner` GroupReg {dbContactId} = ctId == dbContactId withGroupReg GroupInfo {groupId, localDisplayName} err action = do @@ -86,8 +89,40 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d groupInfoText GroupProfile {displayName = n, fullName = fn, description = d} = n <> (if n == fn || T.null fn then "" else " (" <> fn <> ")") <> maybe "" ("\nWelcome message:\n" <>) d - groupReference GroupInfo {groupId, groupProfile = p'@GroupProfile {displayName}} = + groupReference GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = "ID " <> show groupId <> " (" <> T.unpack displayName <> ")" + groupAlreadyListed GroupInfo {groupProfile = GroupProfile {displayName, fullName}} = + T.unpack $ "The group " <> displayName <> " (" <> fullName <> ") is already listed in the directory, please choose another name." + + getGroups :: Text -> IO (Maybe [GroupInfo]) + getGroups search = + sendChatCmd cc (APIListGroups userId Nothing $ Just $ T.unpack search) >>= \case + CRGroupsList {groups} -> pure $ Just groups + _ -> pure Nothing + + getDuplicateGroup :: GroupInfo -> IO (Maybe DuplicateGroup) + getDuplicateGroup GroupInfo {groupId, groupProfile = GroupProfile {displayName, fullName}} = + getGroups fullName >>= mapM duplicateGroup + where + sameGroup GroupInfo {groupId = gId, groupProfile = GroupProfile {displayName = n, fullName = fn}} = + gId /= groupId && n == displayName && fn == fullName + duplicateGroup [] = pure DGUnique + duplicateGroup groups = do + let gs = filter sameGroup groups + if null gs + then pure DGUnique + else do + lgs <- readTVarIO $ listedGroups st + let listed = any (\GroupInfo {groupId = gId} -> gId `S.member` lgs) gs + pure $ if listed then DGListed else DGRegistered + + processInvitation :: Contact -> GroupInfo -> IO () + processInvitation ct g@GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = do + atomically $ addGroupReg st ct g GRSProposed + r <- sendChatCmd cc $ APIJoinGroup groupId + sendMessage cc ct $ T.unpack $ case r of + CRUserAcceptedGroupSent {} -> "Joining the group " <> displayName <> "…" + _ -> "Error joining group " <> displayName <> ", please re-send the invitation!" deContactConnected :: Contact -> IO () deContactConnected ct = do @@ -98,24 +133,31 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d \For example, send _privacy_ to find groups about privacy." deGroupInvitation :: Contact -> GroupInfo -> GroupMemberRole -> GroupMemberRole -> IO () - deGroupInvitation ct g fromMemberRole memberRole = + deGroupInvitation ct g@GroupInfo {groupId, groupProfile = GroupProfile {displayName, fullName}} fromMemberRole memberRole = do case badInvitation fromMemberRole memberRole of - -- TODO check duplicate group name and ask to confirm Just msg -> sendMessage cc ct msg - Nothing -> do - let GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = g - atomically $ addGroupReg st ct g - r <- sendChatCmd cc $ APIJoinGroup groupId - sendMessage cc ct $ T.unpack $ case r of - CRUserAcceptedGroupSent {} -> "Joining the group #" <> displayName <> "…" - _ -> "Error joining group " <> displayName <> ", please re-send the invitation!" + Nothing -> getDuplicateGroup g >>= \case + Just DGUnique -> processInvitation ct g + Just DGRegistered -> askConfirmation + Just DGListed -> sendMessage cc ct $ groupAlreadyListed g + Nothing -> sendMessage cc ct $ "Unexpected error, please notify the developers." + where + badInvitation contactRole serviceRole = case (contactRole, serviceRole) of + (GROwner, GRAdmin) -> Nothing + (_, GRAdmin) -> Just "You must have a group *owner* role to register the group" + (GROwner, _) -> Just "You must grant directory service *admin* role to register the group" + _ -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group" + askConfirmation = do + atomically $ addGroupReg st ct g GRSPendingConfirmation + sendMessage cc ct $ T.unpack $ "The group " <> displayName <> " (" <> fullName <> ") is already submitted to the directory.\nTo confirm the registration, please send:" + sendMessage cc ct $ "/confirm " <> show groupId <> ":" <> T.unpack displayName deServiceJoinedGroup :: ContactId -> GroupInfo -> IO () deServiceJoinedGroup ctId g = withGroupReg g "joined group" $ \gr -> when (ctId `isOwner` gr) $ do let GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = g - notifyOwner gr $ T.unpack $ "Joined the group #" <> displayName <> ", creating the link…" + notifyOwner gr $ T.unpack $ "Joined the group " <> displayName <> ", creating the link…" sendChatCmd cc (APICreateGroupLink groupId GRMember) >>= \case CRGroupLinkCreated {connReqContact} -> do setGroupInactive gr GRSPendingUpdate @@ -158,17 +200,21 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d where isInfix l d_ = l `T.isInfixOf` fromMaybe "" d_ GroupInfo {groupId, groupProfile = p} = fromGroup - GroupInfo {localDisplayName, groupProfile = p'@GroupProfile {image = image'}} = toGroup + GroupInfo {groupProfile = p'@GroupProfile {displayName = displayName', image = image'}} = toGroup groupRef = groupReference toGroup sameProfile GroupProfile {displayName = n, fullName = fn, image = i, description = d} GroupProfile {displayName = n', fullName = fn', image = i', description = d'} = n == n' && fn == fn' && i == i' && d == d' groupLinkAdded gr = do - notifyOwner gr $ "Thank you! The group link for " <> groupRef <> " is added to the welcome message.\nYou will be notified once the group is added to the directory - it may take up to 24 hours." - let gaId = 1 - setGroupInactive gr $ GRSPendingApproval gaId - sendForApproval gr gaId + getDuplicateGroup toGroup >>= \case + Nothing -> notifyOwner gr "Unexpected error, please notify the developers." + Just DGListed -> notifyOwner gr $ groupAlreadyListed toGroup + _ -> do + notifyOwner gr $ "Thank you! The group link for " <> groupRef <> " is added to the welcome message.\nYou will be notified once the group is added to the directory - it may take up to 24 hours." + let gaId = 1 + setGroupInactive gr $ GRSPendingApproval gaId + sendForApproval gr gaId processProfileChange gr n' = groupProfileUpdate >>= \case GPNoServiceLink -> do setGroupInactive gr GRSPendingUpdate @@ -208,7 +254,7 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d msg = maybe (MCText text) (\image -> MCImage {text, image}) image' withSuperUsers $ \cId -> do sendComposedMessage' cc cId Nothing msg - sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack localDisplayName <> " " <> show gaId + sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack displayName' <> " " <> show gaId deContactRoleChanged :: ContactId -> GroupInfo -> GroupMemberRole -> IO () deContactRoleChanged ctId g role = undefined @@ -252,9 +298,9 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d \3. You will then need to add this link to the group welcome message.\n\ \4. Once the link is added, service admins will approve the group (it can take up to 24 hours), and everybody will be able to find it in directory.\n\n\ \Start from inviting the bot to your group as admin - it will guide you through the process" - DCSearchGroup s -> do - sendChatCmd cc (APIListGroups userId Nothing $ Just $ T.unpack s) >>= \case - CRGroupsList {groups} -> + DCSearchGroup s -> + getGroups s >>= \case + Just groups -> atomically (filterListedGroups st groups) >>= \case [] -> sendReply "No groups found" gs -> do @@ -263,8 +309,23 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d let text = groupInfoText p msg = maybe (MCText text) (\image -> MCImage {text, image}) image_ sendComposedMessage cc ct Nothing msg - _ -> sendReply "Unexpected error" - DCConfirmDuplicateGroup _ugrId _gName -> pure () + Nothing -> sendReply "Unexpected error, please notify the developers." + DCConfirmDuplicateGroup ugrId gName -> + atomically (getGroupReg st ugrId) >>= \case + Nothing -> sendReply $ "Group ID " <> show ugrId <> " not found" + Just GroupReg {dbGroupId, groupRegStatus} -> do + getGroup cc dbGroupId >>= \case + Nothing -> sendReply $ "Group ID " <> show ugrId <> " not found" + Just g@GroupInfo {groupProfile = GroupProfile {displayName}} + | displayName == gName -> + readTVarIO groupRegStatus >>= \case + GRSPendingConfirmation -> do + getDuplicateGroup g >>= \case + Nothing -> sendMessage cc ct $ "Unexpected error, please notify the developers." + Just DGListed -> sendMessage cc ct $ groupAlreadyListed g + _ -> processInvitation ct g + _ -> sendReply $ "Error: the group ID " <> show ugrId <> " (" <> T.unpack displayName <> ") is not pending confirmation." + | otherwise -> sendReply $ "Group ID " <> show ugrId <> " has the display name " <> T.unpack displayName DCListUserGroups -> pure () DCDeleteGroup _ugrId _gName -> pure () DCUnknownCommand -> sendReply "Unknown command" @@ -275,25 +336,31 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d deSuperUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRSuperUser -> IO () deSuperUserCommand ct ciId cmd | superUser `elem` superUsers = case cmd of - DCApproveGroup {groupId, localDisplayName = n, groupApprovalId} -> + DCApproveGroup {groupId, displayName = n, groupApprovalId} -> atomically (getGroupReg st groupId) >>= \case - Nothing -> sendMessage cc ct $ "Group ID " <> show groupId <> " not found" + Nothing -> sendReply $ "Group ID " <> show groupId <> " not found" Just GroupReg {dbContactId, groupRegStatus} -> do readTVarIO groupRegStatus >>= \case GRSPendingApproval gaId | gaId == groupApprovalId -> do getGroup cc groupId >>= \case - Just GroupInfo {localDisplayName = n'} - | n == n' -> do - atomically $ do - writeTVar groupRegStatus GRSActive - listGroup st groupId - sendReply "Group approved!" - sendMessage' cc dbContactId $ "The group ID " <> show groupId <> " (" <> T.unpack n <> ") is approved and listed in directory!\nPlease note: if you change the group profile it will be hidden from directory until it is re-approved." + Just g@GroupInfo {groupProfile = GroupProfile {displayName = n'}} + | n == n' -> + getDuplicateGroup g >>= \case + Nothing -> sendReply $ "Unexpected error, please notify the developers." + Just DGListed -> sendReply $ "The group " <> groupRef <> " is already listed in the directory." + _ -> do + atomically $ do + writeTVar groupRegStatus GRSActive + listGroup st groupId + sendReply "Group approved!" + sendMessage' cc dbContactId $ "The group " <> groupRef <> " is approved and listed in directory!\nPlease note: if you change the group profile it will be hidden from directory until it is re-approved." | otherwise -> sendReply "Incorrect group name" Nothing -> pure () | otherwise -> sendReply "Incorrect approval code" - _ -> sendReply $ "Error: the group ID " <> show groupId <> " (" <> T.unpack n <> ") is not pending approval." + _ -> sendReply $ "Error: the group " <> groupRef <> " is not pending approval." + where + groupRef = "ID " <> show groupId <> " (" <> T.unpack n <> ")" DCRejectGroup _gaId _gName -> pure () DCSuspendGroup _gId _gName -> pure () DCResumeGroup _gId _gName -> pure () @@ -304,13 +371,6 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d superUser = KnownContact {contactId = contactId' ct, localDisplayName = localDisplayName' ct} sendReply = sendComposedMessage cc ct (Just ciId) . textMsgContent -badInvitation :: GroupMemberRole -> GroupMemberRole -> Maybe String -badInvitation contactRole serviceRole = case (contactRole, serviceRole) of - (GROwner, GRAdmin) -> Nothing - (_, GRAdmin) -> Just "You must have a group *owner* role to register the group" - (GROwner, _) -> Just "You must grant directory service *admin* role to register the group" - _ -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group" - getContact :: ChatController -> ContactId -> IO (Maybe Contact) getContact cc ctId = resp <$> sendChatCmd cc (APIGetChat (ChatRef CTDirect ctId) (CPLast 0) Nothing) where diff --git a/apps/simplex-directory-service/src/Directory/Store.hs b/apps/simplex-directory-service/src/Directory/Store.hs index f41a487e28..b4508d6b92 100644 --- a/apps/simplex-directory-service/src/Directory/Store.hs +++ b/apps/simplex-directory-service/src/Directory/Store.hs @@ -37,9 +37,9 @@ data GroupRegStatus | GRSSuspended | GRSRemoved -addGroupReg :: DirectoryStore -> Contact -> GroupInfo -> STM () -addGroupReg st ct GroupInfo {groupId} = do - groupRegStatus <- newTVar GRSProposed +addGroupReg :: DirectoryStore -> Contact -> GroupInfo -> GroupRegStatus -> STM () +addGroupReg st ct GroupInfo {groupId} grStatus = do + groupRegStatus <- newTVar grStatus let gr = GroupReg {userGroupRegId = groupId, dbGroupId = groupId, dbContactId = contactId' ct, groupRegStatus} modifyTVar' (groupRegs st) (gr :) diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index eb3926df69..d1c34e7ada 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -34,6 +34,12 @@ directoryServiceTests = do describe "should require profile update if group link is removed by " $ do it "the registration owner" testRegOwnerRemovedLink it "another owner" testAnotherOwnerRemovedLink + describe "duplicate groups (same display name and full name)" $ do + it "should ask for confirmation if a duplicate group is submitted" testDuplicateAskConfirmation + it "should prohibit registration if a duplicate group is listed" testDuplicateProhibitRegistration + it "should prohibit confirmation if a duplicate group is listed" testDuplicateProhibitConfirmation + it "should prohibit when profile is updated and not send for approval" testDuplicateProhibitWhenUpdated + it "should prohibit approval if a duplicate group is listed" testDuplicateProhibitApproval directoryProfile :: Profile directoryProfile = Profile {displayName = "SimpleX-Directory", fullName = "", image = Nothing, contactLink = Nothing, preferences = Nothing} @@ -59,7 +65,7 @@ testDirectoryService tmp = bob #> "@SimpleX-Directory privacy" bob <# "SimpleX-Directory> > privacy" bob <## " No groups found" - putStrLn "*** create a group" + -- putStrLn "*** create a group" bob ##> "/g PSA Privacy, Security & Anonymity" bob <## "group #PSA (Privacy, Security & Anonymity) is created" bob <## "to add members use /a PSA or /create link #PSA" @@ -67,37 +73,37 @@ testDirectoryService tmp = bob <## "invitation to join the group #PSA sent to SimpleX-Directory" bob <# "SimpleX-Directory> You must grant directory service admin role to register the group" bob ##> "/mr PSA SimpleX-Directory admin" - putStrLn "*** discover service joins group and creates the link for profile" + -- putStrLn "*** discover service joins group and creates the link for profile" bob <## "#PSA: you changed the role of SimpleX-Directory from member to admin" - bob <# "SimpleX-Directory> Joining the group #PSA…" + bob <# "SimpleX-Directory> Joining the group PSA…" bob <## "#PSA: SimpleX-Directory joined the group" - bob <# "SimpleX-Directory> Joined the group #PSA, creating the link…" + bob <# "SimpleX-Directory> Joined the group PSA, creating the link…" bob <# "SimpleX-Directory> Created the public link to join the group via this directory service that is always online." bob <## "" bob <## "Please add it to the group welcome message." bob <## "For example, add:" welcomeWithLink <- dropStrPrefix "SimpleX-Directory> " . dropTime <$> getTermLine bob - putStrLn "*** update profile without link" + -- putStrLn "*** update profile without link" updateGroupProfile bob "Welcome!" bob <# "SimpleX-Directory> The profile updated for ID 1 (PSA), but the group link is not added to the welcome message." (superUser Thank you! The group link for ID 1 (PSA) is added to the welcome message." bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." approvalRequested superUser welcomeWithLink (1 :: Int) - putStrLn "*** update profile so that it still has link" + -- putStrLn "*** update profile so that it still has link" let welcomeWithLink' = "Welcome! " <> welcomeWithLink updateGroupProfile bob welcomeWithLink' bob <# "SimpleX-Directory> The group ID 1 (PSA) is updated!" bob <## "It is hidden from the directory until approved." superUser <# "SimpleX-Directory> The group ID 1 (PSA) is updated." approvalRequested superUser welcomeWithLink' (2 :: Int) - putStrLn "*** try approving with the old registration code" + -- putStrLn "*** try approving with the old registration code" superUser #> "@SimpleX-Directory /approve 1:PSA 1" superUser <# "SimpleX-Directory> > /approve 1:PSA 1" superUser <## " Incorrect approval code" - putStrLn "*** update profile so that it has no link" + -- putStrLn "*** update profile so that it has no link" updateGroupProfile bob "Welcome!" bob <# "SimpleX-Directory> The group link for ID 1 (PSA) is removed from the welcome message." bob <## "" @@ -106,7 +112,7 @@ testDirectoryService tmp = superUser #> "@SimpleX-Directory /approve 1:PSA 2" superUser <# "SimpleX-Directory> > /approve 1:PSA 2" superUser <## " Error: the group ID 1 (PSA) is not pending approval." - putStrLn "*** update profile so that it has link again" + -- putStrLn "*** update profile so that it has link again" updateGroupProfile bob welcomeWithLink' bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (PSA) is added to the welcome message." bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." @@ -254,77 +260,184 @@ testAnotherOwnerChangedProfile tmp = testRegOwnerRemovedLink :: HasCallStack => FilePath -> IO () testRegOwnerRemovedLink tmp = withDirectoryService tmp $ \superUser dsLink -> - withNewTestChat tmp "bob" bobProfile $ \bob -> do - withNewTestChat tmp "cath" cathProfile $ \cath -> do - bob `connectVia` dsLink - registerGroup superUser bob "privacy" "Privacy" - addCathAsOwner bob cath - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - welcomeWithLink <- getTermLine bob - bob ##> "/set welcome #privacy Welcome!" - bob <## "description changed to:" - bob <## "Welcome!" - bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - cath <## "bob updated group #privacy:" - cath <## "description changed to:" - cath <## "Welcome!" - superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." - groupNotFound cath "privacy" - bob ##> ("/set welcome #privacy " <> welcomeWithLink) - bob <## "description changed to:" - bob <## welcomeWithLink - bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." - bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." - cath <## "bob updated group #privacy:" - cath <## "description changed to:" - cath <## welcomeWithLink - reapproveGroup superUser bob - groupFound cath "privacy" + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/show welcome #privacy" + bob <## "Welcome message:" + welcomeWithLink <- getTermLine bob + bob ##> "/set welcome #privacy Welcome!" + bob <## "description changed to:" + bob <## "Welcome!" + bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." + bob <## "" + bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## "Welcome!" + superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." + groupNotFound cath "privacy" + bob ##> ("/set welcome #privacy " <> welcomeWithLink) + bob <## "description changed to:" + bob <## welcomeWithLink + bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## welcomeWithLink + reapproveGroup superUser bob + groupFound cath "privacy" testAnotherOwnerRemovedLink :: HasCallStack => FilePath -> IO () testAnotherOwnerRemovedLink tmp = withDirectoryService tmp $ \superUser dsLink -> - withNewTestChat tmp "bob" bobProfile $ \bob -> do - withNewTestChat tmp "cath" cathProfile $ \cath -> do - bob `connectVia` dsLink - registerGroup superUser bob "privacy" "Privacy" - addCathAsOwner bob cath - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - welcomeWithLink <- getTermLine bob - cath ##> "/set welcome #privacy Welcome!" - cath <## "description changed to:" - cath <## "Welcome!" - bob <## "cath updated group #privacy:" - bob <## "description changed to:" - bob <## "Welcome!" - bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." - groupNotFound cath "privacy" - cath ##> ("/set welcome #privacy " <> welcomeWithLink) - cath <## "description changed to:" - cath <## welcomeWithLink - bob <## "cath updated group #privacy:" - bob <## "description changed to:" - bob <## welcomeWithLink - bob <# "SimpleX-Directory> The group link is added by another group member, your registration will not be processed." - bob <## "" - bob <## "Please update the group profile yourself." - bob ##> ("/set welcome #privacy " <> welcomeWithLink <> " - welcome!") - bob <## "description changed to:" - bob <## (welcomeWithLink <> " - welcome!") - bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." - bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." - cath <## "bob updated group #privacy:" - cath <## "description changed to:" - cath <## (welcomeWithLink <> " - welcome!") - reapproveGroup superUser bob - groupFound cath "privacy" + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + bob ##> "/show welcome #privacy" + bob <## "Welcome message:" + welcomeWithLink <- getTermLine bob + cath ##> "/set welcome #privacy Welcome!" + cath <## "description changed to:" + cath <## "Welcome!" + bob <## "cath updated group #privacy:" + bob <## "description changed to:" + bob <## "Welcome!" + bob <# "SimpleX-Directory> The group link for ID 1 (privacy) is removed from the welcome message." + bob <## "" + bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." + superUser <# "SimpleX-Directory> The group link is removed from ID 1 (privacy), de-listed." + groupNotFound cath "privacy" + cath ##> ("/set welcome #privacy " <> welcomeWithLink) + cath <## "description changed to:" + cath <## welcomeWithLink + bob <## "cath updated group #privacy:" + bob <## "description changed to:" + bob <## welcomeWithLink + bob <# "SimpleX-Directory> The group link is added by another group member, your registration will not be processed." + bob <## "" + bob <## "Please update the group profile yourself." + bob ##> ("/set welcome #privacy " <> welcomeWithLink <> " - welcome!") + bob <## "description changed to:" + bob <## (welcomeWithLink <> " - welcome!") + bob <# "SimpleX-Directory> Thank you! The group link for ID 1 (privacy) is added to the welcome message." + bob <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + cath <## "bob updated group #privacy:" + cath <## "description changed to:" + cath <## (welcomeWithLink <> " - welcome!") + reapproveGroup superUser bob + groupFound cath "privacy" + +testDuplicateAskConfirmation :: HasCallStack => FilePath -> IO () +testDuplicateAskConfirmation tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + _ <- groupAccepted bob "privacy" + cath `connectVia` dsLink + submitGroup cath "privacy" "Privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already submitted to the directory." + cath <## "To confirm the registration, please send:" + cath <# "SimpleX-Directory> /confirm 2:privacy" + cath #> "@SimpleX-Directory /confirm 2:privacy" + welcomeWithLink <- groupAccepted cath "privacy" + groupNotFound bob "privacy" + completeRegistration superUser cath "privacy" "Privacy" welcomeWithLink 2 + groupFound bob "privacy" + +testDuplicateProhibitRegistration :: HasCallStack => FilePath -> IO () +testDuplicateProhibitRegistration tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + cath `connectVia` dsLink + groupFound cath "privacy" + _ <- submitGroup cath "privacy" "Privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already listed in the directory, please choose another name." + +testDuplicateProhibitConfirmation :: HasCallStack => FilePath -> IO () +testDuplicateProhibitConfirmation tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + welcomeWithLink <- groupAccepted bob "privacy" + cath `connectVia` dsLink + submitGroup cath "privacy" "Privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already submitted to the directory." + cath <## "To confirm the registration, please send:" + cath <# "SimpleX-Directory> /confirm 2:privacy" + groupNotFound cath "privacy" + completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + groupFound cath "privacy" + cath #> "@SimpleX-Directory /confirm 2:privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already listed in the directory, please choose another name." + +testDuplicateProhibitWhenUpdated :: HasCallStack => FilePath -> IO () +testDuplicateProhibitWhenUpdated tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + welcomeWithLink <- groupAccepted bob "privacy" + cath `connectVia` dsLink + submitGroup cath "privacy" "Privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already submitted to the directory." + cath <## "To confirm the registration, please send:" + cath <# "SimpleX-Directory> /confirm 2:privacy" + cath #> "@SimpleX-Directory /confirm 2:privacy" + welcomeWithLink' <- groupAccepted cath "privacy" + groupNotFound cath "privacy" + completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + groupFound cath "privacy" + cath ##> ("/set welcome privacy " <> welcomeWithLink') + cath <## "description changed to:" + cath <## welcomeWithLink' + cath <# "SimpleX-Directory> The group privacy (Privacy) is already listed in the directory, please choose another name." + cath ##> "/gp privacy security Security" + cath <## "changed to #security (Security)" + cath <# "SimpleX-Directory> Thank you! The group link for ID 2 (security) is added to the welcome message." + cath <## "You will be notified once the group is added to the directory - it may take up to 24 hours." + notifySuperUser superUser cath "security" "Security" welcomeWithLink' 2 + approveRegistration superUser cath "security" 2 + groupFound bob "security" + groupFound cath "security" + +testDuplicateProhibitApproval :: HasCallStack => FilePath -> IO () +testDuplicateProhibitApproval tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + welcomeWithLink <- groupAccepted bob "privacy" + cath `connectVia` dsLink + submitGroup cath "privacy" "Privacy" + cath <# "SimpleX-Directory> The group privacy (Privacy) is already submitted to the directory." + cath <## "To confirm the registration, please send:" + cath <# "SimpleX-Directory> /confirm 2:privacy" + cath #> "@SimpleX-Directory /confirm 2:privacy" + welcomeWithLink' <- groupAccepted cath "privacy" + updateProfileWithLink cath "privacy" welcomeWithLink' 2 + notifySuperUser superUser cath "privacy" "Privacy" welcomeWithLink' 2 + groupNotFound cath "privacy" + completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + groupFound cath "privacy" + -- fails at approval, as already listed + let approve = "/approve 2:privacy 1" + superUser #> ("@SimpleX-Directory " <> approve) + superUser <# ("SimpleX-Directory> > " <> approve) + superUser <## " The group ID 2 (privacy) is already listed in the directory." reapproveGroup :: HasCallStack => TestCC -> TestCC -> IO () reapproveGroup superUser bob = do @@ -372,35 +485,61 @@ withDirectoryService tmp test = do registerGroup :: TestCC -> TestCC -> String -> String -> IO () registerGroup su u n fn = do + submitGroup u n fn + welcomeWithLink <- groupAccepted u n + completeRegistration su u n fn welcomeWithLink 1 + +submitGroup :: TestCC -> String -> String -> IO () +submitGroup u n fn = do u ##> ("/g " <> n <> " " <> fn) u <## ("group #" <> n <> " (" <> fn <> ") is created") u <## ("to add members use /a " <> n <> " or /create link #" <> n) u ##> ("/a " <> n <> " SimpleX-Directory admin") u <## ("invitation to join the group #" <> n <> " sent to SimpleX-Directory") - u <# ("SimpleX-Directory> Joining the group #" <> n <> "…") + +groupAccepted :: TestCC -> String -> IO String +groupAccepted u n = do + u <# ("SimpleX-Directory> Joining the group " <> n <> "…") u <## ("#" <> n <> ": SimpleX-Directory joined the group") - u <# ("SimpleX-Directory> Joined the group #" <> n <> ", creating the link…") + u <# ("SimpleX-Directory> Joined the group " <> n <> ", creating the link…") u <# "SimpleX-Directory> Created the public link to join the group via this directory service that is always online." u <## "" u <## "Please add it to the group welcome message." u <## "For example, add:" - welcomeWithLink <- dropStrPrefix "SimpleX-Directory> " . dropTime <$> getTermLine u + dropStrPrefix "SimpleX-Directory> " . dropTime <$> getTermLine u -- welcome message with link + +completeRegistration :: TestCC -> TestCC -> String -> String -> String -> Int -> IO () +completeRegistration su u n fn welcomeWithLink gId = do + updateProfileWithLink u n welcomeWithLink gId + notifySuperUser su u n fn welcomeWithLink gId + approveRegistration su u n gId + +updateProfileWithLink :: TestCC -> String -> String -> Int -> IO () +updateProfileWithLink u n welcomeWithLink gId = do u ##> ("/set welcome " <> n <> " " <> welcomeWithLink) u <## "description changed to:" u <## welcomeWithLink - u <# ("SimpleX-Directory> Thank you! The group link for ID 1 (" <> n <> ") is added to the welcome message.") + u <# ("SimpleX-Directory> Thank you! The group link for ID " <> show gId <> " (" <> n <> ") is added to the welcome message.") u <## "You will be notified once the group is added to the directory - it may take up to 24 hours." - su <# ("SimpleX-Directory> bob submitted the group ID 1: " <> n <> " (" <> fn <> ")") + +notifySuperUser :: TestCC -> TestCC -> String -> String -> String -> Int -> IO () +notifySuperUser su u n fn welcomeWithLink gId = do + uName <- userName u + su <# ("SimpleX-Directory> " <> uName <> " submitted the group ID " <> show gId <> ": " <> n <> " (" <> fn <> ")") su <## "Welcome message:" su <## welcomeWithLink su <## "" su <## "To approve send:" - let approve = "/approve 1:" <> n <> " 1" + let approve = "/approve " <> show gId <> ":" <> n <> " 1" su <# ("SimpleX-Directory> " <> approve) + +approveRegistration :: TestCC -> TestCC -> String -> Int -> IO () +approveRegistration su u n gId = do + let approve = "/approve " <> show gId <> ":" <> n <> " 1" su #> ("@SimpleX-Directory " <> approve) su <# ("SimpleX-Directory> > " <> approve) su <## " Group approved!" - u <# ("SimpleX-Directory> The group ID 1 (" <> n <> ") is approved and listed in directory!") + u <# ("SimpleX-Directory> The group ID " <> show gId <> " (" <> n <> ") is approved and listed in directory!") u <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." connectVia :: TestCC -> String -> IO () @@ -441,11 +580,11 @@ removeMember gName admin removed = do removed <## ("use /d " <> gn <> " to delete the group") groupFound :: TestCC -> String -> IO () -groupFound u s = do - u #> ("@SimpleX-Directory " <> s) - u <# ("SimpleX-Directory> > " <> s) +groupFound u name = do + u #> ("@SimpleX-Directory " <> name) + u <# ("SimpleX-Directory> > " <> name) u <## " Found 1 group(s)" - u <#. "SimpleX-Directory> privacy (" + u <#. ("SimpleX-Directory> " <> name <> " (") u <## "Welcome message:" u <##. "Link to join the group privacy: " From 8f723281369dcfdf0296d088fdca86617f28544f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:23:16 +0100 Subject: [PATCH 003/169] directory: delist/relist groups when service or owner roles change (#2844) * directory: delist/relist groups when service or owner roles change * test role changes * correction Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> * directory: suspend and resume group listing (#2848) * directory: suspend and resume group listing * correction Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --- .../src/Directory/Events.hs | 18 +- .../src/Directory/Service.hs | 266 +++++++++++++----- .../src/Directory/Store.hs | 24 +- tests/Bots/DirectoryTests.hs | 139 ++++++++- 4 files changed, 361 insertions(+), 86 deletions(-) diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index 95216dffcf..4bde16e345 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -26,9 +26,9 @@ import Data.Either (fromRight) data DirectoryEvent = DEContactConnected Contact | DEGroupInvitation {contact :: Contact, groupInfo :: GroupInfo, fromMemberRole :: GroupMemberRole, memberRole :: GroupMemberRole} - | DEServiceJoinedGroup ContactId GroupInfo + | DEServiceJoinedGroup {contactId :: ContactId, groupInfo :: GroupInfo, hostMember :: GroupMember} | DEGroupUpdated {contactId :: ContactId, fromGroup :: GroupInfo, toGroup :: GroupInfo} - | DEContactRoleChanged ContactId GroupInfo GroupMemberRole + | DEContactRoleChanged GroupInfo ContactId GroupMemberRole -- contactId here is the contact whose role changed | DEServiceRoleChanged GroupInfo GroupMemberRole | DEContactRemovedFromGroup ContactId GroupInfo | DEContactLeftGroup ContactId GroupInfo @@ -38,15 +38,17 @@ data DirectoryEvent | DEItemEditIgnored Contact | DEItemDeleteIgnored Contact | DEContactCommand Contact ChatItemId ADirectoryCmd + deriving (Show) crDirectoryEvent :: ChatResponse -> Maybe DirectoryEvent crDirectoryEvent = \case CRContactConnected {contact} -> Just $ DEContactConnected contact CRReceivedGroupInvitation {contact, groupInfo, fromMemberRole, memberRole} -> Just $ DEGroupInvitation {contact, groupInfo, fromMemberRole, memberRole} - CRUserJoinedGroup {groupInfo, hostMember} -> (`DEServiceJoinedGroup` groupInfo) <$> memberContactId hostMember + CRUserJoinedGroup {groupInfo, hostMember} -> (\contactId -> DEServiceJoinedGroup {contactId, groupInfo, hostMember}) <$> memberContactId hostMember CRGroupUpdated {fromGroup, toGroup, member_} -> (\contactId -> DEGroupUpdated {contactId, fromGroup, toGroup}) <$> (memberContactId =<< member_) - CRMemberRole {groupInfo, member, toRole} -> (\ctId -> DEContactRoleChanged ctId groupInfo toRole) <$> memberContactId member - CRMemberRoleUser {groupInfo, toRole} -> Just $ DEServiceRoleChanged groupInfo toRole + CRMemberRole {groupInfo, member, toRole} + | groupMemberId' member == groupMemberId' (membership groupInfo) -> Just $ DEServiceRoleChanged groupInfo toRole + | otherwise -> (\ctId -> DEContactRoleChanged groupInfo ctId toRole) <$> memberContactId member CRDeletedMember {groupInfo, deletedMember} -> (`DEContactRemovedFromGroup` groupInfo) <$> memberContactId deletedMember CRLeftMember {groupInfo, member} -> (`DEContactLeftGroup` groupInfo) <$> memberContactId member CRDeletedMemberUser {groupInfo} -> Just $ DEServiceRemovedFromGroup groupInfo @@ -68,6 +70,8 @@ data SDirectoryRole (r :: DirectoryRole) where SDRUser :: SDirectoryRole 'DRUser SDRSuperUser :: SDirectoryRole 'DRSuperUser +deriving instance Show (SDirectoryRole r) + data DirectoryCmdTag (r :: DirectoryRole) where DCHelp_ :: DirectoryCmdTag 'DRUser DCConfirmDuplicateGroup_ :: DirectoryCmdTag 'DRUser @@ -97,8 +101,12 @@ data DirectoryCmd (r :: DirectoryRole) where DCUnknownCommand :: DirectoryCmd 'DRUser DCCommandError :: DirectoryCmdTag r -> DirectoryCmd r +deriving instance Show (DirectoryCmd r) + data ADirectoryCmd = forall r. ADC (SDirectoryRole r) (DirectoryCmd r) +deriving instance Show (ADirectoryCmd) + directoryCmdP :: Parser ADirectoryCmd directoryCmdP = (A.char '/' *> cmdStrP) <|> (ADC SDRUser . DCSearchGroup <$> A.takeText) diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index 116440b91a..68d00268f2 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -34,7 +34,7 @@ import Simplex.Chat.Options import Simplex.Chat.Protocol (MsgContent (..)) import Simplex.Chat.Types import Simplex.Messaging.Encoding.String -import Simplex.Messaging.Util (safeDecodeUtf8, tshow) +import Simplex.Messaging.Util (safeDecodeUtf8, tshow, ($>>=), (<$$>)) import System.Directory (getAppUserDataDirectory) data GroupProfileUpdate = GPNoServiceLink | GPServiceLinkAdded | GPServiceLinkRemoved | GPHasServiceLink | GPServiceLinkError @@ -42,7 +42,14 @@ data GroupProfileUpdate = GPNoServiceLink | GPServiceLinkAdded | GPServiceLinkRe data DuplicateGroup = DGUnique -- display name or full name is unique | DGRegistered -- the group with the same names is registered, additional confirmation is required - | DGListed -- the group with the same names is listed, the registration is not allowed + | DGReserved -- the group with the same names is listed, the registration is not allowed + +data GroupRolesStatus + = GRSOk + | GRSServiceNotAdmin + | GRSContactNotOwner + | GRSBadRoles + deriving (Eq) welcomeGetOpts :: IO DirectoryOpts welcomeGetOpts = do @@ -60,9 +67,9 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d forM_ (crDirectoryEvent resp) $ \case DEContactConnected ct -> deContactConnected ct DEGroupInvitation {contact = ct, groupInfo = g, fromMemberRole, memberRole} -> deGroupInvitation ct g fromMemberRole memberRole - DEServiceJoinedGroup ctId g -> deServiceJoinedGroup ctId g + DEServiceJoinedGroup ctId g owner -> deServiceJoinedGroup ctId g owner DEGroupUpdated {contactId, fromGroup, toGroup} -> deGroupUpdated contactId fromGroup toGroup - DEContactRoleChanged ctId g role -> deContactRoleChanged ctId g role + DEContactRoleChanged g ctId role -> deContactRoleChanged g ctId role DEServiceRoleChanged g role -> deServiceRoleChanged g role DEContactRemovedFromGroup ctId g -> deContactRemovedFromGroup ctId g DEContactLeftGroup ctId g -> deContactLeftGroup ctId g @@ -83,9 +90,13 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d atomically (getGroupReg st groupId) >>= \case Just gr -> action gr Nothing -> putStrLn $ T.unpack $ "Error: " <> err <> ", group: " <> localDisplayName <> ", can't find group registration ID " <> tshow groupId - setGroupInactive GroupReg {groupRegStatus, dbGroupId} grStatus = atomically $ do + setGroupStatus GroupReg {groupRegStatus, dbGroupId} grStatus = atomically $ do writeTVar groupRegStatus grStatus - unlistGroup st dbGroupId + case grStatus of + GRSActive -> listGroup st dbGroupId + GRSSuspended -> reserveGroup st dbGroupId + GRSSuspendedBadRoles -> reserveGroup st dbGroupId + _ -> unlistGroup st dbGroupId groupInfoText GroupProfile {displayName = n, fullName = fn, description = d} = n <> (if n == fn || T.null fn then "" else " (" <> fn <> ")") <> maybe "" ("\nWelcome message:\n" <>) d @@ -112,9 +123,9 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d if null gs then pure DGUnique else do - lgs <- readTVarIO $ listedGroups st - let listed = any (\GroupInfo {groupId = gId} -> gId `S.member` lgs) gs - pure $ if listed then DGListed else DGRegistered + (lgs, rgs) <- atomically $ (,) <$> readTVar (listedGroups st) <*> readTVar (reservedGroups st) + let reserved = any (\GroupInfo {groupId = gId} -> gId `S.member` lgs || gId `S.member` rgs) gs + pure $ if reserved then DGReserved else DGRegistered processInvitation :: Contact -> GroupInfo -> IO () processInvitation ct g@GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = do @@ -134,33 +145,58 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d deGroupInvitation :: Contact -> GroupInfo -> GroupMemberRole -> GroupMemberRole -> IO () deGroupInvitation ct g@GroupInfo {groupId, groupProfile = GroupProfile {displayName, fullName}} fromMemberRole memberRole = do - case badInvitation fromMemberRole memberRole of + case badRolesMsg $ groupRolesStatus fromMemberRole memberRole of Just msg -> sendMessage cc ct msg Nothing -> getDuplicateGroup g >>= \case Just DGUnique -> processInvitation ct g Just DGRegistered -> askConfirmation - Just DGListed -> sendMessage cc ct $ groupAlreadyListed g - Nothing -> sendMessage cc ct $ "Unexpected error, please notify the developers." + Just DGReserved -> sendMessage cc ct $ groupAlreadyListed g + Nothing -> sendMessage cc ct "Error: getDuplicateGroup. Please notify the developers." where - badInvitation contactRole serviceRole = case (contactRole, serviceRole) of - (GROwner, GRAdmin) -> Nothing - (_, GRAdmin) -> Just "You must have a group *owner* role to register the group" - (GROwner, _) -> Just "You must grant directory service *admin* role to register the group" - _ -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group" askConfirmation = do atomically $ addGroupReg st ct g GRSPendingConfirmation sendMessage cc ct $ T.unpack $ "The group " <> displayName <> " (" <> fullName <> ") is already submitted to the directory.\nTo confirm the registration, please send:" sendMessage cc ct $ "/confirm " <> show groupId <> ":" <> T.unpack displayName - deServiceJoinedGroup :: ContactId -> GroupInfo -> IO () - deServiceJoinedGroup ctId g = + badRolesMsg :: GroupRolesStatus -> Maybe String + badRolesMsg = \case + GRSOk -> Nothing + GRSServiceNotAdmin -> Just "You must have a group *owner* role to register the group" + GRSContactNotOwner -> Just "You must grant directory service *admin* role to register the group" + GRSBadRoles -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group" + + getGroupRolesStatus :: GroupInfo -> GroupReg -> IO (Maybe GroupRolesStatus) + getGroupRolesStatus GroupInfo {membership = GroupMember {memberRole = serviceRole}} gr = + rStatus <$$> getGroupMember gr + where + rStatus GroupMember {memberRole} = groupRolesStatus memberRole serviceRole + + groupRolesStatus :: GroupMemberRole -> GroupMemberRole -> GroupRolesStatus + groupRolesStatus contactRole serviceRole = case (contactRole, serviceRole) of + (GROwner, GRAdmin) -> GRSOk + (_, GRAdmin) -> GRSServiceNotAdmin + (GROwner, _) -> GRSContactNotOwner + _ -> GRSBadRoles + + getGroupMember :: GroupReg -> IO (Maybe GroupMember) + getGroupMember GroupReg {dbGroupId, dbOwnerMemberId} = + readTVarIO dbOwnerMemberId + $>>= \mId -> resp <$> sendChatCmd cc (APIGroupMemberInfo dbGroupId mId) + where + resp = \case + CRGroupMemberInfo {member} -> Just member + _ -> Nothing + + deServiceJoinedGroup :: ContactId -> GroupInfo -> GroupMember -> IO () + deServiceJoinedGroup ctId g owner = withGroupReg g "joined group" $ \gr -> when (ctId `isOwner` gr) $ do + atomically $ writeTVar (dbOwnerMemberId gr) (Just $ groupMemberId' owner) let GroupInfo {groupId, groupProfile = GroupProfile {displayName}} = g notifyOwner gr $ T.unpack $ "Joined the group " <> displayName <> ", creating the link…" sendChatCmd cc (APICreateGroupLink groupId GRMember) >>= \case CRGroupLinkCreated {connReqContact} -> do - setGroupInactive gr GRSPendingUpdate + setGroupStatus gr GRSPendingUpdate notifyOwner gr "Created the public link to join the group via this directory service that is always online.\n\n\ \Please add it to the group welcome message.\n\ @@ -196,11 +232,12 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d GRSPendingApproval n -> processProfileChange gr $ n + 1 GRSActive -> processProfileChange gr 1 GRSSuspended -> processProfileChange gr 1 + GRSSuspendedBadRoles -> processProfileChange gr 1 GRSRemoved -> pure () where isInfix l d_ = l `T.isInfixOf` fromMaybe "" d_ GroupInfo {groupId, groupProfile = p} = fromGroup - GroupInfo {groupProfile = p'@GroupProfile {displayName = displayName', image = image'}} = toGroup + GroupInfo {groupProfile = p'} = toGroup groupRef = groupReference toGroup sameProfile GroupProfile {displayName = n, fullName = fn, image = i, description = d} @@ -208,31 +245,31 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d n == n' && fn == fn' && i == i' && d == d' groupLinkAdded gr = do getDuplicateGroup toGroup >>= \case - Nothing -> notifyOwner gr "Unexpected error, please notify the developers." - Just DGListed -> notifyOwner gr $ groupAlreadyListed toGroup + Nothing -> notifyOwner gr "Error: getDuplicateGroup. Please notify the developers." + Just DGReserved -> notifyOwner gr $ groupAlreadyListed toGroup _ -> do notifyOwner gr $ "Thank you! The group link for " <> groupRef <> " is added to the welcome message.\nYou will be notified once the group is added to the directory - it may take up to 24 hours." let gaId = 1 - setGroupInactive gr $ GRSPendingApproval gaId - sendForApproval gr gaId + setGroupStatus gr $ GRSPendingApproval gaId + checkRolesSendToApprove gr gaId processProfileChange gr n' = groupProfileUpdate >>= \case GPNoServiceLink -> do - setGroupInactive gr GRSPendingUpdate + setGroupStatus gr GRSPendingUpdate notifyOwner gr $ "The group profile is updated " <> groupRef <> ", but no link is added to the welcome message.\n\nThe group will remain hidden from the directory until the group link is added and the group is re-approved." GPServiceLinkRemoved -> do - setGroupInactive gr GRSPendingUpdate + setGroupStatus gr GRSPendingUpdate notifyOwner gr $ "The group link for " <> groupRef <> " is removed from the welcome message.\n\nThe group is hidden from the directory until the group link is added and the group is re-approved." notifySuperUsers $ "The group link is removed from " <> groupRef <> ", de-listed." GPServiceLinkAdded -> do - setGroupInactive gr $ GRSPendingApproval n' + setGroupStatus gr $ GRSPendingApproval n' notifyOwner gr $ "The group link is added to " <> groupRef <> "!\nIt is hidden from the directory until approved." notifySuperUsers $ "The group link is added to " <> groupRef <> "." - sendForApproval gr n' + checkRolesSendToApprove gr n' GPHasServiceLink -> do - setGroupInactive gr $ GRSPendingApproval n' + setGroupStatus gr $ GRSPendingApproval n' notifyOwner gr $ "The group " <> groupRef <> " is updated!\nIt is hidden from the directory until approved." notifySuperUsers $ "The group " <> groupRef <> " is updated." - sendForApproval gr n' + checkRolesSendToApprove gr n' GPServiceLinkError -> putStrLn $ "Error: no group link for " <> groupRef <> " pending approval." groupProfileUpdate = profileUpdate <$> sendChatCmd cc (APIGetGroupLink groupId) where @@ -247,45 +284,97 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d | hasLinkNow -> GPServiceLinkAdded | otherwise -> GPNoServiceLink _ -> GPServiceLinkError - sendForApproval GroupReg {dbGroupId, dbContactId} gaId = do - ct_ <- getContact cc dbContactId - let text = maybe ("The group ID " <> tshow dbGroupId <> " submitted: ") (\c -> localDisplayName' c <> " submitted the group ID " <> tshow dbGroupId <> ": ") ct_ - <> groupInfoText p' <> "\n\nTo approve send:" - msg = maybe (MCText text) (\image -> MCImage {text, image}) image' - withSuperUsers $ \cId -> do - sendComposedMessage' cc cId Nothing msg - sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack displayName' <> " " <> show gaId + checkRolesSendToApprove gr gaId = do + (badRolesMsg <$$> getGroupRolesStatus toGroup gr) >>= \case + Nothing -> notifyOwner gr "Error: getGroupRolesStatus. Please notify the developers." + Just (Just msg) -> notifyOwner gr msg + Just Nothing -> sendToApprove toGroup gr gaId - deContactRoleChanged :: ContactId -> GroupInfo -> GroupMemberRole -> IO () - deContactRoleChanged ctId g role = undefined + sendToApprove :: GroupInfo -> GroupReg -> GroupApprovalId -> IO () + sendToApprove GroupInfo {groupProfile = p@GroupProfile {displayName, image = image'}} GroupReg {dbGroupId, dbContactId} gaId = do + ct_ <- getContact cc dbContactId + let text = maybe ("The group ID " <> tshow dbGroupId <> " submitted: ") (\c -> localDisplayName' c <> " submitted the group ID " <> tshow dbGroupId <> ": ") ct_ + <> groupInfoText p <> "\n\nTo approve send:" + msg = maybe (MCText text) (\image -> MCImage {text, image}) image' + withSuperUsers $ \cId -> do + sendComposedMessage' cc cId Nothing msg + sendMessage' cc cId $ "/approve " <> show dbGroupId <> ":" <> T.unpack displayName <> " " <> show gaId + + deContactRoleChanged :: GroupInfo -> ContactId -> GroupMemberRole -> IO () + deContactRoleChanged g@GroupInfo {membership = GroupMember {memberRole = serviceRole}} ctId contactRole = + withGroupReg g "contact role changed" $ \gr -> + when (ctId `isOwner` gr) $ do + readTVarIO (groupRegStatus gr) >>= \case + GRSSuspendedBadRoles -> when (rStatus == GRSOk) $ do + setGroupStatus gr GRSActive + notifyOwner gr $ uCtRole <> ".\n\nThe group is listed in the directory again." + notifySuperUsers $ "The group " <> groupRef <> " is listed " <> suCtRole + GRSPendingApproval gaId -> when (rStatus == GRSOk) $ do + sendToApprove g gr gaId + notifyOwner gr $ uCtRole <> ".\n\nThe group is submitted for approval." + GRSActive -> when (rStatus /= GRSOk) $ do + setGroupStatus gr GRSSuspendedBadRoles + notifyOwner gr $ uCtRole <> ".\n\nThe group is no longer listed in the directory." + notifySuperUsers $ "The group " <> groupRef <> " is de-listed " <> suCtRole + _ -> pure () + where + rStatus = groupRolesStatus contactRole serviceRole + groupRef = groupReference g + ctRole = "*" <> B.unpack (strEncode contactRole) <> "*" + uCtRole = "Your role in the group " <> groupRef <> " is changed to " <> ctRole + suCtRole = "(user role is set to " <> ctRole <> ")." deServiceRoleChanged :: GroupInfo -> GroupMemberRole -> IO () - deServiceRoleChanged g role = undefined + deServiceRoleChanged g serviceRole = do + withGroupReg g "service role changed" $ \gr -> do + readTVarIO (groupRegStatus gr) >>= \case + GRSSuspendedBadRoles -> when (serviceRole == GRAdmin) $ + whenContactIsOwner gr $ do + setGroupStatus gr GRSActive + notifyOwner gr $ uSrvRole <> ".\n\nThe group is listed in the directory again." + notifySuperUsers $ "The group " <> groupRef <> " is listed " <> suSrvRole + GRSPendingApproval gaId -> when (serviceRole == GRAdmin) $ + whenContactIsOwner gr $ do + sendToApprove g gr gaId + notifyOwner gr $ uSrvRole <> ".\n\nThe group is submitted for approval." + GRSActive -> when (serviceRole /= GRAdmin) $ do + setGroupStatus gr GRSSuspendedBadRoles + notifyOwner gr $ uSrvRole <> ".\n\nThe group is no longer listed in the directory." + notifySuperUsers $ "The group " <> groupRef <> " is de-listed " <> suSrvRole + _ -> pure () + where + groupRef = groupReference g + srvRole = "*" <> B.unpack (strEncode serviceRole) <> "*" + uSrvRole = serviceName <> " role in the group " <> groupRef <> " is changed to " <> srvRole + suSrvRole = "(" <> serviceName <> " role is changed to " <> srvRole <> ")." + whenContactIsOwner gr action = + getGroupMember gr >>= + mapM_ (\cm@GroupMember {memberRole} -> when (memberRole == GROwner && memberActive cm) action) deContactRemovedFromGroup :: ContactId -> GroupInfo -> IO () deContactRemovedFromGroup ctId g = withGroupReg g "contact removed" $ \gr -> do when (ctId `isOwner` gr) $ do - setGroupInactive gr GRSRemoved + setGroupStatus gr GRSRemoved let groupRef = groupReference g - notifyOwner gr $ "You are removed from the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifyOwner gr $ "You are removed from the group " <> groupRef <> ".\n\nThe group is no longer listed in the directory." notifySuperUsers $ "The group " <> groupRef <> " is de-listed (group owner is removed)." deContactLeftGroup :: ContactId -> GroupInfo -> IO () deContactLeftGroup ctId g = withGroupReg g "contact left" $ \gr -> do when (ctId `isOwner` gr) $ do - setGroupInactive gr GRSRemoved + setGroupStatus gr GRSRemoved let groupRef = groupReference g - notifyOwner gr $ "You left the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifyOwner gr $ "You left the group " <> groupRef <> ".\n\nThe group is no longer listed in the directory." notifySuperUsers $ "The group " <> groupRef <> " is de-listed (group owner left)." deServiceRemovedFromGroup :: GroupInfo -> IO () deServiceRemovedFromGroup g = withGroupReg g "service removed" $ \gr -> do - setGroupInactive gr GRSRemoved + setGroupStatus gr GRSRemoved let groupRef = groupReference g - notifyOwner gr $ serviceName <> " is removed from the group " <> groupRef <> ".\n\nGroup is no longer listed in the directory." + notifyOwner gr $ serviceName <> " is removed from the group " <> groupRef <> ".\n\nThe group is no longer listed in the directory." notifySuperUsers $ "The group " <> groupRef <> " is de-listed (directory service is removed)." deUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRUser -> IO () @@ -309,7 +398,7 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d let text = groupInfoText p msg = maybe (MCText text) (\image -> MCImage {text, image}) image_ sendComposedMessage cc ct Nothing msg - Nothing -> sendReply "Unexpected error, please notify the developers." + Nothing -> sendReply "Error: getGroups. Please notify the developers." DCConfirmDuplicateGroup ugrId gName -> atomically (getGroupReg st ugrId) >>= \case Nothing -> sendReply $ "Group ID " <> show ugrId <> " not found" @@ -321,8 +410,8 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d readTVarIO groupRegStatus >>= \case GRSPendingConfirmation -> do getDuplicateGroup g >>= \case - Nothing -> sendMessage cc ct $ "Unexpected error, please notify the developers." - Just DGListed -> sendMessage cc ct $ groupAlreadyListed g + Nothing -> sendMessage cc ct "Error: getDuplicateGroup. Please notify the developers." + Just DGReserved -> sendMessage cc ct $ groupAlreadyListed g _ -> processInvitation ct g _ -> sendReply $ "Error: the group ID " <> show ugrId <> " (" <> T.unpack displayName <> ") is not pending confirmation." | otherwise -> sendReply $ "Group ID " <> show ugrId <> " has the display name " <> T.unpack displayName @@ -336,34 +425,56 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d deSuperUserCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRSuperUser -> IO () deSuperUserCommand ct ciId cmd | superUser `elem` superUsers = case cmd of - DCApproveGroup {groupId, displayName = n, groupApprovalId} -> - atomically (getGroupReg st groupId) >>= \case - Nothing -> sendReply $ "Group ID " <> show groupId <> " not found" - Just GroupReg {dbContactId, groupRegStatus} -> do - readTVarIO groupRegStatus >>= \case + DCApproveGroup {groupId, displayName = n, groupApprovalId} -> do + getGroupAndReg groupId n >>= \case + Nothing -> sendReply $ "The group " <> groupRef <> " not found (getGroupAndReg)." + Just (g, gr) -> + readTVarIO (groupRegStatus gr) >>= \case GRSPendingApproval gaId - | gaId == groupApprovalId -> do - getGroup cc groupId >>= \case - Just g@GroupInfo {groupProfile = GroupProfile {displayName = n'}} - | n == n' -> - getDuplicateGroup g >>= \case - Nothing -> sendReply $ "Unexpected error, please notify the developers." - Just DGListed -> sendReply $ "The group " <> groupRef <> " is already listed in the directory." - _ -> do - atomically $ do - writeTVar groupRegStatus GRSActive - listGroup st groupId - sendReply "Group approved!" - sendMessage' cc dbContactId $ "The group " <> groupRef <> " is approved and listed in directory!\nPlease note: if you change the group profile it will be hidden from directory until it is re-approved." - | otherwise -> sendReply "Incorrect group name" - Nothing -> pure () + | gaId == groupApprovalId -> do + getDuplicateGroup g >>= \case + Nothing -> sendReply "Error: getDuplicateGroup. Please notify the developers." + Just DGReserved -> sendReply $ "The group " <> groupRef <> " is already listed in the directory." + _ -> do + getGroupRolesStatus g gr >>= \case + Just GRSOk -> do + setGroupStatus gr GRSActive + sendReply "Group approved!" + notifyOwner gr $ "The group " <> groupRef <> " is approved and listed in directory!\nPlease note: if you change the group profile it will be hidden from directory until it is re-approved." + Just GRSServiceNotAdmin -> replyNotApproved serviceNotAdmin + Just GRSContactNotOwner -> replyNotApproved "user is not an owner." + Just GRSBadRoles -> replyNotApproved $ "user is not an owner, " <> serviceNotAdmin + Nothing -> sendReply "Error: getGroupRolesStatus. Please notify the developers." + where + replyNotApproved reason = sendReply $ "Group is not approved: " <> reason + serviceNotAdmin = serviceName <> " is not an admin." | otherwise -> sendReply "Incorrect approval code" _ -> sendReply $ "Error: the group " <> groupRef <> " is not pending approval." where groupRef = "ID " <> show groupId <> " (" <> T.unpack n <> ")" DCRejectGroup _gaId _gName -> pure () - DCSuspendGroup _gId _gName -> pure () - DCResumeGroup _gId _gName -> pure () + DCSuspendGroup groupId gName -> do + let groupRef = "ID " <> show groupId <> " (" <> T.unpack gName <> ")" + getGroupAndReg groupId gName >>= \case + Nothing -> sendReply $ "The group " <> groupRef <> " not found (getGroupAndReg)." + Just (_, gr) -> + readTVarIO (groupRegStatus gr) >>= \case + GRSActive -> do + setGroupStatus gr GRSSuspended + notifyOwner gr $ "The group " <> groupRef <> " is suspended and hidden from directory. Please contact the administrators." + sendReply "Group suspended!" + _ -> sendReply $ "The group " <> groupRef <> " is not active, can't be suspended." + DCResumeGroup groupId gName -> do + let groupRef = "ID " <> show groupId <> " (" <> T.unpack gName <> ")" + getGroupAndReg groupId gName >>= \case + Nothing -> sendReply $ "The group " <> groupRef <> " not found (getGroupAndReg)." + Just (_, gr) -> + readTVarIO (groupRegStatus gr) >>= \case + GRSSuspended -> do + setGroupStatus gr GRSActive + notifyOwner gr $ "The group " <> groupRef <> " is listed in the directory again!" + sendReply "Group listing resumed!" + _ -> sendReply $ "The group " <> groupRef <> " is not suspended, can't be resumed." DCListGroups -> pure () DCCommandError tag -> sendReply $ "Command error: " <> show tag | otherwise = sendReply "You are not allowed to use this command" @@ -371,6 +482,15 @@ directoryService st DirectoryOpts {superUsers, serviceName} User {userId} cc = d superUser = KnownContact {contactId = contactId' ct, localDisplayName = localDisplayName' ct} sendReply = sendComposedMessage cc ct (Just ciId) . textMsgContent + getGroupAndReg :: GroupId -> GroupName -> IO (Maybe (GroupInfo, GroupReg)) + getGroupAndReg gId gName = + getGroup cc gId + $>>= \g@GroupInfo {groupProfile = GroupProfile {displayName}} -> + if displayName == gName + then atomically (getGroupReg st gId) + $>>= \gr -> pure $ Just (g, gr) + else pure Nothing + getContact :: ChatController -> ContactId -> IO (Maybe Contact) getContact cc ctId = resp <$> sendChatCmd cc (APIGetChat (ChatRef CTDirect ctId) (CPLast 0) Nothing) where diff --git a/apps/simplex-directory-service/src/Directory/Store.hs b/apps/simplex-directory-service/src/Directory/Store.hs index b4508d6b92..d5d00b53b5 100644 --- a/apps/simplex-directory-service/src/Directory/Store.hs +++ b/apps/simplex-directory-service/src/Directory/Store.hs @@ -12,13 +12,15 @@ import qualified Data.Set as S data DirectoryStore = DirectoryStore { groupRegs :: TVar [GroupReg], - listedGroups :: TVar (Set GroupId) + listedGroups :: TVar (Set GroupId), + reservedGroups :: TVar (Set GroupId) } data GroupReg = GroupReg { userGroupRegId :: UserGroupRegId, dbGroupId :: GroupId, dbContactId :: ContactId, + dbOwnerMemberId :: TVar (Maybe GroupMemberId), groupRegStatus :: TVar GroupRegStatus } @@ -35,12 +37,14 @@ data GroupRegStatus | GRSPendingApproval GroupApprovalId | GRSActive | GRSSuspended + | GRSSuspendedBadRoles | GRSRemoved addGroupReg :: DirectoryStore -> Contact -> GroupInfo -> GroupRegStatus -> STM () addGroupReg st ct GroupInfo {groupId} grStatus = do + dbOwnerMemberId <- newTVar Nothing groupRegStatus <- newTVar grStatus - let gr = GroupReg {userGroupRegId = groupId, dbGroupId = groupId, dbContactId = contactId' ct, groupRegStatus} + let gr = GroupReg {userGroupRegId = groupId, dbGroupId = groupId, dbContactId = contactId' ct, dbOwnerMemberId, groupRegStatus} modifyTVar' (groupRegs st) (gr :) getGroupReg :: DirectoryStore -> GroupRegId -> STM (Maybe GroupReg) @@ -58,10 +62,19 @@ filterListedGroups st gs = do pure $ filter (\GroupInfo {groupId} -> groupId `S.member` lgs) gs listGroup :: DirectoryStore -> GroupId -> STM () -listGroup st gId = modifyTVar' (listedGroups st) $ S.insert gId +listGroup st gId = do + modifyTVar' (listedGroups st) $ S.insert gId + modifyTVar' (reservedGroups st) $ S.delete gId + +reserveGroup :: DirectoryStore -> GroupId -> STM () +reserveGroup st gId = do + modifyTVar' (listedGroups st) $ S.delete gId + modifyTVar' (reservedGroups st) $ S.insert gId unlistGroup :: DirectoryStore -> GroupId -> STM () -unlistGroup st gId = modifyTVar' (listedGroups st) $ S.delete gId +unlistGroup st gId = do + modifyTVar' (listedGroups st) $ S.delete gId + modifyTVar' (reservedGroups st) $ S.delete gId data DirectoryLogRecord = CreateGroupReg GroupReg @@ -81,7 +94,8 @@ newDirectoryStore :: STM DirectoryStore newDirectoryStore = do groupRegs <- newTVar [] listedGroups <- newTVar mempty - pure DirectoryStore {groupRegs, listedGroups} + reservedGroups <- newTVar mempty + pure DirectoryStore {groupRegs, listedGroups, reservedGroups} readDirectoryState :: FilePath -> IO [GroupReg] readDirectoryState _ = pure [] diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index d1c34e7ada..1712efbd66 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -22,12 +22,17 @@ import Test.Hspec directoryServiceTests :: SpecWith FilePath directoryServiceTests = do it "should register group" testDirectoryService + it "should suspend and resume group" testSuspendResume describe "de-listing the group" $ do it "should de-list if owner leaves the group" testDelistedOwnerLeaves it "should de-list if owner is removed from the group" testDelistedOwnerRemoved it "should NOT de-list if another member leaves the group" testNotDelistedMemberLeaves it "should NOT de-list if another member is removed from the group" testNotDelistedMemberRemoved it "should de-list if service is removed from the group" testDelistedServiceRemoved + it "should de-list/re-list when service/owner roles change" testDelistedRoleChanges + it "should NOT de-list if another member role changes" testNotDelistedMemberRoleChanged + it "should NOT send to approval if roles are incorrect" testNotSentApprovalBadRoles + it "should NOT allow approving if roles are incorrect" testNotApprovedBadRoles describe "should require re-approval if profile is changed by" $ do it "the registration owner" testRegOwnerChangedProfile it "another owner" testAnotherOwnerChangedProfile @@ -146,6 +151,24 @@ testDirectoryService tmp = su <## "To approve send:" su <# ("SimpleX-Directory> /approve 1:PSA " <> show grId) +testSuspendResume :: HasCallStack => FilePath -> IO () +testSuspendResume tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + groupFound bob "privacy" + superUser #> "@SimpleX-Directory /suspend 1:privacy" + superUser <# "SimpleX-Directory> > /suspend 1:privacy" + superUser <## " Group suspended!" + bob <# "SimpleX-Directory> The group ID 1 (privacy) is suspended and hidden from directory. Please contact the administrators." + groupNotFound bob "privacy" + superUser #> "@SimpleX-Directory /resume 1:privacy" + superUser <# "SimpleX-Directory> > /resume 1:privacy" + superUser <## " Group listing resumed!" + bob <# "SimpleX-Directory> The group ID 1 (privacy) is listed in the directory again!" + groupFound bob "privacy" + testDelistedOwnerLeaves :: HasCallStack => FilePath -> IO () testDelistedOwnerLeaves tmp = withDirectoryService tmp $ \superUser dsLink -> @@ -158,7 +181,7 @@ testDelistedOwnerLeaves tmp = cath <## "#privacy: bob left the group" bob <# "SimpleX-Directory> You left the group ID 1 (privacy)." bob <## "" - bob <## "Group is no longer listed in the directory." + bob <## "The group is no longer listed in the directory." superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (group owner left)." groupNotFound cath "privacy" @@ -173,7 +196,7 @@ testDelistedOwnerRemoved tmp = removeMember "privacy" cath bob bob <# "SimpleX-Directory> You are removed from the group ID 1 (privacy)." bob <## "" - bob <## "Group is no longer listed in the directory." + bob <## "The group is no longer listed in the directory." superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (group owner is removed)." groupNotFound cath "privacy" @@ -215,10 +238,120 @@ testDelistedServiceRemoved tmp = cath <## "#privacy: bob removed SimpleX-Directory from the group" bob <# "SimpleX-Directory> SimpleX-Directory is removed from the group ID 1 (privacy)." bob <## "" - bob <## "Group is no longer listed in the directory." + bob <## "The group is no longer listed in the directory." superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (directory service is removed)." groupNotFound cath "privacy" +testDelistedRoleChanges :: HasCallStack => FilePath -> IO () +testDelistedRoleChanges tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + groupFound cath "privacy" + -- de-listed if service role changed + bob ##> "/mr privacy SimpleX-Directory member" + bob <## "#privacy: you changed the role of SimpleX-Directory from admin to member" + cath <## "#privacy: bob changed the role of SimpleX-Directory from admin to member" + bob <# "SimpleX-Directory> SimpleX-Directory role in the group ID 1 (privacy) is changed to member." + bob <## "" + bob <## "The group is no longer listed in the directory." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (SimpleX-Directory role is changed to member)." + groupNotFound cath "privacy" + -- re-listed if service role changed back without profile changes + cath ##> "/mr privacy SimpleX-Directory admin" + cath <## "#privacy: you changed the role of SimpleX-Directory from member to admin" + bob <## "#privacy: cath changed the role of SimpleX-Directory from member to admin" + bob <# "SimpleX-Directory> SimpleX-Directory role in the group ID 1 (privacy) is changed to admin." + bob <## "" + bob <## "The group is listed in the directory again." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is listed (SimpleX-Directory role is changed to admin)." + groupFound cath "privacy" + -- de-listed if owner role changed + cath ##> "/mr privacy bob admin" + cath <## "#privacy: you changed the role of bob from owner to admin" + bob <## "#privacy: cath changed your role from owner to admin" + bob <# "SimpleX-Directory> Your role in the group ID 1 (privacy) is changed to admin." + bob <## "" + bob <## "The group is no longer listed in the directory." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is de-listed (user role is set to admin)." + groupNotFound cath "privacy" + -- re-listed if owner role changed back without profile changes + cath ##> "/mr privacy bob owner" + cath <## "#privacy: you changed the role of bob from admin to owner" + bob <## "#privacy: cath changed your role from admin to owner" + bob <# "SimpleX-Directory> Your role in the group ID 1 (privacy) is changed to owner." + bob <## "" + bob <## "The group is listed in the directory again." + superUser <# "SimpleX-Directory> The group ID 1 (privacy) is listed (user role is set to owner)." + groupFound cath "privacy" + +testNotDelistedMemberRoleChanged :: HasCallStack => FilePath -> IO () +testNotDelistedMemberRoleChanged tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + registerGroup superUser bob "privacy" "Privacy" + addCathAsOwner bob cath + groupFound cath "privacy" + bob ##> "/mr privacy cath member" + bob <## "#privacy: you changed the role of cath from owner to member" + cath <## "#privacy: bob changed your role from owner to member" + groupFound cath "privacy" + +testNotSentApprovalBadRoles :: HasCallStack => FilePath -> IO () +testNotSentApprovalBadRoles tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + cath `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + welcomeWithLink <- groupAccepted bob "privacy" + bob ##> "/mr privacy SimpleX-Directory member" + bob <## "#privacy: you changed the role of SimpleX-Directory from admin to member" + updateProfileWithLink bob "privacy" welcomeWithLink 1 + bob <# "SimpleX-Directory> You must grant directory service admin role to register the group" + bob ##> "/mr privacy SimpleX-Directory admin" + bob <## "#privacy: you changed the role of SimpleX-Directory from member to admin" + bob <# "SimpleX-Directory> SimpleX-Directory role in the group ID 1 (privacy) is changed to admin." + bob <## "" + bob <## "The group is submitted for approval." + notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 + groupNotFound cath "privacy" + approveRegistration superUser bob "privacy" 1 + groupFound cath "privacy" + +testNotApprovedBadRoles :: HasCallStack => FilePath -> IO () +testNotApprovedBadRoles tmp = + withDirectoryService tmp $ \superUser dsLink -> + withNewTestChat tmp "bob" bobProfile $ \bob -> do + withNewTestChat tmp "cath" cathProfile $ \cath -> do + bob `connectVia` dsLink + cath `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + welcomeWithLink <- groupAccepted bob "privacy" + updateProfileWithLink bob "privacy" welcomeWithLink 1 + notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 + bob ##> "/mr privacy SimpleX-Directory member" + bob <## "#privacy: you changed the role of SimpleX-Directory from admin to member" + let approve = "/approve 1:privacy 1" + superUser #> ("@SimpleX-Directory " <> approve) + superUser <# ("SimpleX-Directory> > " <> approve) + superUser <## " Group is not approved: user is not an owner." + groupNotFound cath "privacy" + bob ##> "/mr privacy SimpleX-Directory admin" + bob <## "#privacy: you changed the role of SimpleX-Directory from member to admin" + bob <# "SimpleX-Directory> SimpleX-Directory role in the group ID 1 (privacy) is changed to admin." + bob <## "" + bob <## "The group is submitted for approval." + notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 + approveRegistration superUser bob "privacy" 1 + groupFound cath "privacy" + testRegOwnerChangedProfile :: HasCallStack => FilePath -> IO () testRegOwnerChangedProfile tmp = withDirectoryService tmp $ \superUser dsLink -> From b003d659e49407d420f12c826bbcfdf8f3a7a420 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Fri, 4 Aug 2023 16:55:55 +0100 Subject: [PATCH 004/169] Revert "core: rework incognito mode - set per connection (#2838)" This reverts commit 4e27a4ea4f53d4d8f38ff411ea5bdad4fcd23e49. --- src/Simplex/Chat.hs | 83 ++++++------- src/Simplex/Chat/Controller.hs | 23 ++-- src/Simplex/Chat/Help.hs | 42 ++----- src/Simplex/Chat/Store/Direct.hs | 33 +---- src/Simplex/Chat/Store/Profiles.hs | 7 +- src/Simplex/Chat/Store/Shared.hs | 4 +- src/Simplex/Chat/Types.hs | 6 +- src/Simplex/Chat/View.hs | 10 +- tests/ChatTests/Groups.hs | 11 +- tests/ChatTests/Profiles.hs | 193 ++++++----------------------- 10 files changed, 120 insertions(+), 292 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index aa896cb357..79745f198b 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -193,6 +193,7 @@ newChatController ChatDatabase {chatStore, agentStore} user cfg@ChatConfig {agen rcvFiles <- newTVarIO M.empty currentCalls <- atomically TM.empty filesFolder <- newTVarIO optFilesFolder + incognitoMode <- newTVarIO False chatStoreChanged <- newTVarIO False expireCIThreads <- newTVarIO M.empty expireCIFlags <- newTVarIO M.empty @@ -201,7 +202,7 @@ newChatController ChatDatabase {chatStore, agentStore} user cfg@ChatConfig {agen showLiveItems <- newTVarIO False userXFTPFileConfig <- newTVarIO $ xftpFileConfig cfg tempDirectory <- newTVarIO tempDir - pure ChatController {activeTo, firstTime, currentUser, smpAgent, agentAsync, chatStore, chatStoreChanged, idsDrg, inputQ, outputQ, notifyQ, chatLock, sndFiles, rcvFiles, currentCalls, config, sendNotification, filesFolder, expireCIThreads, expireCIFlags, cleanupManagerAsync, timedItemThreads, showLiveItems, userXFTPFileConfig, tempDirectory, logFilePath = logFile} + pure ChatController {activeTo, firstTime, currentUser, smpAgent, agentAsync, chatStore, chatStoreChanged, idsDrg, inputQ, outputQ, notifyQ, chatLock, sndFiles, rcvFiles, currentCalls, config, sendNotification, incognitoMode, filesFolder, expireCIThreads, expireCIFlags, cleanupManagerAsync, timedItemThreads, showLiveItems, userXFTPFileConfig, tempDirectory, logFilePath = logFile} where configServers :: DefaultAgentServers configServers = @@ -472,6 +473,9 @@ processChatCommand = \case APISetXFTPConfig cfg -> do asks userXFTPFileConfig >>= atomically . (`writeTVar` cfg) ok_ + SetIncognito onOff -> do + asks incognitoMode >>= atomically . (`writeTVar` onOff) + ok_ APIExportArchive cfg -> checkChatStopped $ exportArchive cfg >> ok_ ExportArchive -> do ts <- liftIO getCurrentTime @@ -926,9 +930,10 @@ processChatCommand = \case pure $ CRChatCleared user (AChatInfo SCTGroup $ GroupChat gInfo) CTContactConnection -> pure $ chatCmdError (Just user) "not supported" CTContactRequest -> pure $ chatCmdError (Just user) "not supported" - APIAcceptContact incognito connReqId -> withUser $ \_ -> withChatLock "acceptContact" $ do + APIAcceptContact connReqId -> withUser $ \_ -> withChatLock "acceptContact" $ do (user, cReq) <- withStore $ \db -> getContactRequest' db connReqId -- [incognito] generate profile to send, create connection with incognito profile + incognito <- readTVarIO =<< asks incognitoMode incognitoProfile <- if incognito then Just . NewIncognito <$> liftIO generateRandomProfile else pure Nothing ct <- acceptContactRequest user cReq incognitoProfile pure $ CRAcceptingContactRequest user ct @@ -1234,45 +1239,32 @@ processChatCommand = \case EnableGroupMember gName mName -> withMemberName gName mName $ \gId mId -> APIEnableGroupMember gId mId ChatHelp section -> pure $ CRChatHelp section Welcome -> withUser $ pure . CRWelcome - APIAddContact userId incognito -> withUserId userId $ \user -> withChatLock "addContact" . procCmd $ do + APIAddContact userId -> withUserId userId $ \user -> withChatLock "addContact" . procCmd $ do -- [incognito] generate profile for connection + incognito <- readTVarIO =<< asks incognitoMode incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMInvitation Nothing conn <- withStore' $ \db -> createDirectConnection db user connId cReq ConnNew incognitoProfile toView $ CRNewContactConnection user conn - pure $ CRInvitation user cReq conn - AddContact incognito -> withUser $ \User {userId} -> - processChatCommand $ APIAddContact userId incognito - APISetConnectionIncognito connId incognito -> withUser $ \user@User {userId} -> do - conn'_ <- withStore $ \db -> do - conn@PendingContactConnection {pccConnStatus, customUserProfileId} <- getPendingContactConnection db userId connId - case (pccConnStatus, customUserProfileId, incognito) of - (ConnNew, Nothing, True) -> liftIO $ do - incognitoProfile <- generateRandomProfile - pId <- createIncognitoProfile db user incognitoProfile - Just <$> updatePCCIncognito db user conn (Just pId) - (ConnNew, Just pId, False) -> liftIO $ do - deletePCCIncognitoProfile db user pId - Just <$> updatePCCIncognito db user conn Nothing - _ -> pure Nothing - case conn'_ of - Just conn' -> pure $ CRConnectionIncognitoUpdated user conn' - Nothing -> throwChatError CEConnectionIncognitoChangeProhibited - APIConnect userId incognito (Just (ACR SCMInvitation cReq)) -> withUserId userId $ \user -> withChatLock "connect" . procCmd $ do + pure $ CRInvitation user cReq + AddContact -> withUser $ \User {userId} -> + processChatCommand $ APIAddContact userId + APIConnect userId (Just (ACR SCMInvitation cReq)) -> withUserId userId $ \user -> withChatLock "connect" . procCmd $ do -- [incognito] generate profile to send + incognito <- readTVarIO =<< asks incognitoMode incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing let profileToSend = userProfileToSend user incognitoProfile Nothing connId <- withAgent $ \a -> joinConnection a (aUserId user) True cReq . directMessage $ XInfo profileToSend conn <- withStore' $ \db -> createDirectConnection db user connId cReq ConnJoined $ incognitoProfile $> profileToSend toView $ CRNewContactConnection user conn pure $ CRSentConfirmation user - APIConnect userId incognito (Just (ACR SCMContact cReq)) -> withUserId userId $ \user -> connectViaContact user incognito cReq - APIConnect _ _ Nothing -> throwChatError CEInvalidConnReq - Connect incognito cReqUri -> withUser $ \User {userId} -> - processChatCommand $ APIConnect userId incognito cReqUri - ConnectSimplex incognito -> withUser $ \user -> + APIConnect userId (Just (ACR SCMContact cReq)) -> withUserId userId (`connectViaContact` cReq) + APIConnect _ Nothing -> throwChatError CEInvalidConnReq + Connect cReqUri -> withUser $ \User {userId} -> + processChatCommand $ APIConnect userId cReqUri + ConnectSimplex -> withUser $ \user -> -- [incognito] generate profile to send - connectViaContact user incognito adminContactReq + connectViaContact user adminContactReq DeleteContact cName -> withContactName cName $ APIDeleteChat . ChatRef CTDirect ClearContact cName -> withContactName cName $ APIClearChat . ChatRef CTDirect APIListContacts userId -> withUserId userId $ \user -> @@ -1316,9 +1308,9 @@ processChatCommand = \case pure $ CRUserContactLinkUpdated user contactLink AddressAutoAccept autoAccept_ -> withUser $ \User {userId} -> processChatCommand $ APIAddressAutoAccept userId autoAccept_ - AcceptContact incognito cName -> withUser $ \User {userId} -> do + AcceptContact cName -> withUser $ \User {userId} -> do connReqId <- withStore $ \db -> getContactRequestIdByName db userId cName - processChatCommand $ APIAcceptContact incognito connReqId + processChatCommand $ APIAcceptContact connReqId RejectContact cName -> withUser $ \User {userId} -> do connReqId <- withStore $ \db -> getContactRequestIdByName db userId cName processChatCommand $ APIRejectContact connReqId @@ -1762,8 +1754,8 @@ processChatCommand = \case CTDirect -> withStore $ \db -> getDirectChatItemIdByText' db user cId msg CTGroup -> withStore $ \db -> getGroupChatItemIdByText' db user cId msg _ -> throwChatError $ CECommandError "not supported" - connectViaContact :: User -> IncognitoEnabled -> ConnectionRequestUri 'CMContact -> m ChatResponse - connectViaContact user@User {userId} incognito cReq@(CRContactUri ConnReqUriData {crClientData}) = withChatLock "connectViaContact" $ do + connectViaContact :: User -> ConnectionRequestUri 'CMContact -> m ChatResponse + connectViaContact user@User {userId} cReq@(CRContactUri ConnReqUriData {crClientData}) = withChatLock "connectViaContact" $ do let cReqHash = ConnReqUriHash . C.sha256Hash $ strEncode cReq withStore' (\db -> getConnReqContactXContactId db user cReqHash) >>= \case (Just contact, _) -> pure $ CRContactAlreadyExists user contact @@ -1771,6 +1763,11 @@ processChatCommand = \case let randomXContactId = XContactId <$> drgRandomBytes 16 xContactId <- maybe randomXContactId pure xContactId_ -- [incognito] generate profile to send + -- if user makes a contact request using main profile, then turns on incognito mode and repeats the request, + -- an incognito profile will be sent even though the address holder will have user's main profile received as well; + -- we ignore this edge case as we already allow profile updates on repeat contact requests; + -- alternatively we can re-send the main profile even if incognito mode is enabled + incognito <- readTVarIO =<< asks incognitoMode incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing let profileToSend = userProfileToSend user incognitoProfile Nothing connId <- withAgent $ \a -> joinConnection a (aUserId user) True cReq $ directMessage (XContact profileToSend $ Just xContactId) @@ -3439,7 +3436,7 @@ processAgentMessageConn user@User {userId} corrId agentConnId agentMessage = do setActive $ ActiveG g showToast ("#" <> g) $ "member " <> c <> " is connected" - probeMatchingContacts :: Contact -> IncognitoEnabled -> m () + probeMatchingContacts :: Contact -> Bool -> m () probeMatchingContacts ct connectedIncognito = do gVar <- asks idsDrg (probe, probeId) <- withStore $ \db -> createSentProbe db gVar userId ct @@ -5036,7 +5033,7 @@ chatCommandP = "/_unread chat " *> (APIChatUnread <$> chatRefP <* A.space <*> onOffP), "/_delete " *> (APIDeleteChat <$> chatRefP), "/_clear chat " *> (APIClearChat <$> chatRefP), - "/_accept" *> (APIAcceptContact <$> incognitoOnOffP <* A.space <*> A.decimal), + "/_accept " *> (APIAcceptContact <$> A.decimal), "/_reject " *> (APIRejectContact <$> A.decimal), "/_call invite @" *> (APISendCallInvitation <$> A.decimal <* A.space <*> jsonP), "/call " *> char_ '@' *> (SendCallInvitation <$> displayName <*> pure defaultCallType), @@ -5115,7 +5112,6 @@ chatCommandP = ("/help groups" <|> "/help group" <|> "/hg") $> ChatHelp HSGroups, ("/help contacts" <|> "/help contact" <|> "/hc") $> ChatHelp HSContacts, ("/help address" <|> "/ha") $> ChatHelp HSMyAddress, - "/help incognito" $> ChatHelp HSIncognito, ("/help messages" <|> "/hm") $> ChatHelp HSMessages, ("/help settings" <|> "/hs") $> ChatHelp HSSettings, ("/help db" <|> "/hd") $> ChatHelp HSDatabase, @@ -5149,11 +5145,10 @@ chatCommandP = (">#" <|> "> #") *> (SendGroupMessageQuote <$> displayName <* A.space <* char_ '@' <*> (Just <$> displayName) <* A.space <*> quotedMsg <*> msgTextP), "/_contacts " *> (APIListContacts <$> A.decimal), "/contacts" $> ListContacts, - "/_connect " *> (APIConnect <$> A.decimal <*> incognitoOnOffP <* A.space <*> ((Just <$> strP) <|> A.takeByteString $> Nothing)), - "/_connect " *> (APIAddContact <$> A.decimal <*> incognitoOnOffP), - "/_set incognito :" *> (APISetConnectionIncognito <$> A.decimal <* A.space <*> onOffP), - ("/connect" <|> "/c") *> (Connect <$> incognitoP <* A.space <*> ((Just <$> strP) <|> A.takeByteString $> Nothing)), - ("/connect" <|> "/c") *> (AddContact <$> incognitoP), + "/_connect " *> (APIConnect <$> A.decimal <* A.space <*> ((Just <$> strP) <|> A.takeByteString $> Nothing)), + "/_connect " *> (APIAddContact <$> A.decimal), + ("/connect " <|> "/c ") *> (Connect <$> ((Just <$> strP) <|> A.takeByteString $> Nothing)), + ("/connect" <|> "/c") $> AddContact, SendMessage <$> chatNameP <* A.space <*> msgTextP, "/live " *> (SendLiveMessage <$> chatNameP <*> (A.space *> msgTextP <|> pure "")), (">@" <|> "> @") *> sendMsgQuote (AMsgDirection SMDRcv), @@ -5179,7 +5174,7 @@ chatCommandP = "/_set_file_to_receive " *> (SetFileToReceive <$> A.decimal), ("/fcancel " <|> "/fc ") *> (CancelFile <$> A.decimal), ("/fstatus " <|> "/fs ") *> (FileStatus <$> A.decimal), - "/simplex" *> (ConnectSimplex <$> incognitoP), + "/simplex" $> ConnectSimplex, "/_address " *> (APICreateMyAddress <$> A.decimal), ("/address" <|> "/ad") $> CreateMyAddress, "/_delete_address " *> (APIDeleteMyAddress <$> A.decimal), @@ -5190,7 +5185,7 @@ chatCommandP = ("/profile_address " <|> "/pa ") *> (SetProfileAddress <$> onOffP), "/_auto_accept " *> (APIAddressAutoAccept <$> A.decimal <* A.space <*> autoAcceptP), "/auto_accept " *> (AddressAutoAccept <$> autoAcceptP), - ("/accept" <|> "/ac") *> (AcceptContact <$> incognitoP <* A.space <* char_ '@' <*> displayName), + ("/accept " <|> "/ac ") *> char_ '@' *> (AcceptContact <$> displayName), ("/reject " <|> "/rc ") *> char_ '@' *> (RejectContact <$> displayName), ("/markdown" <|> "/m") $> ChatHelp HSMarkdown, ("/welcome" <|> "/w") $> Welcome, @@ -5212,7 +5207,7 @@ chatCommandP = "/set disappear #" *> (SetGroupTimedMessages <$> displayName <*> (A.space *> timedTTLOnOffP)), "/set disappear @" *> (SetContactTimedMessages <$> displayName <*> optional (A.space *> timedMessagesEnabledP)), "/set disappear " *> (SetUserTimedMessages <$> (("yes" $> True) <|> ("no" $> False))), - ("/incognito" <* optional (A.space *> onOffP)) $> ChatHelp HSIncognito, + "/incognito " *> (SetIncognito <$> onOffP), ("/quit" <|> "/q" <|> "/exit") $> QuitChat, ("/version" <|> "/v") $> ShowVersion, "/debug locks" $> DebugLocks, @@ -5221,8 +5216,6 @@ chatCommandP = ] where choice = A.choice . map (\p -> p <* A.takeWhile (== ' ') <* A.endOfInput) - incognitoP = (A.space *> ("incognito" <|> "i")) $> True <|> pure False - incognitoOnOffP = (A.space *> "incognito=" *> onOffP) <|> pure False imagePrefix = (<>) <$> "data:" <*> ("image/png;base64," <|> "image/jpg;base64,") imageP = safeDecodeUtf8 <$> ((<>) <$> imagePrefix <*> (B64.encode <$> base64P)) chatTypeP = A.char '@' $> CTDirect <|> A.char '#' $> CTGroup <|> A.char ':' $> CTContactConnection diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 06e2009543..90f90fdcb6 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -176,6 +176,7 @@ data ChatController = ChatController currentCalls :: TMap ContactId Call, config :: ChatConfig, filesFolder :: TVar (Maybe FilePath), -- path to files folder for mobile apps, + incognitoMode :: TVar Bool, expireCIThreads :: TMap UserId (Maybe (Async ())), expireCIFlags :: TMap UserId Bool, cleanupManagerAsync :: TVar (Maybe (Async ())), @@ -186,7 +187,7 @@ data ChatController = ChatController logFilePath :: Maybe FilePath } -data HelpSection = HSMain | HSFiles | HSGroups | HSContacts | HSMyAddress | HSIncognito | HSMarkdown | HSMessages | HSSettings | HSDatabase +data HelpSection = HSMain | HSFiles | HSGroups | HSContacts | HSMyAddress | HSMarkdown | HSMessages | HSSettings | HSDatabase deriving (Show, Generic) instance ToJSON HelpSection where @@ -222,6 +223,7 @@ data ChatCommand | SetTempFolder FilePath | SetFilesFolder FilePath | APISetXFTPConfig (Maybe XFTPFileConfig) + | SetIncognito Bool | APIExportArchive ArchiveConfig | ExportArchive | APIImportArchive ArchiveConfig @@ -242,7 +244,7 @@ data ChatCommand | APIChatUnread ChatRef Bool | APIDeleteChat ChatRef | APIClearChat ChatRef - | APIAcceptContact IncognitoEnabled Int64 + | APIAcceptContact Int64 | APIRejectContact Int64 | APISendCallInvitation ContactId CallType | SendCallInvitation ContactName CallType @@ -320,12 +322,11 @@ data ChatCommand | EnableGroupMember GroupName ContactName | ChatHelp HelpSection | Welcome - | APIAddContact UserId IncognitoEnabled - | AddContact IncognitoEnabled - | APISetConnectionIncognito Int64 IncognitoEnabled - | APIConnect UserId IncognitoEnabled (Maybe AConnectionRequestUri) - | Connect IncognitoEnabled (Maybe AConnectionRequestUri) - | ConnectSimplex IncognitoEnabled -- UserId (not used in UI) + | APIAddContact UserId + | AddContact + | APIConnect UserId (Maybe AConnectionRequestUri) + | Connect (Maybe AConnectionRequestUri) + | ConnectSimplex -- UserId (not used in UI) | DeleteContact ContactName | ClearContact ContactName | APIListContacts UserId @@ -340,7 +341,7 @@ data ChatCommand | SetProfileAddress Bool | APIAddressAutoAccept UserId (Maybe AutoAccept) | AddressAutoAccept (Maybe AutoAccept) - | AcceptContact IncognitoEnabled ContactName + | AcceptContact ContactName | RejectContact ContactName | SendMessage ChatName Text | SendLiveMessage ChatName Text @@ -466,8 +467,7 @@ data ChatResponse | CRUserProfileNoChange {user :: User} | CRUserPrivacy {user :: User, updatedUser :: User} | CRVersionInfo {versionInfo :: CoreVersionInfo, chatMigrations :: [UpMigration], agentMigrations :: [UpMigration]} - | CRInvitation {user :: User, connReqInvitation :: ConnReqInvitation, connection :: PendingContactConnection} - | CRConnectionIncognitoUpdated {user :: User, toConnection :: PendingContactConnection} + | CRInvitation {user :: User, connReqInvitation :: ConnReqInvitation} | CRSentConfirmation {user :: User} | CRSentInvitation {user :: User, customUserProfile :: Maybe Profile} | CRContactUpdated {user :: User, fromContact :: Contact, toContact :: Contact} @@ -876,7 +876,6 @@ data ChatErrorType | CEServerProtocol {serverProtocol :: AProtocolType} | CEAgentCommandError {message :: String} | CEInvalidFileDescription {message :: String} - | CEConnectionIncognitoChangeProhibited | CEInternalError {message :: String} | CEException {message :: String} deriving (Show, Exception, Generic) diff --git a/src/Simplex/Chat/Help.hs b/src/Simplex/Chat/Help.hs index c2a5720633..c83e81a9ef 100644 --- a/src/Simplex/Chat/Help.hs +++ b/src/Simplex/Chat/Help.hs @@ -8,7 +8,6 @@ module Simplex.Chat.Help groupsHelpInfo, contactsHelpInfo, myAddressHelpInfo, - incognitoHelpInfo, messagesHelpInfo, markdownInfo, settingsInfo, @@ -49,7 +48,7 @@ chatWelcome user = "Welcome " <> green userName <> "!", "Thank you for installing SimpleX Chat!", "", - "Connect to SimpleX Chat developers for any questions - just type " <> highlight "/simplex", + "Connect to SimpleX Chat lead developer for any questions - just type " <> highlight "/simplex", "", "Follow our updates:", "> Reddit: https://www.reddit.com/r/SimpleXChat/", @@ -214,26 +213,6 @@ myAddressHelpInfo = "The commands may be abbreviated: " <> listHighlight ["/ad", "/da", "/sa", "/ac", "/rc"] ] -incognitoHelpInfo :: [StyledString] -incognitoHelpInfo = - map - styleMarkdown - [ markdown (colored Red) "/incognito" <> " command is deprecated, use commands below instead.", - "", - "Incognito mode protects the privacy of your main profile — you can choose to create a new random profile for each new contact.", - "It allows having many anonymous connections without any shared data between them in a single chat profile.", - "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to.", - "", - green "Incognito commands:", - indent <> highlight "/connect incognito " <> " - create new invitation link using incognito profile", - indent <> highlight "/connect incognito " <> " - accept invitation using incognito profile", - indent <> highlight "/accept incognito " <> " - accept contact request using incognito profile", - indent <> highlight "/simplex incognito " <> " - connect to SimpleX Chat developers using incognito profile", - "", - "The commands may be abbreviated: " <> listHighlight ["/c i", "/c i ", "/ac i "], - "To find the profile used for an incognito connection, use " <> highlight "/info " <> "." - ] - messagesHelpInfo :: [StyledString] messagesHelpInfo = map @@ -290,6 +269,7 @@ settingsInfo = map styleMarkdown [ green "Chat settings:", + indent <> highlight "/incognito on/off " <> " - enable/disable incognito mode", indent <> highlight "/network " <> " - show / set network access options", indent <> highlight "/smp " <> " - show / set configured SMP servers", indent <> highlight "/xftp " <> " - show / set configured XFTP servers", @@ -305,12 +285,12 @@ databaseHelpInfo :: [StyledString] databaseHelpInfo = map styleMarkdown - [ green "Database export:", - indent <> highlight "/db export " <> " - create database export file that can be imported in mobile apps", - indent <> highlight "/files_folder " <> " - set files folder path to include app files in the exported archive", - "", - green "Database encryption:", - indent <> highlight "/db encrypt " <> " - encrypt chat database with key/passphrase", - indent <> highlight "/db key " <> " - change the key of the encrypted app database", - indent <> highlight "/db decrypt " <> " - decrypt chat database" - ] + [ green "Database export:", + indent <> highlight "/db export " <> " - create database export file that can be imported in mobile apps", + indent <> highlight "/files_folder " <> " - set files folder path to include app files in the exported archive", + "", + green "Database encryption:", + indent <> highlight "/db encrypt " <> " - encrypt chat database with key/passphrase", + indent <> highlight "/db key " <> " - change the key of the encrypted app database", + indent <> highlight "/db decrypt " <> " - decrypt chat database" + ] diff --git a/src/Simplex/Chat/Store/Direct.hs b/src/Simplex/Chat/Store/Direct.hs index 9c18350b85..944527ae48 100644 --- a/src/Simplex/Chat/Store/Direct.hs +++ b/src/Simplex/Chat/Store/Direct.hs @@ -17,7 +17,6 @@ module Simplex.Chat.Store.Direct getPendingContactConnection, deletePendingContactConnection, createDirectConnection, - createIncognitoProfile, createConnReqConnection, getProfileById, getConnReqContactXContactId, @@ -34,8 +33,6 @@ module Simplex.Chat.Store.Direct updateContactUserPreferences, updateContactAlias, updateContactConnectionAlias, - updatePCCIncognito, - deletePCCIncognitoProfile, updateContactUsed, updateContactUnreadChat, updateGroupUnreadChat, @@ -174,11 +171,6 @@ createDirectConnection db User {userId} acId cReq pccConnStatus incognitoProfile pccConnId <- insertedRowId db pure PendingContactConnection {pccConnId, pccAgentConnId = AgentConnId acId, pccConnStatus, viaContactUri = False, viaUserContactLink = Nothing, groupLinkId = Nothing, customUserProfileId, connReqInv = Just cReq, localAlias = "", createdAt, updatedAt = createdAt} -createIncognitoProfile :: DB.Connection -> User -> Profile -> IO Int64 -createIncognitoProfile db User {userId} p = do - createdAt <- getCurrentTime - createIncognitoProfile_ db userId createdAt p - createIncognitoProfile_ :: DB.Connection -> UserId -> UTCTime -> Profile -> IO Int64 createIncognitoProfile_ db userId createdAt Profile {displayName, fullName, image} = do DB.execute @@ -315,30 +307,7 @@ updateContactConnectionAlias db userId conn localAlias = do WHERE user_id = ? AND connection_id = ? |] (localAlias, updatedAt, userId, pccConnId conn) - pure (conn :: PendingContactConnection) {localAlias, updatedAt} - -updatePCCIncognito :: DB.Connection -> User -> PendingContactConnection -> Maybe ProfileId -> IO PendingContactConnection -updatePCCIncognito db User {userId} conn customUserProfileId = do - updatedAt <- getCurrentTime - DB.execute - db - [sql| - UPDATE connections - SET custom_user_profile_id = ?, updated_at = ? - WHERE user_id = ? AND connection_id = ? - |] - (customUserProfileId, updatedAt, userId, pccConnId conn) - pure (conn :: PendingContactConnection) {customUserProfileId, updatedAt} - -deletePCCIncognitoProfile :: DB.Connection -> User -> ProfileId -> IO () -deletePCCIncognitoProfile db User {userId} profileId = - DB.execute - db - [sql| - DELETE FROM contact_profiles - WHERE user_id = ? AND contact_profile_id = ? AND incognito = 1 - |] - (userId, profileId) + pure (conn :: PendingContactConnection) {localAlias} updateContactUsed :: DB.Connection -> User -> Contact -> IO () updateContactUsed db User {userId} Contact {contactId} = do diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 4577712f0e..ddbe665d71 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -397,14 +397,14 @@ data UserContactLink = UserContactLink instance ToJSON UserContactLink where toEncoding = J.genericToEncoding J.defaultOptions data AutoAccept = AutoAccept - { acceptIncognito :: IncognitoEnabled, + { acceptIncognito :: Bool, autoReply :: Maybe MsgContent } deriving (Show, Generic) instance ToJSON AutoAccept where toEncoding = J.genericToEncoding J.defaultOptions -toUserContactLink :: (ConnReqContact, Bool, IncognitoEnabled, Maybe MsgContent) -> UserContactLink +toUserContactLink :: (ConnReqContact, Bool, Bool, Maybe MsgContent) -> UserContactLink toUserContactLink (connReq, autoAccept, acceptIncognito, autoReply) = UserContactLink connReq $ if autoAccept then Just AutoAccept {acceptIncognito, autoReply} else Nothing @@ -452,6 +452,9 @@ updateUserAddressAutoAccept db user@User {userId} autoAccept = do Just AutoAccept {acceptIncognito, autoReply} -> (True, acceptIncognito, autoReply) _ -> (False, False, Nothing) + + + getProtocolServers :: forall p. ProtocolTypeI p => DB.Connection -> User -> IO [ServerCfg p] getProtocolServers db User {userId} = map toServerCfg diff --git a/src/Simplex/Chat/Store/Shared.hs b/src/Simplex/Chat/Store/Shared.hs index ad3116695d..9e4d3c0e02 100644 --- a/src/Simplex/Chat/Store/Shared.hs +++ b/src/Simplex/Chat/Store/Shared.hs @@ -203,7 +203,7 @@ createContact_ db userId connId Profile {displayName, fullName, image, contactLi pure $ Right (ldn, contactId, profileId) deleteUnusedIncognitoProfileById_ :: DB.Connection -> User -> ProfileId -> IO () -deleteUnusedIncognitoProfileById_ db User {userId} profileId = +deleteUnusedIncognitoProfileById_ db User {userId} profile_id = DB.executeNamed db [sql| @@ -218,7 +218,7 @@ deleteUnusedIncognitoProfileById_ db User {userId} profileId = WHERE user_id = :user_id AND member_profile_id = :profile_id LIMIT 1 ) |] - [":user_id" := userId, ":profile_id" := profileId] + [":user_id" := userId, ":profile_id" := profile_id] type ContactRow = (ContactId, ProfileId, ContactName, Maybe Int64, ContactName, Text, Maybe ImageData, Maybe ConnReqContact, LocalAlias, Bool) :. (Maybe Bool, Maybe Bool, Bool, Maybe Preferences, Preferences, UTCTime, UTCTime, Maybe UTCTime) diff --git a/src/Simplex/Chat/Types.hs b/src/Simplex/Chat/Types.hs index 3790617507..9d9791f1a9 100644 --- a/src/Simplex/Chat/Types.hs +++ b/src/Simplex/Chat/Types.hs @@ -184,9 +184,7 @@ contactConn = activeConn contactConnId :: Contact -> ConnId contactConnId = aConnId . contactConn -type IncognitoEnabled = Bool - -contactConnIncognito :: Contact -> IncognitoEnabled +contactConnIncognito :: Contact -> Bool contactConnIncognito = connIncognito . contactConn contactDirect :: Contact -> Bool @@ -597,7 +595,7 @@ memberConnId GroupMember {activeConn} = aConnId <$> activeConn groupMemberId' :: GroupMember -> GroupMemberId groupMemberId' GroupMember {groupMemberId} = groupMemberId -memberIncognito :: GroupMember -> IncognitoEnabled +memberIncognito :: GroupMember -> Bool memberIncognito GroupMember {memberProfile, memberContactProfileId} = localProfileId memberProfile /= memberContactProfileId memberSecurityCode :: GroupMember -> Maybe SecurityCode diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index d1e47b1d4d..d6e443401d 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -115,7 +115,6 @@ responseToView user_ ChatConfig {logLevel, showReactions, showReceipts, testView HSGroups -> groupsHelpInfo HSContacts -> contactsHelpInfo HSMyAddress -> myAddressHelpInfo - HSIncognito -> incognitoHelpInfo HSMessages -> messagesHelpInfo HSMarkdown -> markdownInfo HSSettings -> settingsInfo @@ -139,8 +138,7 @@ responseToView user_ ChatConfig {logLevel, showReactions, showReceipts, testView CRUserProfileNoChange u -> ttyUser u ["user profile did not change"] CRUserPrivacy u u' -> ttyUserPrefix u $ viewUserPrivacy u u' CRVersionInfo info _ _ -> viewVersionInfo logLevel info - CRInvitation u cReq _ -> ttyUser u $ viewConnReqInvitation cReq - CRConnectionIncognitoUpdated u c -> ttyUser u $ viewConnectionIncognitoUpdated c + CRInvitation u cReq -> ttyUser u $ viewConnReqInvitation cReq CRSentConfirmation u -> ttyUser u ["confirmation sent!"] CRSentInvitation u customUserProfile -> ttyUser u $ viewSentInvitation customUserProfile testView CRContactDeleted u c -> ttyUser u [ttyContact' c <> ": contact is deleted"] @@ -1150,11 +1148,6 @@ viewConnectionAliasUpdated PendingContactConnection {pccConnId, localAlias} | localAlias == "" = ["connection " <> sShow pccConnId <> " alias removed"] | otherwise = ["connection " <> sShow pccConnId <> " alias updated: " <> plain localAlias] -viewConnectionIncognitoUpdated :: PendingContactConnection -> [StyledString] -viewConnectionIncognitoUpdated PendingContactConnection {pccConnId, customUserProfileId} - | isJust customUserProfileId = ["connection " <> sShow pccConnId <> " changed to incognito"] - | otherwise = ["connection " <> sShow pccConnId <> " changed to non incognito"] - viewContactUpdated :: Contact -> Contact -> [StyledString] viewContactUpdated Contact {localDisplayName = n, profile = LocalProfile {fullName, contactLink}} @@ -1546,7 +1539,6 @@ viewChatError logLevel = \case CECommandError e -> ["bad chat command: " <> plain e] CEAgentCommandError e -> ["agent command error: " <> plain e] CEInvalidFileDescription e -> ["invalid file description: " <> plain e] - CEConnectionIncognitoChangeProhibited -> ["incognito mode change prohibited"] CEInternalError e -> ["internal chat error: " <> plain e] CEException e -> ["exception: " <> plain e] -- e -> ["chat error: " <> sShow e] diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index e4cc94d81b..6e1e761208 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -1817,7 +1817,8 @@ testGroupLinkIncognitoMembership = -- bob connected incognito to alice alice ##> "/c" inv <- getInvitation alice - bob ##> ("/c i " <> inv) + bob #$> ("/incognito on", id, "ok") + bob ##> ("/c " <> inv) bob <## "confirmation sent!" bobIncognito <- getTermLine bob concurrentlyN_ @@ -1826,6 +1827,7 @@ testGroupLinkIncognitoMembership = bob <## "use /i alice to print out this incognito profile again", alice <## (bobIncognito <> ": contact is connected") ] + bob #$> ("/incognito off", id, "ok") -- alice creates group alice ##> "/g team" alice <## "group #team is created" @@ -1868,7 +1870,8 @@ testGroupLinkIncognitoMembership = cath #> ("@" <> bobIncognito <> " hey, I'm cath") bob ?<# "cath> hey, I'm cath" -- dan joins incognito - dan ##> ("/c i " <> gLink) + dan #$> ("/incognito on", id, "ok") + dan ##> ("/c " <> gLink) danIncognito <- getTermLine dan dan <## "connection request sent incognito!" bob <## (danIncognito <> ": accepting request to join group #team...") @@ -1895,6 +1898,7 @@ testGroupLinkIncognitoMembership = cath <## ("#team: " <> bobIncognito <> " added " <> danIncognito <> " to the group (connecting...)") cath <## ("#team: new member " <> danIncognito <> " is connected") ] + dan #$> ("/incognito off", id, "ok") bob ?#> ("@" <> danIncognito <> " hi, I'm incognito") dan ?<# (bobIncognito <> "> hi, I'm incognito") dan ?#> ("@" <> bobIncognito <> " hey, me too") @@ -2002,6 +2006,7 @@ testGroupLinkIncognitoUnusedHostContactsDeleted :: HasCallStack => FilePath -> I testGroupLinkIncognitoUnusedHostContactsDeleted = testChatCfg2 cfg aliceProfile bobProfile $ \alice bob -> do + bob #$> ("/incognito on", id, "ok") bobIncognitoTeam <- createGroupBobIncognito alice bob "team" "alice" bobIncognitoClub <- createGroupBobIncognito alice bob "club" "alice_1" bobIncognitoTeam `shouldNotBe` bobIncognitoClub @@ -2031,7 +2036,7 @@ testGroupLinkIncognitoUnusedHostContactsDeleted = alice <## ("to add members use /a " <> group <> " or /create link #" <> group) alice ##> ("/create link #" <> group) gLinkTeam <- getGroupLink alice group GRMember True - bob ##> ("/c i " <> gLinkTeam) + bob ##> ("/c " <> gLinkTeam) bobIncognito <- getTermLine bob bob <## "connection request sent incognito!" alice <## (bobIncognito <> ": accepting request to join group #" <> group <> "...") diff --git a/tests/ChatTests/Profiles.hs b/tests/ChatTests/Profiles.hs index 1229aede0e..08d33df1d6 100644 --- a/tests/ChatTests/Profiles.hs +++ b/tests/ChatTests/Profiles.hs @@ -27,15 +27,10 @@ chatProfileTests = do it "delete connection requests when contact link deleted" testDeleteConnectionRequests it "auto-reply message" testAutoReplyMessage it "auto-reply message in incognito" testAutoReplyMessageInIncognito - describe "incognito" $ do + describe "incognito mode" $ do it "connect incognito via invitation link" testConnectIncognitoInvitationLink it "connect incognito via contact address" testConnectIncognitoContactAddress it "accept contact request incognito" testAcceptContactRequestIncognito - it "set connection incognito" testSetConnectionIncognito - it "reset connection incognito" testResetConnectionIncognito - it "set connection incognito prohibited during negotiation" testSetConnectionIncognitoProhibitedDuringNegotiation - it "connection incognito unchanged errors" testConnectionIncognitoUnchangedErrors - it "set, reset, set connection incognito" testSetResetSetConnectionIncognito it "join group incognito" testJoinGroupIncognito it "can't invite contact to whom user connected incognito to a group" testCantInviteContactIncognito it "can't see global preferences update" testCantSeeGlobalPrefsUpdateIncognito @@ -494,9 +489,11 @@ testAutoReplyMessageInIncognito = testChat2 aliceProfile bobProfile $ testConnectIncognitoInvitationLink :: HasCallStack => FilePath -> IO () testConnectIncognitoInvitationLink = testChat3 aliceProfile bobProfile cathProfile $ \alice bob cath -> do - alice ##> "/connect incognito" + alice #$> ("/incognito on", id, "ok") + bob #$> ("/incognito on", id, "ok") + alice ##> "/c" inv <- getInvitation alice - bob ##> ("/connect incognito " <> inv) + bob ##> ("/c " <> inv) bob <## "confirmation sent!" bobIncognito <- getTermLine bob aliceIncognito <- getTermLine alice @@ -508,6 +505,9 @@ testConnectIncognitoInvitationLink = testChat3 aliceProfile bobProfile cathProfi alice <## (bobIncognito <> ": contact is connected, your incognito profile for this contact is " <> aliceIncognito) alice <## ("use /i " <> bobIncognito <> " to print out this incognito profile again") ] + -- after turning incognito mode off conversation is incognito + alice #$> ("/incognito off", id, "ok") + bob #$> ("/incognito off", id, "ok") alice ?#> ("@" <> bobIncognito <> " psst, I'm incognito") bob ?<# (aliceIncognito <> "> psst, I'm incognito") bob ?#> ("@" <> aliceIncognito <> " me too") @@ -569,7 +569,8 @@ testConnectIncognitoContactAddress = testChat2 aliceProfile bobProfile $ \alice bob -> do alice ##> "/ad" cLink <- getContactLink alice True - bob ##> ("/c i " <> cLink) + bob #$> ("/incognito on", id, "ok") + bob ##> ("/c " <> cLink) bobIncognito <- getTermLine bob bob <## "connection request sent incognito!" alice <## (bobIncognito <> " wants to connect to you!") @@ -584,7 +585,9 @@ testConnectIncognitoContactAddress = testChat2 aliceProfile bobProfile $ bob <## "use /i alice to print out this incognito profile again", alice <## (bobIncognito <> ": contact is connected") ] - -- conversation is incognito + -- after turning incognito mode off conversation is incognito + alice #$> ("/incognito off", id, "ok") + bob #$> ("/incognito off", id, "ok") alice #> ("@" <> bobIncognito <> " who are you?") bob ?<# "alice> who are you?" bob ?#> "@alice I'm Batman" @@ -602,162 +605,39 @@ testConnectIncognitoContactAddress = testChat2 aliceProfile bobProfile $ bob `hasContactProfiles` ["bob"] testAcceptContactRequestIncognito :: HasCallStack => FilePath -> IO () -testAcceptContactRequestIncognito = testChat3 aliceProfile bobProfile cathProfile $ - \alice bob cath -> do +testAcceptContactRequestIncognito = testChat2 aliceProfile bobProfile $ + \alice bob -> do alice ##> "/ad" cLink <- getContactLink alice True bob ##> ("/c " <> cLink) alice <#? bob - alice ##> "/accept incognito bob" + alice #$> ("/incognito on", id, "ok") + alice ##> "/ac bob" alice <## "bob (Bob): accepting contact request..." - aliceIncognitoBob <- getTermLine alice + aliceIncognito <- getTermLine alice concurrentlyN_ - [ bob <## (aliceIncognitoBob <> ": contact is connected"), + [ bob <## (aliceIncognito <> ": contact is connected"), do - alice <## ("bob (Bob): contact is connected, your incognito profile for this contact is " <> aliceIncognitoBob) + alice <## ("bob (Bob): contact is connected, your incognito profile for this contact is " <> aliceIncognito) alice <## "use /i bob to print out this incognito profile again" ] - -- conversation is incognito + -- after turning incognito mode off conversation is incognito + alice #$> ("/incognito off", id, "ok") + bob #$> ("/incognito off", id, "ok") alice ?#> "@bob my profile is totally inconspicuous" - bob <# (aliceIncognitoBob <> "> my profile is totally inconspicuous") - bob #> ("@" <> aliceIncognitoBob <> " I know!") + bob <# (aliceIncognito <> "> my profile is totally inconspicuous") + bob #> ("@" <> aliceIncognito <> " I know!") alice ?<# "bob> I know!" -- list contacts alice ##> "/contacts" alice <## "i bob (Bob)" - alice `hasContactProfiles` ["alice", "bob", T.pack aliceIncognitoBob] + alice `hasContactProfiles` ["alice", "bob", T.pack aliceIncognito] -- delete contact, incognito profile is deleted alice ##> "/d bob" alice <## "bob: contact is deleted" alice ##> "/contacts" (alice ("/c " <> cLink) - alice <#? cath - alice ##> "/_accept incognito=on 1" - alice <## "cath (Catherine): accepting contact request..." - aliceIncognitoCath <- getTermLine alice - concurrentlyN_ - [ cath <## (aliceIncognitoCath <> ": contact is connected"), - do - alice <## ("cath (Catherine): contact is connected, your incognito profile for this contact is " <> aliceIncognitoCath) - alice <## "use /i cath to print out this incognito profile again" - ] - alice `hasContactProfiles` ["alice", "cath", T.pack aliceIncognitoCath] - cath `hasContactProfiles` ["cath", T.pack aliceIncognitoCath] - -testSetConnectionIncognito :: HasCallStack => FilePath -> IO () -testSetConnectionIncognito = testChat2 aliceProfile bobProfile $ - \alice bob -> do - alice ##> "/connect" - inv <- getInvitation alice - alice ##> "/_set incognito :1 on" - alice <## "connection 1 changed to incognito" - bob ##> ("/connect " <> inv) - bob <## "confirmation sent!" - aliceIncognito <- getTermLine alice - concurrentlyN_ - [ bob <## (aliceIncognito <> ": contact is connected"), - do - alice <## ("bob (Bob): contact is connected, your incognito profile for this contact is " <> aliceIncognito) - alice <## ("use /i bob to print out this incognito profile again") - ] - alice ?#> ("@bob hi") - bob <# (aliceIncognito <> "> hi") - bob #> ("@" <> aliceIncognito <> " hey") - alice ?<# ("bob> hey") - alice `hasContactProfiles` ["alice", "bob", T.pack aliceIncognito] - bob `hasContactProfiles` ["bob", T.pack aliceIncognito] - -testResetConnectionIncognito :: HasCallStack => FilePath -> IO () -testResetConnectionIncognito = testChat2 aliceProfile bobProfile $ - \alice bob -> do - alice ##> "/_connect 1 incognito=on" - inv <- getInvitation alice - alice ##> "/_set incognito :1 off" - alice <## "connection 1 changed to non incognito" - bob ##> ("/c " <> inv) - bob <## "confirmation sent!" - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - alice <##> bob - alice `hasContactProfiles` ["alice", "bob"] - bob `hasContactProfiles` ["alice", "bob"] - -testSetConnectionIncognitoProhibitedDuringNegotiation :: HasCallStack => FilePath -> IO () -testSetConnectionIncognitoProhibitedDuringNegotiation tmp = do - inv <- withNewTestChat tmp "alice" aliceProfile $ \alice -> do - threadDelay 250000 - alice ##> "/connect" - getInvitation alice - withNewTestChat tmp "bob" bobProfile $ \bob -> do - threadDelay 250000 - bob ##> ("/c " <> inv) - bob <## "confirmation sent!" - withTestChat tmp "alice" $ \alice -> do - threadDelay 250000 - alice ##> "/_set incognito :1 on" - alice <## "chat db error: SEPendingConnectionNotFound {connId = 1}" - withTestChat tmp "bob" $ \bob -> do - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - alice <##> bob - alice `hasContactProfiles` ["alice", "bob"] - bob `hasContactProfiles` ["alice", "bob"] - -testConnectionIncognitoUnchangedErrors :: HasCallStack => FilePath -> IO () -testConnectionIncognitoUnchangedErrors = testChat2 aliceProfile bobProfile $ - \alice bob -> do - alice ##> "/connect" - inv <- getInvitation alice - alice ##> "/_set incognito :1 off" - alice <## "incognito mode change prohibited" - alice ##> "/_set incognito :1 on" - alice <## "connection 1 changed to incognito" - alice ##> "/_set incognito :1 on" - alice <## "incognito mode change prohibited" - alice ##> "/_set incognito :1 off" - alice <## "connection 1 changed to non incognito" - alice ##> "/_set incognito :1 off" - alice <## "incognito mode change prohibited" - bob ##> ("/c " <> inv) - bob <## "confirmation sent!" - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - alice <##> bob - alice `hasContactProfiles` ["alice", "bob"] - bob `hasContactProfiles` ["alice", "bob"] - -testSetResetSetConnectionIncognito :: HasCallStack => FilePath -> IO () -testSetResetSetConnectionIncognito = testChat2 aliceProfile bobProfile $ - \alice bob -> do - alice ##> "/_connect 1 incognito=off" - inv <- getInvitation alice - alice ##> "/_set incognito :1 on" - alice <## "connection 1 changed to incognito" - alice ##> "/_set incognito :1 off" - alice <## "connection 1 changed to non incognito" - alice ##> "/_set incognito :1 on" - alice <## "connection 1 changed to incognito" - bob ##> ("/_connect 1 incognito=off " <> inv) - bob <## "confirmation sent!" - aliceIncognito <- getTermLine alice - concurrentlyN_ - [ bob <## (aliceIncognito <> ": contact is connected"), - do - alice <## ("bob (Bob): contact is connected, your incognito profile for this contact is " <> aliceIncognito) - alice <## ("use /i bob to print out this incognito profile again") - ] - alice ?#> ("@bob hi") - bob <# (aliceIncognito <> "> hi") - bob #> ("@" <> aliceIncognito <> " hey") - alice ?<# ("bob> hey") - alice `hasContactProfiles` ["alice", "bob", T.pack aliceIncognito] - bob `hasContactProfiles` ["bob", T.pack aliceIncognito] testJoinGroupIncognito :: HasCallStack => FilePath -> IO () testJoinGroupIncognito = testChat4 aliceProfile bobProfile cathProfile danProfile $ @@ -771,7 +651,8 @@ testJoinGroupIncognito = testChat4 aliceProfile bobProfile cathProfile danProfil -- cath connected incognito to alice alice ##> "/c" inv <- getInvitation alice - cath ##> ("/c i " <> inv) + cath #$> ("/incognito on", id, "ok") + cath ##> ("/c " <> inv) cath <## "confirmation sent!" cathIncognito <- getTermLine cath concurrentlyN_ @@ -804,8 +685,10 @@ testJoinGroupIncognito = testChat4 aliceProfile bobProfile cathProfile danProfil cath <## "#secret_club: alice invites you to join the group as admin" cath <## ("use /j secret_club to join incognito as " <> cathIncognito) ] - -- cath uses the same incognito profile when joining group, cath and bob don't merge contacts + -- cath uses the same incognito profile when joining group, disabling incognito mode doesn't affect it + cath #$> ("/incognito off", id, "ok") cath ##> "/j secret_club" + -- cath and bob don't merge contacts concurrentlyN_ [ alice <## ("#secret_club: " <> cathIncognito <> " joined the group"), do @@ -951,7 +834,8 @@ testCantInviteContactIncognito :: HasCallStack => FilePath -> IO () testCantInviteContactIncognito = testChat2 aliceProfile bobProfile $ \alice bob -> do -- alice connected incognito to bob - alice ##> "/c i" + alice #$> ("/incognito on", id, "ok") + alice ##> "/c" inv <- getInvitation alice bob ##> ("/c " <> inv) bob <## "confirmation sent!" @@ -963,6 +847,7 @@ testCantInviteContactIncognito = testChat2 aliceProfile bobProfile $ alice <## "use /i bob to print out this incognito profile again" ] -- alice creates group non incognito + alice #$> ("/incognito off", id, "ok") alice ##> "/g club" alice <## "group #club is created" alice <## "to add members use /a club or /create link #club" @@ -974,8 +859,10 @@ testCantInviteContactIncognito = testChat2 aliceProfile bobProfile $ testCantSeeGlobalPrefsUpdateIncognito :: HasCallStack => FilePath -> IO () testCantSeeGlobalPrefsUpdateIncognito = testChat3 aliceProfile bobProfile cathProfile $ \alice bob cath -> do - alice ##> "/c i" + alice #$> ("/incognito on", id, "ok") + alice ##> "/c" invIncognito <- getInvitation alice + alice #$> ("/incognito off", id, "ok") alice ##> "/c" inv <- getInvitation alice bob ##> ("/c " <> invIncognito) @@ -1028,7 +915,8 @@ testDeleteContactThenGroupDeletesIncognitoProfile = testChat2 aliceProfile bobPr -- bob connects incognito to alice alice ##> "/c" inv <- getInvitation alice - bob ##> ("/c i " <> inv) + bob #$> ("/incognito on", id, "ok") + bob ##> ("/c " <> inv) bob <## "confirmation sent!" bobIncognito <- getTermLine bob concurrentlyN_ @@ -1079,7 +967,8 @@ testDeleteGroupThenContactDeletesIncognitoProfile = testChat2 aliceProfile bobPr -- bob connects incognito to alice alice ##> "/c" inv <- getInvitation alice - bob ##> ("/c i " <> inv) + bob #$> ("/incognito on", id, "ok") + bob ##> ("/c " <> inv) bob <## "confirmation sent!" bobIncognito <- getTermLine bob concurrentlyN_ From 353fe4539ca8ddf72462b4ef11d069f3e52dd17c Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 4 Aug 2023 23:29:25 +0300 Subject: [PATCH 005/169] desktop: package name for Mac (#2857) * desktop: package name for Mac * added Windows --- apps/multiplatform/desktop/build.gradle.kts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/multiplatform/desktop/build.gradle.kts b/apps/multiplatform/desktop/build.gradle.kts index c3c18b1321..1d463a9ded 100644 --- a/apps/multiplatform/desktop/build.gradle.kts +++ b/apps/multiplatform/desktop/build.gradle.kts @@ -1,4 +1,6 @@ import org.jetbrains.compose.desktop.application.dsl.TargetFormat +import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly +import java.util.* plugins { kotlin("multiplatform") @@ -64,7 +66,12 @@ compose { appCategory = "public.app-category.social-networking" bundleID = "chat.simplex.app" } - packageName = "simplex" + val os = System.getProperty("os.name", "generic").toLowerCaseAsciiOnly() + if (os.contains("mac") || os.contains("win")) { + packageName = "SimpleX" + } else { + packageName = "simplex" + } // Packaging requires to have version like MAJOR.MINOR.PATCH var adjustedVersion = rootProject.extra["desktop.version_name"] as String adjustedVersion = adjustedVersion.replace(Regex("[^0-9.]"), "") From 5952fd529000fbc44939b32a88e82e630829fe36 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sat, 5 Aug 2023 00:28:09 +0300 Subject: [PATCH 006/169] desktop: font for emoji (#2853) * desktop: font for emoji * heart emoji for Mac * limit font size * alignment * padding * emoji item layout * padding on desktop --------- Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- apps/multiplatform/common/build.gradle.kts | 9 ++++++ .../simplex/common/ui/theme/Type.android.kt | 2 ++ .../views/chat/item/ChatItemView.android.kt | 9 ++++++ .../views/chat/item/EmojiItemView.android.kt | 10 +++++++ .../simplex/common/ui/theme/ThemeManager.kt | 1 + .../common/views/chat/item/ChatItemView.kt | 15 ++++++---- .../common/views/chat/item/EmojiItemView.kt | 11 ++++--- .../MR/fonts/NotoColorEmoji-Regular.ttf | Bin 0 -> 10353636 bytes .../resources/MR/images/ic_heart@4x.png | Bin 0 -> 40689 bytes .../common/platform/Platform.desktop.kt | 1 + .../simplex/common/ui/theme/Type.desktop.kt | 14 +++++++++ .../views/chat/item/ChatItemView.desktop.kt | 19 ++++++++++++ .../views/chat/item/EmojiItemView.desktop.kt | 27 ++++++++++++++++++ 13 files changed, 106 insertions(+), 12 deletions(-) create mode 100644 apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.android.kt create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/fonts/NotoColorEmoji-Regular.ttf create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_heart@4x.png create mode 100644 apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.desktop.kt diff --git a/apps/multiplatform/common/build.gradle.kts b/apps/multiplatform/common/build.gradle.kts index 45a963b057..d2ca49a891 100644 --- a/apps/multiplatform/common/build.gradle.kts +++ b/apps/multiplatform/common/build.gradle.kts @@ -114,6 +114,15 @@ android { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } + val isAndroid = gradle.startParameter.taskNames.find { + val lower = it.toLowerCase() + lower.contains("release") || lower.startsWith("assemble") || lower.startsWith("install") + } != null + if (isAndroid) { + // This is not needed on Android but can't be moved to desktopMain because MR lib don't support this. + // No other ways to exclude a file work but it's large and should be excluded + kotlin.sourceSets["commonMain"].resources.exclude("/MR/fonts/NotoColorEmoji-Regular.ttf") + } } multiplatformResources { diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/ui/theme/Type.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/ui/theme/Type.android.kt index 056ae7495e..2e7404f241 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/ui/theme/Type.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/ui/theme/Type.android.kt @@ -11,3 +11,5 @@ actual val Inter: FontFamily = FontFamily( Font(MR.fonts.Inter.medium.fontResourceId, FontWeight.Medium), Font(MR.fonts.Inter.light.fontResourceId, FontWeight.Light) ) + +actual val EmojiFont: FontFamily = FontFamily.Default diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.android.kt index c056728640..15421299a8 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.android.kt @@ -2,18 +2,27 @@ package chat.simplex.common.views.chat.item import android.Manifest import android.os.Build +import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState +import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.unit.sp import chat.simplex.common.model.ChatItem import chat.simplex.common.model.MsgContent import chat.simplex.common.platform.FileChooserLauncher import chat.simplex.common.platform.saveImage +import chat.simplex.common.views.helpers.SharedContent import chat.simplex.common.views.helpers.withApi import chat.simplex.res.MR import com.google.accompanist.permissions.rememberPermissionState import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource +@Composable +actual fun ReactionIcon(text: String, fontSize: TextUnit) { + Text(text, fontSize = fontSize) +} + @Composable actual fun SaveContentItemAction(cItem: ChatItem, saveFileLauncher: FileChooserLauncher, showMenu: MutableState) { val writePermissionState = rememberPermissionState(permission = Manifest.permission.WRITE_EXTERNAL_STORAGE) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.android.kt new file mode 100644 index 0000000000..f0e8c12952 --- /dev/null +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.android.kt @@ -0,0 +1,10 @@ +package chat.simplex.common.views.chat.item + +import androidx.compose.material.Text +import androidx.compose.runtime.Composable + +@Composable +actual fun EmojiText(text: String) { + val s = text.trim() + Text(s, style = if (s.codePoints().count() < 4) largeEmojiFont else mediumEmojiFont) +} diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt index 17ff695e73..4a7521efb8 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/ui/theme/ThemeManager.kt @@ -12,6 +12,7 @@ import chat.simplex.common.views.helpers.generalGetString // https://github.com/rsms/inter // I place it here because IDEA shows an error (but still works anyway) when this declaration inside Type.kt expect val Inter: FontFamily +expect val EmojiFont: FontFamily object ThemeManager { private val appPrefs: AppPreferences = ChatController.appPrefs diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 8e2f13329c..0597e2d131 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -17,8 +17,7 @@ import androidx.compose.ui.text.AnnotatedString import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp +import androidx.compose.ui.unit.* import chat.simplex.common.model.* import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* @@ -84,7 +83,7 @@ fun ChatItemView( @Composable fun ChatItemReactions() { - Row { + Row(verticalAlignment = Alignment.CenterVertically) { cItem.reactions.forEach { r -> var modifier = Modifier.padding(horizontal = 5.dp, vertical = 2.dp).clip(RoundedCornerShape(8.dp)) if (cInfo.featureEnabled(ChatFeature.Reactions) && (cItem.allowAddReaction || r.userReacted)) { @@ -93,13 +92,14 @@ fun ChatItemView( } } Row(modifier.padding(2.dp)) { - Text(r.reaction.text, fontSize = 12.sp) + ReactionIcon(r.reaction.text, fontSize = 12.sp) if (r.totalReacted > 1) { Spacer(Modifier.width(4.dp)) Text("${r.totalReacted}", fontSize = 11.5.sp, fontWeight = if (r.userReacted) FontWeight.Bold else FontWeight.Normal, color = if (r.userReacted) MaterialTheme.colors.primary else MaterialTheme.colors.secondary, + modifier = if (appPlatform.isAndroid) Modifier else Modifier.padding(top = 4.dp) ) } } @@ -145,7 +145,7 @@ fun ChatItemView( } } if (rs.isNotEmpty()) { - Row(modifier = Modifier.padding(horizontal = DEFAULT_PADDING).horizontalScroll(rememberScrollState())) { + Row(modifier = Modifier.padding(horizontal = DEFAULT_PADDING).horizontalScroll(rememberScrollState()), verticalAlignment = Alignment.CenterVertically) { rs.forEach() { r -> Box( Modifier.size(36.dp).clickable { @@ -154,7 +154,7 @@ fun ChatItemView( }, contentAlignment = Alignment.Center ) { - Text(r.text) + ReactionIcon(r.text, 12.sp) } } } @@ -324,6 +324,9 @@ fun ChatItemView( } } +@Composable +expect fun ReactionIcon(text: String, fontSize: TextUnit = TextUnit.Unspecified) + @Composable expect fun SaveContentItemAction(cItem: ChatItem, saveFileLauncher: FileChooserLauncher, showMenu: MutableState) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.kt index d99de4019d..3ede737ffa 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/EmojiItemView.kt @@ -10,9 +10,11 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.model.ChatItem +import chat.simplex.common.model.MREmojiChar +import chat.simplex.common.ui.theme.EmojiFont -val largeEmojiFont: TextStyle = TextStyle(fontSize = 48.sp) -val mediumEmojiFont: TextStyle = TextStyle(fontSize = 36.sp) +val largeEmojiFont: TextStyle = TextStyle(fontSize = 48.sp, fontFamily = EmojiFont) +val mediumEmojiFont: TextStyle = TextStyle(fontSize = 36.sp, fontFamily = EmojiFont) @Composable fun EmojiItemView(chatItem: ChatItem, timedMessagesTTL: Int?) { @@ -26,10 +28,7 @@ fun EmojiItemView(chatItem: ChatItem, timedMessagesTTL: Int?) { } @Composable -fun EmojiText(text: String) { - val s = text.trim() - Text(s, style = if (s.codePoints().count() < 4) largeEmojiFont else mediumEmojiFont) -} +expect fun EmojiText(text: String) // https://stackoverflow.com/a/46279500 private const val emojiStr = "^(" + diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fonts/NotoColorEmoji-Regular.ttf b/apps/multiplatform/common/src/commonMain/resources/MR/fonts/NotoColorEmoji-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..42799e84e86bec283cddeedac8f82e18eb26c90e GIT binary patch literal 10353636 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%0A6Uar$bqd?Y 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

&6FXP<`@cU7!|1H=I}f%I*iEuBhw!iUA7Cb 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 z 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�LIdXpr`1$&pEEPy};}jo=eOtTySW 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