content: {-# Language OverloadedStrings #-}
  
  {-|
  Module      : Client.View.Cert
  Description : Network certificate renderer
  Copyright   : (c) Eric Mertens, 2019
  License     : ISC
  Maintainer  : emertens@gmail.com
  
  -}
  module Client.View.Cert
    ( certViewLines
    ) where
  
  import           Client.Image.PackedImage
  import           Client.Image.Palette
  import           Client.Image.MircFormatting
  import           Client.State
  import           Client.State.Focus
  import           Client.State.Network
  import           Control.Lens
  import           Data.Text (Text)
  import qualified Data.Text.Lazy as LText
  
  -- | Render the lines used in a channel mask list
  certViewLines ::
    ClientState -> [Image']
  certViewLines st
    | Just network <- currentNetwork st
    , Just cs <- preview (clientConnection network) st
    , let xs = view csCertificate cs
    , not (null xs)
    = map (parseIrcText pal)
    $ clientFilter st LText.fromStrict xs
  
    | otherwise = [text' (view palError pal) "No certificate available"]
    where
      pal = clientPalette st
  
  currentNetwork :: ClientState -> Maybe Text
  currentNetwork st =
    case view clientFocus st of
      NetworkFocus net   -> Just net
      ChannelFocus net _ -> Just net
      Unfocused          -> Nothing
  