main.go
main.go - Overview
This file implements a simple chatroom application using the Bubble Tea framework in Go. It handles user input, displays messages, and communicates with a chat service.
Detailed Documentation
main
Function
- Purpose: Entry point of the chatroom application. It initializes the application, retrieves the username from command line arguments, starts listening for messages, and runs the Bubble Tea program.
- Parameters: None
- Returns: None
init
Function
- Purpose: Initializes the global variable
M
with the initial model. - Parameters: None
- Returns: None
model
Struct
- Purpose: Defines the application's model, holding the viewport, messages, textarea, styles, and errors.
- Fields:
viewport
(viewport.Model): The viewport for displaying messages.messages
([]string): A slice of strings representing the chat messages.textarea
(textarea.Model): The textarea for user input.senderStyle
(lipgloss.Style): Style for rendering the sender's username.err
(error): Any errors that occur during the application's execution.
initialModel
Function
- Purpose: Initializes and returns the initial application model.
- Parameters: None
- Returns:
model
: The initialized application model.
(*model) AddMessage
Function
- Purpose: Adds a new message to the model's message list. It splits the message into username and message content before adding it to the messages slice.
- Parameters:
message
(string): The message to add, formatted as "username:message content".
- Returns: None
(*model) Refresh
Function
- Purpose: Refreshes the viewport with the current messages.
- Parameters: None
- Returns: None
(*model) Init
Function
- Purpose: Initializes the application. Subscribes to the chat service.
- Parameters: None
- Returns:
tea.Cmd
(*model) Update
Function
- Purpose: Handles updates to the application state based on user input and other events.
- Parameters:
msg
(tea.Msg): The message to process.
- Returns:
tea.Model
: The updated model.tea.Cmd
: A command to execute.
(*model) View
Function
- Purpose: Renders the application's UI.
- Parameters: None
- Returns:
string
: The rendered UI.