diff --git a/musicus/res/ui/import_screen.ui b/musicus/res/ui/import_screen.ui
index 8310f5b..1079912 100644
--- a/musicus/res/ui/import_screen.ui
+++ b/musicus/res/ui/import_screen.ui
@@ -32,14 +32,25 @@
6
vertical
-
diff --git a/musicus/src/import/import_screen.rs b/musicus/src/import/import_screen.rs
index 66c61c0..1b7ae4a 100644
--- a/musicus/src/import/import_screen.rs
+++ b/musicus/src/import/import_screen.rs
@@ -7,6 +7,7 @@ use gtk::prelude::*;
use gtk_macros::get_widget;
use libadwaita::prelude::*;
use log::debug;
+use musicus_backend::Error;
use musicus_backend::db::Medium;
use musicus_backend::import::ImportSession;
use std::rc::Rc;
@@ -17,6 +18,7 @@ pub struct ImportScreen {
handle: NavigationHandle<()>,
session: Arc,
widget: gtk::Box,
+ server_check_button: gtk::CheckButton,
matching_stack: gtk::Stack,
error_row: libadwaita::ActionRow,
matching_list: gtk::ListBox,
@@ -29,7 +31,13 @@ impl ImportScreen {
let this = self;
spawn!(@clone this, async move {
- match this.handle.backend.db().get_mediums_by_source_id(this.session.source_id()).await {
+ let mediums: Result, Error> = if this.server_check_button.get_active() {
+ this.handle.backend.cl().get_mediums_by_discid(this.session.source_id()).await.map_err(|err| err.into())
+ } else {
+ this.handle.backend.db().get_mediums_by_source_id(this.session.source_id()).await.map_err(|err| err.into())
+ };
+
+ match mediums {
Ok(mediums) => {
if !mediums.is_empty() {
this.show_matches(mediums);
@@ -99,6 +107,7 @@ impl Screen, ()> for ImportScreen {
get_widget!(builder, gtk::Stack, matching_stack);
get_widget!(builder, gtk::Button, try_again_button);
get_widget!(builder, libadwaita::ActionRow, error_row);
+ get_widget!(builder, gtk::CheckButton, server_check_button);
get_widget!(builder, gtk::ListBox, matching_list);
get_widget!(builder, gtk::Button, select_button);
get_widget!(builder, gtk::Button, add_button);
@@ -107,6 +116,7 @@ impl Screen, ()> for ImportScreen {
handle,
session,
widget,
+ server_check_button,
matching_stack,
error_row,
matching_list,
@@ -118,6 +128,10 @@ impl Screen, ()> for ImportScreen {
this.handle.pop(None);
}));
+ this.server_check_button.connect_toggled(clone!(@weak this => move |_| {
+ this.load_matches();
+ }));
+
try_again_button.connect_clicked(clone!(@weak this => move |_| {
this.load_matches();
}));