force UI refresh after results are downloaded
This commit is contained in:
@@ -163,7 +163,7 @@ fn main() {
|
|||||||
cfg.keybindings.clone(),
|
cfg.keybindings.clone(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let search = ui::search::SearchView::new(spotify.clone(), queue.clone());
|
let search = ui::search::SearchView::new(event_manager.clone(), spotify.clone(), queue.clone());
|
||||||
|
|
||||||
let playlistsview = ui::playlists::PlaylistView::new(&playlists, queue.clone());
|
let playlistsview = ui::playlists::PlaylistView::new(&playlists, queue.clone());
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ use std::sync::{Arc, Mutex, RwLock};
|
|||||||
use album::Album;
|
use album::Album;
|
||||||
use artist::Artist;
|
use artist::Artist;
|
||||||
use commands::CommandResult;
|
use commands::CommandResult;
|
||||||
|
use events::EventManager;
|
||||||
use playlists::{Playlist, Playlists};
|
use playlists::{Playlist, Playlists};
|
||||||
use queue::Queue;
|
use queue::Queue;
|
||||||
use spotify::Spotify;
|
use spotify::Spotify;
|
||||||
@@ -28,13 +29,14 @@ pub struct SearchView {
|
|||||||
edit: IdView<EditView>,
|
edit: IdView<EditView>,
|
||||||
list: IdView<TabView>,
|
list: IdView<TabView>,
|
||||||
edit_focused: bool,
|
edit_focused: bool,
|
||||||
|
events: EventManager,
|
||||||
spotify: Arc<Spotify>,
|
spotify: Arc<Spotify>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const LIST_ID: &str = "search_list";
|
pub const LIST_ID: &str = "search_list";
|
||||||
pub const EDIT_ID: &str = "search_edit";
|
pub const EDIT_ID: &str = "search_edit";
|
||||||
impl SearchView {
|
impl SearchView {
|
||||||
pub fn new(spotify: Arc<Spotify>, queue: Arc<Queue>) -> SearchView {
|
pub fn new(events: EventManager, spotify: Arc<Spotify>, queue: Arc<Queue>) -> SearchView {
|
||||||
let results_tracks = Arc::new(RwLock::new(Vec::new()));
|
let results_tracks = Arc::new(RwLock::new(Vec::new()));
|
||||||
let results_albums = Arc::new(RwLock::new(Vec::new()));
|
let results_albums = Arc::new(RwLock::new(Vec::new()));
|
||||||
let results_artists = Arc::new(RwLock::new(Vec::new()));
|
let results_artists = Arc::new(RwLock::new(Vec::new()));
|
||||||
@@ -65,7 +67,8 @@ impl SearchView {
|
|||||||
edit: searchfield,
|
edit: searchfield,
|
||||||
list: tabs.with_id(LIST_ID),
|
list: tabs.with_id(LIST_ID),
|
||||||
edit_focused: true,
|
edit_focused: true,
|
||||||
spotify
|
events,
|
||||||
|
spotify,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,38 +163,46 @@ impl SearchView {
|
|||||||
self.spotify.refresh_token();
|
self.spotify.refresh_token();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
let ev = self.events.clone();
|
||||||
let spotify = self.spotify.clone();
|
let spotify = self.spotify.clone();
|
||||||
let results = self.results_tracks.clone();
|
let results = self.results_tracks.clone();
|
||||||
let query = query.clone();
|
let query = query.clone();
|
||||||
std::thread::spawn(|| {
|
std::thread::spawn(move || {
|
||||||
Self::search_track(spotify, results, query);
|
Self::search_track(spotify, results, query);
|
||||||
|
ev.trigger();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
let ev = self.events.clone();
|
||||||
let spotify = self.spotify.clone();
|
let spotify = self.spotify.clone();
|
||||||
let results = self.results_albums.clone();
|
let results = self.results_albums.clone();
|
||||||
let query = query.clone();
|
let query = query.clone();
|
||||||
std::thread::spawn(|| {
|
std::thread::spawn(move || {
|
||||||
Self::search_album(spotify, results, query);
|
Self::search_album(spotify, results, query);
|
||||||
|
ev.trigger();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
let ev = self.events.clone();
|
||||||
let spotify = self.spotify.clone();
|
let spotify = self.spotify.clone();
|
||||||
let results = self.results_artists.clone();
|
let results = self.results_artists.clone();
|
||||||
let query = query.clone();
|
let query = query.clone();
|
||||||
std::thread::spawn(|| {
|
std::thread::spawn(move || {
|
||||||
Self::search_artist(spotify, results, query);
|
Self::search_artist(spotify, results, query);
|
||||||
|
ev.trigger();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
let ev = self.events.clone();
|
||||||
let spotify = self.spotify.clone();
|
let spotify = self.spotify.clone();
|
||||||
let results = self.results_playlists.clone();
|
let results = self.results_playlists.clone();
|
||||||
let query = query.clone();
|
let query = query.clone();
|
||||||
std::thread::spawn(|| {
|
std::thread::spawn(move || {
|
||||||
Self::search_playlist(spotify, results, query);
|
Self::search_playlist(spotify, results, query);
|
||||||
|
ev.trigger();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user