{-# LANGUAGE OverloadedStrings #-} module Simplex.Chat.Help ( chatHelpInfo, filesHelpInfo, groupsHelpInfo, markdownInfo, ) where import Data.List (intersperse) import Data.Text (Text) import Simplex.Chat.Markdown import Simplex.Chat.Styled import System.Console.ANSI.Types highlight :: Text -> Markdown highlight = Markdown (Colored Cyan) green :: Text -> Markdown green = Markdown (Colored Green) indent :: Markdown indent = " " listHighlight :: [Text] -> Markdown listHighlight = mconcat . intersperse ", " . map highlight chatHelpInfo :: [StyledString] chatHelpInfo = map styleMarkdown [ highlight "Using SimpleX chat prototype", "Follow these steps to set up a connection:", "", green "Step 1: " <> highlight "/connect" <> " - Alice adds a contact.", indent <> "Alice should send the invitation printed by the /add command", indent <> "to her contact, Bob, out-of-band, via any trusted channel.", "", green "Step 2: " <> highlight "/connect " <> " - Bob accepts the invitation.", indent <> "Bob should use the invitation he received out-of-band.", "", green "Step 3: " <> "Bob and Alice are notified that the connection is set up,", indent <> "both can now send messages:", indent <> highlight "@bob Hello, Bob!" <> " - Alice messages Bob (assuming Bob has display name 'bob').", indent <> highlight "@alice Hey, Alice!" <> " - Bob replies to Alice.", "", green "To send file:", indent <> highlight "/file bob ./photo.jpg" <> " - Alice sends file to Bob", indent <> "File commands: " <> highlight "/help files", "", green "To create group:", indent <> highlight "/group team" <> " - create group #team", indent <> "Group commands: " <> highlight "/help groups", "", green "Other commands:", indent <> highlight "/profile " <> " - show user profile", indent <> highlight "/profile []" <> " - update user profile", indent <> highlight "/delete " <> " - delete contact and all messages with them", indent <> highlight "/markdown " <> " - show supported markdown syntax", indent <> highlight "/quit " <> " - quit chat", "", "The commands may be abbreviated to a single letter: " <> listHighlight ["/c", "/f", "/g", "/p", "/h"] <> ", etc." ] filesHelpInfo :: [StyledString] filesHelpInfo = map styleMarkdown [ green "File transfer commands:", indent <> highlight "/file @ " <> " - send file to contact", indent <> highlight "/file # " <> " - send file to group", indent <> highlight "/freceive []" <> " - accept to receive file", indent <> highlight "/fcancel " <> " - cancel sending / receiving file", indent <> highlight "/fstatus " <> " - show file transfer status", "", "The commands may be abbreviated: " <> listHighlight ["/f", "/fr", "/fc", "/fs"] ] groupsHelpInfo :: [StyledString] groupsHelpInfo = map styleMarkdown [ green "Group management commands:", indent <> highlight "/group [] " <> " - create group", indent <> highlight "/add []" <> " - add contact to group, roles: " <> highlight "owner" <> ", " <> highlight "admin" <> " (default), " <> highlight "member", indent <> highlight "/join " <> " - accept group invitation", indent <> highlight "/remove " <> " - remove member from group", indent <> highlight "/leave " <> " - leave group", indent <> highlight "/delete " <> " - delete group", indent <> highlight "/members " <> " - list group members", indent <> highlight "# " <> " - send message to group", "", "The commands may be abbreviated: " <> listHighlight ["/g", "/a", "/j", "/rm", "/l", "/d", "/ms"] ] markdownInfo :: [StyledString] markdownInfo = map styleMarkdown [ green "Markdown:", indent <> highlight "*bold* " <> " - " <> Markdown Bold "bold text", indent <> highlight "_italic_ " <> " - " <> Markdown Italic "italic text" <> " (shown as underlined)", indent <> highlight "+underlined+ " <> " - " <> Markdown Underline "underlined text", indent <> highlight "~strikethrough~" <> " - " <> Markdown StrikeThrough "strikethrough text" <> " (shown as inverse)", indent <> highlight "`code snippet` " <> " - " <> Markdown Snippet "a + b // no *markdown* here", indent <> highlight "!1 text! " <> " - " <> Markdown (Colored Red) "red text" <> " (1-6: red, green, blue, yellow, cyan, magenta)", indent <> highlight "#secret# " <> " - " <> Markdown Secret "secret text" <> " (can be copy-pasted)" ]