core: include commit information in /v response (#1705)

This commit is contained in:
Evgeny Poberezkin
2023-01-07 16:38:35 +00:00
committed by GitHub
parent 113c67ec95
commit 3d4e4e2ef9
5 changed files with 40 additions and 3 deletions

View File

@@ -1207,7 +1207,7 @@ processChatCommand = \case
updateGroupProfileByName gName $ \p ->
p {groupPreferences = Just . setGroupPreference' SGFTimedMessages pref $ groupPreferences p}
QuitChat -> liftIO exitSuccess
ShowVersion -> pure $ CRVersionInfo versionNumber
ShowVersion -> pure $ CRVersionInfo versionNumber coreVersionInfo
DebugLocks -> do
chatLockName <- atomically . tryReadTMVar =<< asks chatLock
agentLocks <- withAgent debugAgentLocks

View File

@@ -8,6 +8,7 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TemplateHaskell #-}
module Simplex.Chat.Controller where
@@ -33,6 +34,7 @@ import Data.Time (ZonedTime)
import Data.Time.Clock (UTCTime)
import Data.Version (showVersion)
import GHC.Generics (Generic)
import GitHash
import Numeric.Natural
import qualified Paths_simplex_chat as SC
import Simplex.Chat.Call
@@ -61,6 +63,19 @@ import UnliftIO.STM
versionNumber :: String
versionNumber = showVersion SC.version
coreVersionInfo :: CoreVersionInfo
coreVersionInfo =
CoreVersionInfo
{ commitHash = giHash gi,
commitDate = giCommitDate gi,
commitMessage = giCommitMessage gi,
branch = giBranch gi,
tag = giTag gi,
dirty = giDirty gi
}
where
gi = $$tGitInfoCwd
versionStr :: String
versionStr = "SimpleX Chat v" <> versionNumber
@@ -334,7 +349,7 @@ data ChatResponse
| CRFileTransferStatus (FileTransfer, [Integer]) -- TODO refactor this type to FileTransferStatus
| CRUserProfile {profile :: Profile}
| CRUserProfileNoChange
| CRVersionInfo {version :: String}
| CRVersionInfo {version :: String, coreVersion :: CoreVersionInfo}
| CRInvitation {connReqInvitation :: ConnReqInvitation}
| CRSentConfirmation
| CRSentInvitation {customUserProfile :: Maybe Profile}
@@ -543,6 +558,18 @@ tmeToPref currentTTL tme = uncurry TimedMessagesPreference $ case tme of
TMEEnableKeepTTL -> (FAYes, currentTTL)
TMEDisableKeepTTL -> (FANo, currentTTL)
data CoreVersionInfo = CoreVersionInfo
{ commitHash :: String,
commitDate :: String,
commitMessage :: String,
branch :: String,
tag :: String,
dirty :: Bool
}
deriving (Show, Generic)
instance ToJSON CoreVersionInfo where toEncoding = J.genericToEncoding J.defaultOptions
data ChatError
= ChatError {errorType :: ChatErrorType}
| ChatErrorAgent {agentError :: AgentErrorType, connectionEntity_ :: Maybe ConnectionEntity}

View File

@@ -111,7 +111,7 @@ responseToView user_ testView liveItems ts = \case
CRFileTransferStatus ftStatus -> viewFileTransferStatus ftStatus
CRUserProfile p -> viewUserProfile p
CRUserProfileNoChange -> ["user profile did not change"]
CRVersionInfo _ -> [plain versionStr, plain updateStr]
CRVersionInfo _ info -> [plain versionStr, viewCoreVersionInfo info, plain updateStr]
CRChatCmdError e -> viewChatError e
CRInvitation cReq -> viewConnReqInvitation cReq
CRSentConfirmation -> ["confirmation sent!"]
@@ -1127,6 +1127,10 @@ instance ToJSON WCallCommand where
toEncoding = J.genericToEncoding . taggedObjectJSON $ dropPrefix "WCCall"
toJSON = J.genericToJSON . taggedObjectJSON $ dropPrefix "WCCall"
viewCoreVersionInfo :: CoreVersionInfo -> StyledString
viewCoreVersionInfo CoreVersionInfo {commitHash, commitMessage, commitDate} =
plain $ "commit " <> commitHash <> ": " <> commitMessage <> " (" <> commitDate <> ")"
viewChatError :: ChatError -> [StyledString]
viewChatError = \case
ChatError err -> case err of