trying to find a way to beat the borrow checker
This commit is contained in:
parent
e63f003181
commit
95fb1d86d8
|
@ -482,7 +482,7 @@ impl cosmic::Application for App {
|
||||||
let task = library.update(
|
let task = library.update(
|
||||||
library::Message::UpdateSong(song),
|
library::Message::UpdateSong(song),
|
||||||
);
|
);
|
||||||
task.map(|m| {
|
task.map(|_m| {
|
||||||
cosmic::app::Message::App(Message::None)
|
cosmic::app::Message::App(Message::None)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -101,24 +101,7 @@ impl<'a> Library {
|
||||||
Task::none()
|
Task::none()
|
||||||
}
|
}
|
||||||
Message::UpdateSong(song) => {
|
Message::UpdateSong(song) => {
|
||||||
let Some((kind, index)) = self.editing_item else {
|
let future = self.update_song(song);
|
||||||
error!("Not editing an item");
|
|
||||||
return Task::none();
|
|
||||||
};
|
|
||||||
|
|
||||||
if kind != LibraryKind::Song {
|
|
||||||
error!("Not editing a song item");
|
|
||||||
return Task::none();
|
|
||||||
}
|
|
||||||
let db = self.db.clone();
|
|
||||||
let song_library = self.song_library.clone();
|
|
||||||
|
|
||||||
let future = update_song(
|
|
||||||
song,
|
|
||||||
index as usize,
|
|
||||||
db,
|
|
||||||
song_library,
|
|
||||||
);
|
|
||||||
Task::perform(future, |r| {
|
Task::perform(future, |r| {
|
||||||
match r {
|
match r {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
|
@ -371,11 +354,9 @@ impl<'a> Library {
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) async fn update_song(
|
pub async fn update_song<'b>(
|
||||||
&'a mut self,
|
&'b mut self,
|
||||||
song: Song,
|
song: Song,
|
||||||
mut db: SqliteConnection,
|
|
||||||
mut song_library: Model<Song>,
|
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let Some((kind, index)) = self.editing_item else {
|
let Some((kind, index)) = self.editing_item else {
|
||||||
return Err(miette!("Not editing an item"));
|
return Err(miette!("Not editing an item"));
|
||||||
|
@ -384,9 +365,12 @@ impl<'a> Library {
|
||||||
if kind != LibraryKind::Song {
|
if kind != LibraryKind::Song {
|
||||||
return Err(miette!("Not editing a song item"));
|
return Err(miette!("Not editing a song item"));
|
||||||
}
|
}
|
||||||
|
let mut db = self.db.acquire().await.expect("foo");
|
||||||
|
|
||||||
if let Some(_) = self.song_library.items.get(index as usize) {
|
if let Some(_) = self.song_library.items.get(index as usize) {
|
||||||
song_library.update_song(song, index, &mut db).await?;
|
self.song_library
|
||||||
|
.update_song(song, index, &mut db)
|
||||||
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
Err(miette!("Song not found"))
|
Err(miette!("Song not found"))
|
||||||
|
|
Loading…
Reference in a new issue