packages feed

matterhorn-50200.16.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 =
    let mainLayers = drawMain True st
        mainLayersMonochrome = drawMain False st
    in case st^.csCurrentTeamId of
        Nothing ->
            -- ^ Without a team data structure, we just assume Main mode
            -- and render a skeletal UI.
            mainLayers
        Just tId ->
            let messageViewWindow = st^.csTeam(tId).tsViewedMessage.singular _Just._2
            in case st^.csTeam(tId).tsMode of
                Main                         -> mainLayers
                UrlSelect                    -> mainLayers
                ChannelSelect                -> mainLayers
                MessageSelect                -> mainLayers
                MessageSelectDeleteConfirm   -> mainLayers
                ShowHelp topic _             -> drawShowHelp topic st
                ThemeListOverlay             -> drawThemeListOverlay st tId : mainLayers
                LeaveChannelConfirm          -> drawLeaveChannelConfirm st tId : mainLayersMonochrome
                DeleteChannelConfirm         -> drawDeleteChannelConfirm st tId : mainLayersMonochrome
                PostListOverlay contents     -> drawPostListOverlay contents st tId : mainLayersMonochrome
                UserListOverlay              -> drawUserListOverlay st tId : mainLayersMonochrome
                ChannelListOverlay           -> drawChannelListOverlay st tId : mainLayersMonochrome
                ReactionEmojiListOverlay     -> drawReactionEmojiListOverlay st tId : mainLayersMonochrome
                ViewMessage                  -> drawTabbedWindow messageViewWindow st tId : mainLayersMonochrome
                ManageAttachments            -> drawManageAttachments st tId : mainLayersMonochrome
                ManageAttachmentsBrowseFiles -> drawManageAttachments st tId : mainLayersMonochrome
                EditNotifyPrefs              -> drawNotifyPrefs st tId : mainLayersMonochrome
                ChannelTopicWindow           -> drawChannelTopicWindow st tId : mainLayersMonochrome
                SaveAttachmentWindow _       -> drawSaveAttachmentWindow st tId : mainLayersMonochrome