refactor(merge): use existing merge create

This commit is contained in:
2025-07-10 14:49:25 +03:00
parent 8b82d09318
commit b341b7a661
15 changed files with 230 additions and 714 deletions

View File

@@ -1,14 +1,18 @@
use crate::merge::Merge;
use derive_macro::Merge;
use merge::Merge;
use ratatui::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Merge)]
pub struct ColorsConfig {
#[merge(strategy = merge::option::overwrite_none)]
pub highlight_background: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub highlight_foreground: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub warning_foreground: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub info_foreground: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub error_foreground: Option<String>,
}

View File

@@ -1,23 +1,37 @@
use crate::merge::Merge;
use derive_macro::Merge;
use merge::Merge;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Merge)]
pub struct KeybindsConfig {
#[merge(strategy = merge::option::overwrite_none)]
pub quit: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub next_tab: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub prev_tab: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub next_torrent: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub prev_torrent: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub switch_tab_1: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub switch_tab_2: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub switch_tab_3: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub toggle_torrent: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub toggle_all: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub delete: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub delete_force: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub select: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub toggle_help: Option<String>,
#[merge(strategy = merge::option::overwrite_none)]
pub move_torrent: Option<String>,
}

View File

@@ -1,11 +1,10 @@
mod colors;
mod keybinds;
use crate::merge::Merge;
use color_eyre::Result;
use colors::ColorsConfig;
use derive_macro::Merge;
use keybinds::KeybindsConfig;
use merge::Merge;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

View File

@@ -3,6 +3,5 @@ pub mod config;
pub mod event;
pub mod handler;
pub mod log;
pub mod merge;
pub mod tui;
pub mod ui;

View File

@@ -1,21 +0,0 @@
pub trait Merge {
fn merge(&mut self, other: Self);
}
impl Merge for String {
fn merge(&mut self, other: Self) {
*self = other;
}
}
impl Merge for u32 {
fn merge(&mut self, other: Self) {
*self = other;
}
}
impl Merge for bool {
fn merge(&mut self, other: Self) {
*self = other;
}
}