Bump dependencies (#133)
All checks were successful
Cargo CI / Build and Test (push) Successful in 1m40s
Cargo CI / Lint (push) Successful in 1m13s
Cargo CI / Build and Test (pull_request) Successful in 3m0s
Cargo CI / Lint (pull_request) Successful in 1m12s

Closes #132

Reviewed-on: #133
This commit is contained in:
Wojciech Kozlowski 2024-02-10 23:47:26 +01:00
parent 6a18c5d9cc
commit c4dc0d173b
4 changed files with 496 additions and 329 deletions

754
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -6,20 +6,20 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
crossterm = { version = "0.26.1", optional = true} crossterm = { version = "0.27.0", optional = true}
openssh = { version = "0.9.9", features = ["native-mux"], default-features = false, optional = true} openssh = { version = "0.10.3", features = ["native-mux"], default-features = false, optional = true}
ratatui = { version = "0.20.1", optional = true} ratatui = { version = "0.26.0", optional = true}
serde = { version = "1.0.159", features = ["derive"], optional = true } serde = { version = "1.0.196", features = ["derive"], optional = true }
serde_json = { version = "1.0.95", optional = true} serde_json = { version = "1.0.113", optional = true}
structopt = { version = "0.3.26", optional = true} structopt = { version = "0.3.26", optional = true}
tokio = { version = "1.27.0", features = ["rt"], optional = true} tokio = { version = "1.36.0", features = ["rt"], optional = true}
url = { version = "2.3.1" } url = { version = "2.5.0" }
uuid = { version = "1.3.0" } uuid = { version = "1.7.0" }
[dev-dependencies] [dev-dependencies]
mockall = "0.11.4" mockall = "0.12.1"
once_cell = "1.17.1" once_cell = "1.19.0"
tempfile = "3.5.0" tempfile = "3.10.0"
[features] [features]
default = ["database-json", "library-beets"] default = ["database-json", "library-beets"]

View File

@ -151,9 +151,9 @@ mod tests {
#[test] #[test]
fn save_errors() { fn save_errors() {
// serde_json will raise an error as it requires keys to be strings. // serde_json will raise an error as it has certain requirements on keys.
let mut object = HashMap::<Option<String>, String>::new(); let mut object = HashMap::<Result<(), ()>, String>::new();
object.insert(Some(String::from("artist")), String::from("string")); object.insert(Ok(()), String::from("string"));
let serde_err = serde_json::to_string(&object); let serde_err = serde_json::to_string(&object);
assert!(serde_err.is_err()); assert!(serde_err.is_err());

View File

@ -7,7 +7,6 @@ use musichoard::collection::{
Collection, Collection,
}; };
use ratatui::{ use ratatui::{
backend::Backend,
layout::{Alignment, Rect}, layout::{Alignment, Rect},
style::{Color, Style}, style::{Color, Style},
widgets::{Block, BorderType, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap}, widgets::{Block, BorderType, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap},
@ -20,7 +19,7 @@ use crate::tui::app::{
}; };
pub trait IUi { pub trait IUi {
fn render<APP: IAppAccess, B: Backend>(app: &mut APP, frame: &mut Frame<'_, B>); fn render<APP: IAppAccess>(app: &mut APP, frame: &mut Frame);
} }
struct ArtistArea { struct ArtistArea {
@ -445,13 +444,13 @@ impl Ui {
.title(format!(" {title} ")) .title(format!(" {title} "))
} }
fn render_list_widget<B: Backend>( fn render_list_widget(
title: &str, title: &str,
list: List, list: List,
state: &mut WidgetState, state: &mut WidgetState,
active: bool, active: bool,
area: Rect, area: Rect,
frame: &mut Frame<'_, B>, frame: &mut Frame,
) { ) {
frame.render_stateful_widget( frame.render_stateful_widget(
list.highlight_style(Self::highlight_style(active)) list.highlight_style(Self::highlight_style(active))
@ -464,12 +463,12 @@ impl Ui {
state.height = area.height.saturating_sub(2) as usize; state.height = area.height.saturating_sub(2) as usize;
} }
fn render_info_widget<B: Backend>( fn render_info_widget(
title: &str, title: &str,
paragraph: Paragraph, paragraph: Paragraph,
active: bool, active: bool,
area: Rect, area: Rect,
frame: &mut Frame<'_, B>, frame: &mut Frame,
) { ) {
frame.render_widget( frame.render_widget(
paragraph paragraph
@ -479,12 +478,12 @@ impl Ui {
); );
} }
fn render_overlay_widget<B: Backend>( fn render_overlay_widget(
title: &str, title: &str,
paragraph: Paragraph, paragraph: Paragraph,
area: Rect, area: Rect,
error: bool, error: bool,
frame: &mut Frame<'_, B>, frame: &mut Frame,
) { ) {
frame.render_widget(Clear, area); frame.render_widget(Clear, area);
frame.render_widget( frame.render_widget(
@ -525,12 +524,12 @@ impl Ui {
blocks blocks
} }
fn render_columns<B: Backend>( fn render_columns(
paragraphs: Vec<Paragraph>, paragraphs: Vec<Paragraph>,
min: u16, min: u16,
active: bool, active: bool,
area: Rect, area: Rect,
frame: &mut Frame<'_, B>, frame: &mut Frame,
) { ) {
for column in Self::columns(paragraphs, min, area).into_iter() { for column in Self::columns(paragraphs, min, area).into_iter() {
frame.render_widget( frame.render_widget(
@ -543,21 +542,21 @@ impl Ui {
} }
} }
fn render_artist_column<B: Backend>(st: ArtistState, ar: ArtistArea, fr: &mut Frame<'_, B>) { fn render_artist_column(st: ArtistState, ar: ArtistArea, fr: &mut Frame) {
Self::render_list_widget("Artists", st.list, st.state, st.active, ar.list, fr); Self::render_list_widget("Artists", st.list, st.state, st.active, ar.list, fr);
} }
fn render_album_column<B: Backend>(st: AlbumState, ar: AlbumArea, fr: &mut Frame<'_, B>) { fn render_album_column(st: AlbumState, ar: AlbumArea, fr: &mut Frame) {
Self::render_list_widget("Albums", st.list, st.state, st.active, ar.list, fr); Self::render_list_widget("Albums", st.list, st.state, st.active, ar.list, fr);
Self::render_info_widget("Album info", st.info, st.active, ar.info, fr); Self::render_info_widget("Album info", st.info, st.active, ar.info, fr);
} }
fn render_track_column<B: Backend>(st: TrackState, ar: TrackArea, fr: &mut Frame<'_, B>) { fn render_track_column(st: TrackState, ar: TrackArea, fr: &mut Frame) {
Self::render_list_widget("Tracks", st.list, st.state, st.active, ar.list, fr); Self::render_list_widget("Tracks", st.list, st.state, st.active, ar.list, fr);
Self::render_info_widget("Track info", st.info, st.active, ar.info, fr); Self::render_info_widget("Track info", st.info, st.active, ar.info, fr);
} }
fn render_minibuffer<B: Backend>(state: &AppPublicState, ar: Rect, fr: &mut Frame<'_, B>) { fn render_minibuffer(state: &AppPublicState, ar: Rect, fr: &mut Frame) {
let mut mb = Minibuffer::paragraphs(state); let mut mb = Minibuffer::paragraphs(state);
mb.paragraphs = mb mb.paragraphs = mb
.paragraphs .paragraphs
@ -576,11 +575,11 @@ impl Ui {
Self::render_columns(mb.paragraphs, mb.columns, false, area, fr); Self::render_columns(mb.paragraphs, mb.columns, false, area, fr);
} }
fn render_main_frame<B: Backend>( fn render_main_frame(
artists: &Collection, artists: &Collection,
selection: &mut Selection, selection: &mut Selection,
state: &AppPublicState, state: &AppPublicState,
frame: &mut Frame<'_, B>, frame: &mut Frame,
) { ) {
let active = selection.active; let active = selection.active;
let areas = FrameArea::new(frame.size()); let areas = FrameArea::new(frame.size());
@ -629,11 +628,7 @@ impl Ui {
Self::render_minibuffer(state, areas.minibuffer, frame); Self::render_minibuffer(state, areas.minibuffer, frame);
} }
fn render_info_overlay<B: Backend>( fn render_info_overlay(artists: &Collection, selection: &mut Selection, frame: &mut Frame) {
artists: &Collection,
selection: &mut Selection,
frame: &mut Frame<'_, B>,
) {
let area = OverlayBuilder::default().build(frame.size()); let area = OverlayBuilder::default().build(frame.size());
let artist_selection = &mut selection.artist; let artist_selection = &mut selection.artist;
@ -642,7 +637,7 @@ impl Ui {
Self::render_overlay_widget("Artist", artist_overlay.properties, area, false, frame); Self::render_overlay_widget("Artist", artist_overlay.properties, area, false, frame);
} }
fn render_reload_overlay<B: Backend>(frame: &mut Frame<'_, B>) { fn render_reload_overlay(frame: &mut Frame) {
let area = OverlayBuilder::default() let area = OverlayBuilder::default()
.with_width(OverlaySize::Value(39)) .with_width(OverlaySize::Value(39))
.with_height(OverlaySize::Value(4)) .with_height(OverlaySize::Value(4))
@ -653,7 +648,7 @@ impl Ui {
Self::render_overlay_widget("Reload", reload_text, area, false, frame); Self::render_overlay_widget("Reload", reload_text, area, false, frame);
} }
fn render_error_overlay<S: AsRef<str>, B: Backend>(title: S, msg: S, frame: &mut Frame<'_, B>) { fn render_error_overlay<S: AsRef<str>>(title: S, msg: S, frame: &mut Frame) {
let area = OverlayBuilder::default() let area = OverlayBuilder::default()
.with_height(OverlaySize::Value(4)) .with_height(OverlaySize::Value(4))
.build(frame.size()); .build(frame.size());
@ -667,7 +662,7 @@ impl Ui {
} }
impl IUi for Ui { impl IUi for Ui {
fn render<APP: IAppAccess, B: Backend>(app: &mut APP, frame: &mut Frame<'_, B>) { fn render<APP: IAppAccess>(app: &mut APP, frame: &mut Frame) {
let app = app.get(); let app = app.get();
let collection = app.collection; let collection = app.collection;