fixed play glitch on folders
This commit is contained in:
20
src/main.rs
20
src/main.rs
@@ -896,7 +896,15 @@ fn handle_key(app: &mut App, code: KeyCode) {
|
|||||||
// - Offline directory browser: we have a direct local file path
|
// - Offline directory browser: we have a direct local file path
|
||||||
let (maybe_item_id, item_name, maybe_path) = match app.current_view() {
|
let (maybe_item_id, item_name, maybe_path) = match app.current_view() {
|
||||||
View::Library { items, selected, .. } if !items.is_empty() => {
|
View::Library { items, selected, .. } if !items.is_empty() => {
|
||||||
(Some(items[*selected].id.clone()), items[*selected].name.clone(), None)
|
let it = &items[*selected];
|
||||||
|
let ty = it.item_type.as_deref().unwrap_or("");
|
||||||
|
|
||||||
|
if !is_playable_item_type(ty) {
|
||||||
|
app.status = "Not playable (use Enter to drill down)".into();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
(Some(it.id.clone()), it.name.clone(), None)
|
||||||
}
|
}
|
||||||
View::OfflineLibrary { entries, selected, .. } if !entries.is_empty() => {
|
View::OfflineLibrary { entries, selected, .. } if !entries.is_empty() => {
|
||||||
let e = &entries[*selected];
|
let e = &entries[*selected];
|
||||||
@@ -975,6 +983,12 @@ fn handle_key(app: &mut App, code: KeyCode) {
|
|||||||
|
|
||||||
match view {
|
match view {
|
||||||
View::Library { items, selected, .. } if !items.is_empty() => {
|
View::Library { items, selected, .. } if !items.is_empty() => {
|
||||||
|
let ty = items[selected].item_type.as_deref().unwrap_or("");
|
||||||
|
if !is_playable_item_type(ty) {
|
||||||
|
app.status = "Not playable (use Enter to drill down)".into();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let item_id = items[selected].id.clone();
|
let item_id = items[selected].id.clone();
|
||||||
let item_name = items[selected].name.clone();
|
let item_name = items[selected].name.clone();
|
||||||
let len = items.len();
|
let len = items.len();
|
||||||
@@ -3944,3 +3958,7 @@ fn jellyfin_report_stopped_best_effort(app: &mut App) {
|
|||||||
let _ = client.report_playback_stopped(&item_id, Some(pos_ticks), failed);
|
let _ = client.report_playback_stopped(&item_id, Some(pos_ticks), failed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_playable_item_type(ty: &str) -> bool {
|
||||||
|
matches!(ty, "Episode" | "Movie" | "Audio")
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user