ChatMode

Struct ChatMode 

Source
pub struct ChatMode {
    input_history: Vec<String>,
    history_index: Option<usize>,
    completer: ChatCompleter,
    current_suggestion: Option<String>,
}
Expand description

Manages the state and logic for the chat input and display.

Fields§

§input_history: Vec<String>

History of user input commands/messages.

§history_index: Option<usize>

Current index in the input history for navigation.

§completer: ChatCompleter

Completer for command and peer ID suggestions.

§current_suggestion: Option<String>

The currently suggested completion for the input.

Implementations§

Source§

impl ChatMode

Source

pub async fn handle_key( &mut self, state: &mut UIState, key: KeyEvent, action_tx: &UnboundedSender<UIAction>, ) -> Result<()>

Handles a key event in chat mode.

This function processes various key presses, including typing characters, navigating input history, moving the cursor, and executing commands.

§Arguments
  • state - The current UI state.
  • key - The KeyEvent to handle.
  • action_tx - The sender for dispatching UI actions.
§Errors

This function returns an error if a command execution fails.

Source

fn update_suggestion(&mut self, state: &UIState)

Updates the current input suggestion based on the input buffer content.

This is typically used for command autocompletion.

Source

fn navigate_history(&mut self, state: &mut UIState, up: bool)

Navigates through the input history.

§Arguments
  • state - The current UI state.
  • up - If true, navigates up (older entries); if false, navigates down (newer entries).
Source

async fn execute_command( &self, input: &str, action_tx: &UnboundedSender<UIAction>, ) -> Result<()>

Executes a command based on the input string.

This function parses the input, identifies commands like “send”, and dispatches appropriate UIActions.

§Arguments
  • input - The input string to parse and execute.
  • action_tx - The sender for dispatching UI actions.
§Errors

This function returns an error if the action sender fails.

Source§

impl ChatMode

Source

pub fn render( &self, stdout: &mut impl Write, state: &UIState, area: (u16, u16, u16, u16), node: Option<&Node>, ) -> Result<()>

Renders the chat interface, including messages and suggestions.

This function draws the chat history, input buffer, and any active suggestions to the terminal. It handles scrolling and message formatting.

§Arguments
  • stdout - A mutable reference to the output stream.
  • state - The current UI state.
  • area - The (x, y, width, height) coordinates of the rendering area.
  • node - An optional reference to the application’s Node for message decryption and friend information.
§Errors

This function returns an error if writing to the output stream fails.

Source§

impl ChatMode

Source

pub fn new() -> Self

Creates a new ChatMode instance.

Source

pub fn update_friends(&mut self, friends: Vec<String>)

Updates the list of friends for the completer.

Source

pub fn update_discovered_peers(&mut self, peers: Vec<String>)

Updates the list of discovered peers for the completer.

Source

pub fn get_current_suggestion(&self) -> Option<&str>

Returns the current suggestion string, if any.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,