Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: rescanning album's artwork #109

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 0 additions & 15 deletions src/data/LibraryUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -339,21 +339,6 @@ export async function openTauriImportDialog() {
}
}

export async function rescanAlbumArtwork(album: Album) {
// console.log("adding artwork from song", song, newAlbum);

const response = await invoke<ToImport>("scan_paths", {
event: {
paths: [album.path],
recursive: false,
process_albums: true,
is_async: false,
},
});

// TODO: Write updated album with updated artwork to DB
}

export async function runScan() {
const settings = get(userSettings);

Expand Down
59 changes: 43 additions & 16 deletions src/lib/albums/AlbumMenu.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,11 @@
import Menu from "../menu/Menu.svelte";
import MenuDivider from "../menu/MenuDivider.svelte";
import MenuOption from "../menu/MenuOption.svelte";
import { fetchAlbumArt } from "../data/LibraryEnrichers";
import { rescanAlbumArtwork } from "../../data/LibraryUtils";
import {
type EnricherResult,
fetchAlbumArt,
rescanAlbumArtwork,
} from "../data/LibraryEnrichers";
import type { Album, ToImport } from "../../App";
import { invoke } from "@tauri-apps/api/core";

Expand Down Expand Up @@ -103,19 +106,32 @@
}

// Enrichers
let isFetchingArtwork = false;
let artworkResult: { success?: string; error?: string };
let artworkResultForAlbum: String;
let fetchArtworkLoading = false;
let fetchArtworkResult: EnricherResult;
let fetchArtworkAlbumId: String;

async function fetchArtwork() {
artworkResult = null;
isFetchingArtwork = true;
artworkResultForAlbum = $rightClickedAlbum.id;
artworkResult = await fetchAlbumArt($rightClickedAlbum);
isFetchingArtwork = false;
fetchArtworkLoading = true;
fetchArtworkResult = null;
fetchArtworkAlbumId = $rightClickedAlbum.id;

fetchArtworkResult = await fetchAlbumArt($rightClickedAlbum);

fetchArtworkLoading = false;
}

let rescanLocalArtworkLoading = false;
let rescanLocalArtworkResult: EnricherResult;
let rescanLocalArtworkAlbumId: String;

async function rescanLocalArtwork() {
rescanAlbumArtwork($rightClickedAlbum);
rescanLocalArtworkLoading = true;
rescanLocalArtworkResult = null;
rescanLocalArtworkAlbumId = $rightClickedAlbum.id;

rescanLocalArtworkResult = await rescanAlbumArtwork($rightClickedAlbum);

rescanLocalArtworkLoading = false;
}

let isReimporting = false;
Expand Down Expand Up @@ -163,23 +179,34 @@
<MenuOption text="⚡️ Enrich" isDisabled />
<MenuOption
onClick={fetchArtwork}
isLoading={isFetchingArtwork}
isLoading={fetchArtworkLoading}
text="Fetch artwork"
description={isFetchingArtwork
description={fetchArtworkLoading
? "Fetching from Wikipedia..."
: "Save to folder as cover.jpg"}
/>
{#if artworkResult && artworkResultForAlbum === $rightClickedAlbum.id}
{#if fetchArtworkResult && fetchArtworkAlbumId === $rightClickedAlbum.id}
<MenuOption
text={artworkResult.error || artworkResult.success}
text={fetchArtworkResult.error ||
fetchArtworkResult.success}
isDisabled
/>
{/if}
<MenuOption
onClick={rescanLocalArtwork}
isLoading={rescanLocalArtworkLoading}
text="Scan existing artwork"
description="Check encoded art in tracks / folder image"
description={rescanLocalArtworkLoading
? "Rescanning..."
: "Check encoded art in tracks / folder image"}
/>
{#if rescanLocalArtworkResult && rescanLocalArtworkAlbumId === $rightClickedAlbum.id}
<MenuOption
text={rescanLocalArtworkResult.error ||
rescanLocalArtworkResult.success}
isDisabled
/>
{/if}
<MenuOption
onClick={searchArtworkOnBrave}
text="Search for artwork on Brave"
Expand Down
Loading