packages feed

matterhorn-50200.13.0: src/Matterhorn/Draw.hs

{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE PackageImports #-}
module Matterhorn.Draw (draw) where

import Prelude ()
import Matterhorn.Prelude

import Brick

import Lens.Micro.Platform ( _2, singular, _Just )

import Matterhorn.Draw.ChannelTopicWindow
import Matterhorn.Draw.SaveAttachmentWindow
import Matterhorn.Draw.DeleteChannelConfirm
import Matterhorn.Draw.LeaveChannelConfirm
import Matterhorn.Draw.Main
import Matterhorn.Draw.ThemeListOverlay
import Matterhorn.Draw.PostListOverlay
import Matterhorn.Draw.ShowHelp
import Matterhorn.Draw.UserListOverlay
import Matterhorn.Draw.ChannelListOverlay
import Matterhorn.Draw.ReactionEmojiListOverlay
import Matterhorn.Draw.TabbedWindow
import Matterhorn.Draw.ManageAttachments
import Matterhorn.Draw.NotifyPrefs
import Matterhorn.Types


draw :: ChatState -> [Widget Name]
draw st =
    case st^.csCurrentTeam.tsMode of
        Main                         -> mainLayers
        UrlSelect                    -> mainLayers
        ChannelSelect                -> mainLayers
        MessageSelect                -> mainLayers
        MessageSelectDeleteConfirm   -> mainLayers
        ShowHelp topic _             -> drawShowHelp topic st
        ThemeListOverlay             -> drawThemeListOverlay st : mainLayers
        LeaveChannelConfirm          -> drawLeaveChannelConfirm st : mainLayersMonochrome
        DeleteChannelConfirm         -> drawDeleteChannelConfirm st : mainLayersMonochrome
        PostListOverlay contents     -> drawPostListOverlay contents st : mainLayersMonochrome
        UserListOverlay              -> drawUserListOverlay st : mainLayersMonochrome
        ChannelListOverlay           -> drawChannelListOverlay st : mainLayersMonochrome
        ReactionEmojiListOverlay     -> drawReactionEmojiListOverlay st : mainLayersMonochrome
        ViewMessage                  -> drawTabbedWindow messageViewWindow st : mainLayersMonochrome
        ManageAttachments            -> drawManageAttachments st : mainLayersMonochrome
        ManageAttachmentsBrowseFiles -> drawManageAttachments st : mainLayersMonochrome
        EditNotifyPrefs              -> drawNotifyPrefs st : mainLayersMonochrome
        ChannelTopicWindow           -> drawChannelTopicWindow st : mainLayersMonochrome
        SaveAttachmentWindow _       -> drawSaveAttachmentWindow st : mainLayersMonochrome
    where
        mainLayers = drawMain True st
        mainLayersMonochrome = drawMain False st
        messageViewWindow = st^.csCurrentTeam.tsViewedMessage.singular _Just._2