From 9084fe7fe4686bcec3e267da41a6650eb1155f7e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 17 Apr 2026 07:05:21 -0500 Subject: [PATCH] [fix]: dropping multiple items into library only adds one to model --- src/ui/library.rs | 210 ++++++++++++++++++++++---------------------- src/ui/presenter.rs | 76 ---------------- 2 files changed, 103 insertions(+), 183 deletions(-) diff --git a/src/ui/library.rs b/src/ui/library.rs index b452c92..41c3b14 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -561,113 +561,7 @@ impl<'a> Library { } self.context_menu = Some(index); } - Message::AddFiles(items) => { - let mut tasks = Vec::new(); - let last_item = &items.last(); - - let after_task = match last_item { - Some(ServiceItemKind::Image(_image)) => { - Task::done(Message::OpenItem(Some(( - LibraryKind::Image, - self.image_library.items.len() as i32 - 1, - )))) - } - _ => Task::none(), - }; - for item in items { - match item { - ServiceItemKind::Song(song) => { - let task = Task::perform( - songs::add_song( - self.song_library.items.clone(), - Arc::clone(&self.db), - ), - { - move |res| match res { - Ok(songs) => { - Message::ReaddSongs(songs) - } - - Err(e) => { - error!(?e); - Message::None - } - } - }, - ); - tasks.push(task); - } - ServiceItemKind::Video(video) => { - let task = Task::perform( - videos::add_video( - vec![video], - self.video_library.items.clone(), - Arc::clone(&self.db), - ), - move |res| { - res.map_or( - Message::None, - |videos| { - Message::ReaddVideos( - videos, - ) - }, - ) - }, - ); - tasks.push(task); - } - ServiceItemKind::Image(image) => { - let task = Task::perform( - images::add_image( - vec![image], - self.image_library.items.clone(), - Arc::clone(&self.db), - ), - move |res| { - res.map_or( - Message::None, - |images| { - Message::ReaddImages( - images, - ) - }, - ) - }, - ); - tasks.push(task); - } - ServiceItemKind::Presentation( - presentation, - ) => { - let task = Task::perform( - presentations::add_presentation( - vec![presentation], - self.presentation_library - .items - .clone(), - Arc::clone(&self.db), - ), - move |res| { - res.map_or( - Message::None, - |presentations| { - Message::ReaddPres( - presentations, - ) - }, - ) - }, - ); - tasks.push(task); - } - ServiceItemKind::Content(_slide) => todo!(), - } - } - return Action::Task( - Task::batch(tasks).chain(after_task), - ); - } + Message::AddFiles(items) => return self.add_files(items), } Action::None } @@ -1312,6 +1206,108 @@ impl<'a> Library { self.selected_items = None; Action::Task(task) } + + fn add_files(&mut self, items: Vec) -> Action { + let mut tasks = Vec::new(); + + let videos: Vec