Skip to content

Commit

Permalink
ability to adjust server message styles
Browse files Browse the repository at this point in the history
  • Loading branch information
casperstorm committed Jan 20, 2024
1 parent 131bca2 commit 962cc8a
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 23 deletions.
10 changes: 10 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,16 @@ buffer:
# - Supported values: ["join", "part", "quit"]
hidden_server_messages: []

# - Supported values: ["join", "part", "quit"]
server_messages:
join:
exclude: true
user_format: Short
part:
enabled: false
quit:
enabled: false

# Channel buffer settings
channel:
# User list settings
Expand Down
2 changes: 1 addition & 1 deletion data/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use crate::server::Map as ServerMap;
use crate::theme::Palette;
use crate::{environment, Theme};

mod buffer;
pub mod buffer;
pub mod channel;
pub mod dashboard;
mod keys;
Expand Down
44 changes: 38 additions & 6 deletions data/src/config/buffer.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use std::collections::HashSet;

use chrono::{DateTime, Local, Utc};
use serde::Deserialize;

use super::Channel;
use crate::buffer::{Color, InputVisibility, Nickname, Timestamp};
use crate::message;
use crate::{
buffer::{Color, InputVisibility, Nickname, Timestamp},
message::source,
};

#[derive(Debug, Clone, Deserialize)]
pub struct Buffer {
Expand All @@ -18,7 +18,39 @@ pub struct Buffer {
#[serde(default)]
pub channel: Channel,
#[serde(default)]
pub hidden_server_messages: HashSet<message::source::Server>,
pub server_messages: ServerMessages,
}

#[derive(Debug, Clone, Default, Deserialize)]
pub struct ServerMessages {
pub join: ServerMessage,
pub part: ServerMessage,
pub quit: ServerMessage,
}

impl ServerMessages {
pub fn get(&self, server: &source::Server) -> ServerMessage {
match server {
source::Server::Join => self.join,
source::Server::Part => self.part,
source::Server::Quit => self.quit,
}
}
}

#[derive(Debug, Copy, Clone, Default, Deserialize)]
pub struct ServerMessage {
#[serde(default)]
pub exclude: bool,
#[serde(default)]
pub user_format: UserFormat,
}

#[derive(Debug, Copy, Clone, Default, Deserialize)]
pub enum UserFormat {
Short,
#[default]
Full,
}

impl Default for Buffer {
Expand All @@ -34,7 +66,7 @@ impl Default for Buffer {
},
input_visibility: InputVisibility::default(),
channel: Channel::default(),
hidden_server_messages: HashSet::default(),
server_messages: Default::default(),
}
}
}
Expand Down
23 changes: 14 additions & 9 deletions data/src/history/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use futures::{future, Future, FutureExt};
use itertools::Itertools;
use tokio::time::Instant;

use crate::config::buffer::ServerMessages;
use crate::history::{self, History};
use crate::message::{self, Limit};
use crate::time::Posix;
Expand Down Expand Up @@ -187,35 +188,39 @@ impl Manager {
server: &Server,
channel: &str,
limit: Option<Limit>,
exclude: &HashSet<message::source::Server>,
server_messages: &ServerMessages,
) -> Option<history::View<'_>> {
self.data.history_view(
server,
&history::Kind::Channel(channel.to_string()),
limit,
exclude,
server_messages,
)
}

pub fn get_server_messages(
&self,
server: &Server,
limit: Option<Limit>,
exclude: &HashSet<message::source::Server>,
server_messages: &ServerMessages,
) -> Option<history::View<'_>> {
self.data
.history_view(server, &history::Kind::Server, limit, exclude)
.history_view(server, &history::Kind::Server, limit, server_messages)
}

pub fn get_query_messages(
&self,
server: &Server,
nick: &Nick,
limit: Option<Limit>,
exclude: &HashSet<message::source::Server>,
server_messages: &ServerMessages,
) -> Option<history::View<'_>> {
self.data
.history_view(server, &history::Kind::Query(nick.clone()), limit, exclude)
self.data.history_view(
server,
&history::Kind::Query(nick.clone()),
limit,
server_messages,
)
}

pub fn get_unique_queries(&self, server: &Server) -> Vec<&Nick> {
Expand Down Expand Up @@ -421,7 +426,7 @@ impl Data {
server: &server::Server,
kind: &history::Kind,
limit: Option<Limit>,
exclude: &HashSet<message::source::Server>,
server_messages: &ServerMessages,
) -> Option<history::View> {
let History::Full {
messages,
Expand All @@ -436,7 +441,7 @@ impl Data {
.iter()
.filter(|message| {
if let message::Source::Server(Some(source)) = message.target.source() {
!exclude.contains(source)
!server_messages.get(source).exclude
} else {
true
}
Expand Down
12 changes: 5 additions & 7 deletions src/buffer/scroll_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,22 +45,20 @@ pub fn view<'a>(
old_messages,
new_messages,
}) = (match kind {
Kind::Server(server) => history.get_server_messages(
server,
Some(state.limit),
&config.buffer.hidden_server_messages,
),
Kind::Server(server) => {
history.get_server_messages(server, Some(state.limit), &config.buffer.server_messages)
}
Kind::Channel(server, channel) => history.get_channel_messages(
server,
channel,
Some(state.limit),
&config.buffer.hidden_server_messages,
&config.buffer.server_messages,
),
Kind::Query(server, user) => history.get_query_messages(
server,
user,
Some(state.limit),
&config.buffer.hidden_server_messages,
&config.buffer.server_messages,
),
})
else {
Expand Down

0 comments on commit 962cc8a

Please sign in to comment.