packages feed

mushu-0.1.1: app/UI/Widgets/Notification.hs

{-# LANGUAGE TemplateHaskell #-}
module UI.Widgets.Notification
( NotificationState
, mkState
, mkWidget
, setNotification
) where

import ClassyPrelude
import TH (makeSuffixLenses)

import Lens.Micro.Platform ((^.), (&), (.~))

import Brick.Types (Widget)
import Brick.Widgets.Core (str)

data NotificationState = NotificationState
  { _notification :: Maybe Text
  } deriving Show

makeSuffixLenses ''NotificationState

mkState :: NotificationState
mkState = NotificationState Nothing

mkWidget :: NotificationState -> Widget n
mkWidget state = str . unpack $ fromMaybe "" (state^.notificationL)

setNotification :: Text -> NotificationState -> NotificationState
setNotification txt state = state & notificationL .~ (Just txt)