mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-04-01 13:56:11 +00:00
* core: configurable smp servers (#366) * core: update simplexmq hash * core: update simplexmq hash (fix SMPServer json encoding) * core: fix crashing on supplying duplicate SMP servers * core: update simplexmq hash (remove SMPServer FromJSON) * core: update simplexmq hash (merged master) * core: profile images (#384) * adding initial RFC * adding migration SQL * update RFC * linting * Apply suggestions from code review Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> * refine RFC * add avatars db migration to Store.hs * initial chages to have images in users/groups * fix protocol tests * update SQL & MobileTests * minor bug fixes * add missing comma * fix query error * refactor and update functions * bug fixes + testing * update to parse base64 web format images * fix parsing and use valid padded base64 encoded image * fix typos * respose to and suggestions from review * fix: typo * refactor: avatars -> profile_images * fix: typo * swap updateProfile parameters * remove TODO Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> * ios, android: configurable smp servers (only model and api for android) (#392) * android: configurable smp servers (ui) * fix thumb color, fix text field color in dark mode * update simplexmq hash (configurable servers in master) Co-authored-by: IanRDavies <ian_davies_@hotmail.co.uk> Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
74 lines
2.0 KiB
Haskell
74 lines
2.0 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Simplex.Chat.Options
|
|
( ChatOpts (..),
|
|
getChatOpts,
|
|
smpServersP,
|
|
)
|
|
where
|
|
|
|
import qualified Data.Attoparsec.ByteString.Char8 as A
|
|
import qualified Data.ByteString.Char8 as B
|
|
import Options.Applicative
|
|
import Simplex.Chat.Controller (updateStr, versionStr)
|
|
import Simplex.Messaging.Agent.Protocol (SMPServer (..))
|
|
import Simplex.Messaging.Encoding.String
|
|
import Simplex.Messaging.Parsers (parseAll)
|
|
import System.FilePath (combine)
|
|
|
|
data ChatOpts = ChatOpts
|
|
{ dbFilePrefix :: String,
|
|
smpServers :: [SMPServer],
|
|
logConnections :: Bool,
|
|
logAgent :: Bool
|
|
}
|
|
|
|
chatOpts :: FilePath -> Parser ChatOpts
|
|
chatOpts appDir =
|
|
ChatOpts
|
|
<$> strOption
|
|
( long "database"
|
|
<> short 'd'
|
|
<> metavar "DB_FILE"
|
|
<> help "Path prefix to chat and agent database files"
|
|
<> value defaultDbFilePath
|
|
<> showDefault
|
|
)
|
|
<*> option
|
|
parseSMPServers
|
|
( long "server"
|
|
<> short 's'
|
|
<> metavar "SERVER"
|
|
<> help
|
|
"Comma separated list of SMP server(s) to use"
|
|
<> value []
|
|
)
|
|
<*> switch
|
|
( long "connections"
|
|
<> short 'c'
|
|
<> help "Log every contact and group connection on start"
|
|
)
|
|
<*> switch
|
|
( long "log-agent"
|
|
<> short 'l'
|
|
<> help "Enable logs from SMP agent"
|
|
)
|
|
where
|
|
defaultDbFilePath = combine appDir "simplex_v1"
|
|
|
|
parseSMPServers :: ReadM [SMPServer]
|
|
parseSMPServers = eitherReader $ parseAll smpServersP . B.pack
|
|
|
|
smpServersP :: A.Parser [SMPServer]
|
|
smpServersP = strP `A.sepBy1` A.char ','
|
|
|
|
getChatOpts :: FilePath -> IO ChatOpts
|
|
getChatOpts appDir =
|
|
execParser $
|
|
info
|
|
(helper <*> versionOption <*> chatOpts appDir)
|
|
(header versionStr <> fullDesc <> progDesc "Start chat with DB_FILE file and use SERVER as SMP server")
|
|
where
|
|
versionOption = infoOption versionAndUpdate (long "version" <> short 'v' <> help "Show version")
|
|
versionAndUpdate = versionStr <> "\n" <> updateStr
|