{-# LANGUAGE MultiWayIf #-}
module Matterhorn.Types.Common
( sanitizeUserText
, sanitizeUserText'
, userIdForDMChannel
)
where
import Prelude ()
import Matterhorn.Prelude
import qualified Data.Text as T
import Network.Mattermost.Types ( UserText, unsafeUserText, UserId(..), Id(..) )
sanitizeUserText :: UserText -> T.Text
sanitizeUserText = sanitizeUserText' . unsafeUserText
sanitizeUserText' :: T.Text -> T.Text
sanitizeUserText' =
T.replace "\ESC" "<ESC>" .
T.replace "\t" " " .
T.filter (\c -> c >= ' ' || c == '\n')
userIdForDMChannel :: UserId
-> Text
-> Maybe UserId
userIdForDMChannel me chanName =
let vals = T.splitOn "__" chanName
in case vals of
[u1, u2] -> if | (UI $ Id u1) == me -> Just $ UI $ Id u2
| (UI $ Id u2) == me -> Just $ UI $ Id u1
| otherwise -> Nothing
_ -> Nothing