feat: add --no-media flag to disable media display

- Introduced a new "no_media" boolean in ColumnsArgs to capture the
  --no-media flag.

- Updated NoteOptions to include a setting for hiding media, configured
  from parsed arguments.

- Refactored Damus to consolidate note options (textmode, scramble, and
  no-media) into a single NoteOptions field.

- Modified navigation UI rendering to pass the unified note_options.

This change allows users to disable media display via the --no-media flag.

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2025-02-22 14:39:04 -08:00
parent bd352f76d4
commit 660b7cc8b7
3 changed files with 17 additions and 21 deletions

View File

@@ -7,7 +7,7 @@ use crate::{
subscriptions::{SubKind, Subscriptions}, subscriptions::{SubKind, Subscriptions},
support::Support, support::Support,
timeline::{self, TimelineCache}, timeline::{self, TimelineCache},
ui::{self, DesktopSidePanel}, ui::{self, note::NoteOptions, DesktopSidePanel},
unknowns, unknowns,
view_state::ViewState, view_state::ViewState,
Result, Result,
@@ -50,10 +50,7 @@ pub struct Damus {
pub tmp_columns: bool, pub tmp_columns: bool,
pub debug: bool, pub debug: bool,
pub since_optimize: bool, pub since_optimize: bool,
pub textmode: bool, pub note_options: NoteOptions,
/// Scramble text for development
pub scramble: bool,
pub unrecognized_args: BTreeSet<String>, pub unrecognized_args: BTreeSet<String>,
} }
@@ -425,6 +422,10 @@ impl Damus {
let debug = ctx.args.debug; let debug = ctx.args.debug;
let support = Support::new(ctx.path); let support = Support::new(ctx.path);
let mut note_options = NoteOptions::default();
note_options.set_textmode(parsed_args.textmode);
note_options.set_scramble_text(parsed_args.scramble);
note_options.set_hide_media(parsed_args.no_media);
Self { Self {
subscriptions: Subscriptions::default(), subscriptions: Subscriptions::default(),
@@ -432,8 +433,7 @@ impl Damus {
timeline_cache, timeline_cache,
drafts: Drafts::default(), drafts: Drafts::default(),
state: DamusState::Initializing, state: DamusState::Initializing,
textmode: parsed_args.textmode, note_options,
scramble: parsed_args.scramble,
//frame_history: FrameHistory::default(), //frame_history: FrameHistory::default(),
view_state: ViewState::default(), view_state: ViewState::default(),
tmp_columns, tmp_columns,
@@ -477,8 +477,7 @@ impl Damus {
timeline_cache: TimelineCache::default(), timeline_cache: TimelineCache::default(),
drafts: Drafts::default(), drafts: Drafts::default(),
state: DamusState::Initializing, state: DamusState::Initializing,
textmode: false, note_options: NoteOptions::default(),
scramble: false,
tmp_columns: true, tmp_columns: true,
//frame_history: FrameHistory::default(), //frame_history: FrameHistory::default(),
view_state: ViewState::default(), view_state: ViewState::default(),

View File

@@ -9,6 +9,7 @@ pub struct ColumnsArgs {
pub since_optimize: bool, pub since_optimize: bool,
pub textmode: bool, pub textmode: bool,
pub scramble: bool, pub scramble: bool,
pub no_media: bool,
} }
impl ColumnsArgs { impl ColumnsArgs {
@@ -19,6 +20,7 @@ impl ColumnsArgs {
since_optimize: true, since_optimize: true,
textmode: false, textmode: false,
scramble: false, scramble: false,
no_media: false,
}; };
let mut i = 0; let mut i = 0;
@@ -32,6 +34,8 @@ impl ColumnsArgs {
res.since_optimize = false; res.since_optimize = false;
} else if arg == "--scramble" { } else if arg == "--scramble" {
res.scramble = true; res.scramble = true;
} else if arg == "--no-media" {
res.no_media = true;
} else if arg == "--filter" { } else if arg == "--filter" {
i += 1; i += 1;
let filter = if let Some(next_arg) = args.get(i) { let filter = if let Some(next_arg) = args.get(i) {

View File

@@ -16,7 +16,7 @@ use crate::{
column::NavTitle, column::NavTitle,
configure_deck::ConfigureDeckView, configure_deck::ConfigureDeckView,
edit_deck::{EditDeckResponse, EditDeckView}, edit_deck::{EditDeckResponse, EditDeckView},
note::{NoteOptions, PostAction, PostType}, note::{PostAction, PostType},
profile::EditProfileView, profile::EditProfileView,
support::SupportView, support::SupportView,
RelayView, View, RelayView, View,
@@ -243,13 +243,6 @@ fn render_nav_body(
col: usize, col: usize,
inner_rect: egui::Rect, inner_rect: egui::Rect,
) -> Option<RenderNavAction> { ) -> Option<RenderNavAction> {
let note_options = {
let mut options = NoteOptions::default();
options.set_textmode(app.textmode);
options.set_scramble_text(app.scramble);
options
};
match top { match top {
Route::Timeline(kind) => render_timeline_route( Route::Timeline(kind) => render_timeline_route(
ctx.ndb, ctx.ndb,
@@ -260,7 +253,7 @@ fn render_nav_body(
ctx.accounts, ctx.accounts,
kind, kind,
col, col,
note_options, app.note_options,
depth, depth,
ui, ui,
), ),
@@ -317,7 +310,7 @@ fn render_nav_body(
ctx.img_cache, ctx.img_cache,
&note, &note,
inner_rect, inner_rect,
note_options, app.note_options,
) )
.id_source(id) .id_source(id)
.show(ui) .show(ui)
@@ -353,7 +346,7 @@ fn render_nav_body(
draft, draft,
&note, &note,
inner_rect, inner_rect,
note_options, app.note_options,
) )
.id_source(id) .id_source(id)
.show(ui) .show(ui)
@@ -375,7 +368,7 @@ fn render_nav_body(
ctx.note_cache, ctx.note_cache,
kp, kp,
inner_rect, inner_rect,
note_options, app.note_options,
) )
.ui(&txn, ui); .ui(&txn, ui);