commit 660b7cc8b7cfd0d86ad223fa50f2347acd20b5f1
parent bd352f76d40ed386853c0f7a4b25519d31462a70
Author: William Casarin <jb55@jb55.com>
Date:   Sat, 22 Feb 2025 14:39:04 -0800
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>
Diffstat:
3 files changed, 17 insertions(+), 21 deletions(-)
diff --git a/crates/notedeck_columns/src/app.rs b/crates/notedeck_columns/src/app.rs
@@ -7,7 +7,7 @@ use crate::{
     subscriptions::{SubKind, Subscriptions},
     support::Support,
     timeline::{self, TimelineCache},
-    ui::{self, DesktopSidePanel},
+    ui::{self, note::NoteOptions, DesktopSidePanel},
     unknowns,
     view_state::ViewState,
     Result,
@@ -50,10 +50,7 @@ pub struct Damus {
     pub tmp_columns: bool,
     pub debug: bool,
     pub since_optimize: bool,
-    pub textmode: bool,
-
-    /// Scramble text for development
-    pub scramble: bool,
+    pub note_options: NoteOptions,
 
     pub unrecognized_args: BTreeSet<String>,
 }
@@ -425,6 +422,10 @@ impl Damus {
 
         let debug = ctx.args.debug;
         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 {
             subscriptions: Subscriptions::default(),
@@ -432,8 +433,7 @@ impl Damus {
             timeline_cache,
             drafts: Drafts::default(),
             state: DamusState::Initializing,
-            textmode: parsed_args.textmode,
-            scramble: parsed_args.scramble,
+            note_options,
             //frame_history: FrameHistory::default(),
             view_state: ViewState::default(),
             tmp_columns,
@@ -477,8 +477,7 @@ impl Damus {
             timeline_cache: TimelineCache::default(),
             drafts: Drafts::default(),
             state: DamusState::Initializing,
-            textmode: false,
-            scramble: false,
+            note_options: NoteOptions::default(),
             tmp_columns: true,
             //frame_history: FrameHistory::default(),
             view_state: ViewState::default(),
diff --git a/crates/notedeck_columns/src/args.rs b/crates/notedeck_columns/src/args.rs
@@ -9,6 +9,7 @@ pub struct ColumnsArgs {
     pub since_optimize: bool,
     pub textmode: bool,
     pub scramble: bool,
+    pub no_media: bool,
 }
 
 impl ColumnsArgs {
@@ -19,6 +20,7 @@ impl ColumnsArgs {
             since_optimize: true,
             textmode: false,
             scramble: false,
+            no_media: false,
         };
 
         let mut i = 0;
@@ -32,6 +34,8 @@ impl ColumnsArgs {
                 res.since_optimize = false;
             } else if arg == "--scramble" {
                 res.scramble = true;
+            } else if arg == "--no-media" {
+                res.no_media = true;
             } else if arg == "--filter" {
                 i += 1;
                 let filter = if let Some(next_arg) = args.get(i) {
diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs
@@ -16,7 +16,7 @@ use crate::{
         column::NavTitle,
         configure_deck::ConfigureDeckView,
         edit_deck::{EditDeckResponse, EditDeckView},
-        note::{NoteOptions, PostAction, PostType},
+        note::{PostAction, PostType},
         profile::EditProfileView,
         support::SupportView,
         RelayView, View,
@@ -243,13 +243,6 @@ fn render_nav_body(
     col: usize,
     inner_rect: egui::Rect,
 ) -> Option<RenderNavAction> {
-    let note_options = {
-        let mut options = NoteOptions::default();
-        options.set_textmode(app.textmode);
-        options.set_scramble_text(app.scramble);
-        options
-    };
-
     match top {
         Route::Timeline(kind) => render_timeline_route(
             ctx.ndb,
@@ -260,7 +253,7 @@ fn render_nav_body(
             ctx.accounts,
             kind,
             col,
-            note_options,
+            app.note_options,
             depth,
             ui,
         ),
@@ -317,7 +310,7 @@ fn render_nav_body(
                         ctx.img_cache,
                         ¬e,
                         inner_rect,
-                        note_options,
+                        app.note_options,
                     )
                     .id_source(id)
                     .show(ui)
@@ -353,7 +346,7 @@ fn render_nav_body(
                     draft,
                     ¬e,
                     inner_rect,
-                    note_options,
+                    app.note_options,
                 )
                 .id_source(id)
                 .show(ui)
@@ -375,7 +368,7 @@ fn render_nav_body(
                 ctx.note_cache,
                 kp,
                 inner_rect,
-                note_options,
+                app.note_options,
             )
             .ui(&txn, ui);