glirc-2.27: Console IRC client

Copyright(c) Eric Mertens 2016
LicenseISC
Maintaineremertens@gmail.com
Safe HaskellNone
LanguageHaskell2010

Client.State

Contents

Description

This module provides the core logic of the IRC client. The client state tracks everything about the client.

Synopsis

Client state type

data ClientState Source #

All state information for the IRC client

Constructors

ClientState 

Fields

Lenses

clientConnection Source #

Arguments

:: Applicative f 
=> Text

network

-> LensLike' f ClientState NetworkState 

Traversal for finding the NetworkState associated with a given network if that connection is currently active.

Client operations

withClientState :: Maybe FilePath -> Configuration -> (ClientState -> IO a) -> IO a Source #

Construct an initial ClientState using default values.

clientStartExtensions :: ClientState -> IO ClientState Source #

Start extensions after ensuring existing ones are stopped

clientShutdown :: ClientState -> IO () Source #

Actions to be run when exiting the client.

clientPark Source #

Arguments

:: ClientState

client state

-> (Ptr () -> IO a)

continuation using the stable pointer to the client

-> IO (ClientState, a) 

Prepare the client to support reentry from the extension API.

clientMatcher Source #

Arguments

:: ClientState

client state

-> Maybe (Text -> Bool)

optional predicate

Returns the current filtering predicate if one is active.

clientMatcher' Source #

Arguments

:: ClientState

client state

-> Maybe (Text -> Bool)

optional predicate

Strict version of clientMatcher

clientActiveRegex :: ClientState -> Maybe Regex Source #

Construct a text matching predicate used to filter the message window.

clientToggleHideMeta :: ClientState -> ClientState Source #

Toggle the hide metadata setting for the focused window.

clientHighlightsNetwork Source #

Arguments

:: Text

network

-> ClientState

client state

-> HashSet Identifier

extra highlight identifiers

Compute the set of extra identifiers that should be highlighted given a particular network.

channelUserList Source #

Arguments

:: Text

network

-> Identifier

channel

-> ClientState 
-> [Identifier]

nicks

consumeInput :: ClientState -> ClientState Source #

Add the textbox input to the edit history and clear the textbox.

currentCompletionList :: ClientState -> [Identifier] Source #

Returns the current network's channels and current channel's users.

identIgnored Source #

Arguments

:: UserInfo

target user

-> ClientState

client state

-> Bool

is ignored

Predicate for nicknames to determine if messages should be ignored.

clientFirstLine :: ClientState -> String Source #

The full top-most line that would be executed

clientLine Source #

Arguments

:: ClientState 
-> (Int, String)

line number, line content

The line under the cursor in the edit box.

abortNetwork Source #

Arguments

:: Text

network

-> ClientState 
-> IO ClientState 

Forcefully terminate the connection currently associated with a given network name.

addConnection Source #

Arguments

:: Int

attempts

-> Maybe UTCTime

optional disconnect time

-> Text

network name

-> ClientState 
-> IO ClientState 

Start a new connection. The delay is used for reconnections.

removeNetwork :: NetworkId -> ClientState -> (NetworkState, ClientState) Source #

Remove a network connection and unlink it from the network map. This operation assumes that the network connection exists and should only be applied once per connection.

clientTick :: ClientState -> ClientState Source #

Function applied to the client state every redraw.

applyMessageToClientState Source #

Arguments

:: ZonedTime

timestamp

-> IrcMsg

message received

-> NetworkId

message network

-> NetworkState

network connection state

-> ClientState

client state

-> ([RawIrcMsg], ClientState)

response , updated state

clientHighlights Source #

Arguments

:: NetworkState

network state

-> ClientState

client state

-> HashSet Identifier

extra highlight identifiers

Compute the set of extra identifiers that should be highlighted given a particular network state.

clientWindowNames :: ClientState -> [Char] Source #

Produce the list of window names configured for the client.

clientPalette :: ClientState -> Palette Source #

Produce the list of window names configured for the client.

clientAutoconnects :: ClientState -> [Text] Source #

Returns the list of network names that requested autoconnection.

clientActiveCommand Source #

Arguments

:: ClientState

client state

-> Maybe (String, String)

command name and argument string

Compute the command and arguments currently in the textbox.

clientExtraFocuses :: ClientState -> [Focus] Source #

List of extra focuses to display as split windows

currentNickCompletionMode :: ClientState -> WordCompletionMode Source #

Returns the WordCompletionMode associated with the current network.

Add messages to buffers

recordChannelMessage Source #

Arguments

:: Text

network

-> Identifier

channel

-> ClientMessage 
-> ClientState 
-> ClientState 

Add a message to the window associated with a given channel

recordNetworkMessage :: ClientMessage -> ClientState -> ClientState Source #

Record a message on a network window

recordIrcMessage Source #

Arguments

:: Text

network

-> MessageTarget 
-> ClientMessage 
-> ClientState 
-> ClientState 

Record a message in the windows corresponding to the given target

Focus manipulation

changeFocus Source #

Arguments

:: Focus

new focus

-> ClientState

client state

-> ClientState 

Change the window focus to the given value, reset the subfocus to message view, reset the scroll, remember the previous focus if it changed.

changeSubfocus Source #

Arguments

:: Subfocus

new subfocus

-> ClientState

client state

-> ClientState 

Change the subfocus to the given value, preserve the focus, reset the scroll.

returnFocus :: ClientState -> ClientState Source #

Return to previously focused window.

advanceFocus :: ClientState -> ClientState Source #

Step focus to the next window when on message view. Otherwise switch to message view.

advanceNetworkFocus :: ClientState -> ClientState Source #

Step focus to the next window when on message view. Otherwise switch to message view.

retreatFocus :: ClientState -> ClientState Source #

Step focus to the previous window when on message view. Otherwise switch to message view.

jumpToActivity :: ClientState -> ClientState Source #

Jump the focus of the client to a buffer that has unread activity. Some events like errors or chat messages mentioning keywords are considered important and will be jumped to first.

jumpFocus Source #

Arguments

:: Int

zero-based window index

-> ClientState 
-> ClientState 

Jump the focus directly to a window based on its zero-based index.

setExtraFocus :: [Focus] -> ClientState -> ClientState Source #

Unified logic for assigning to the extra focuses field that activates and deactivates windows as needed.

Scrolling

scrollClient :: Int -> ClientState -> ClientState Source #

Scroll the current buffer to show newer messages

Extensions

data ExtensionState Source #

State of the extension API including loaded extensions and the mechanism used to support reentry into the Haskell runtime from the C API.

URL view

urlPattern :: Regex Source #

Regular expression for matching HTTP/HTTPS URLs in chat text.

urlMatches :: Text -> [Text] Source #

Find all the URL matches using urlPattern in a given Text suitable for being opened. Surrounding < and > are removed.