From 5d25250125b2c2ab2f5d6a8e7e71fe60856dcfa6 Mon Sep 17 00:00:00 2001 From: MrDulfin Date: Sat, 14 Dec 2024 19:17:46 -0500 Subject: [PATCH] Fixed Album art getting functionality for front end --- dmp-core/src/music_storage/library.rs | 8 +-- src-tauri/src/lib.rs | 2 +- src-tauri/src/wrappers.rs | 1 + src-tauri/tauri.conf.json | 8 ++- src/App.tsx | 78 ++++++++++++++++++++++----- 5 files changed, 74 insertions(+), 23 deletions(-) diff --git a/dmp-core/src/music_storage/library.rs b/dmp-core/src/music_storage/library.rs index de57956..299a698 100644 --- a/dmp-core/src/music_storage/library.rs +++ b/dmp-core/src/music_storage/library.rs @@ -476,14 +476,10 @@ impl Song { } pub fn album_art(&self, i: usize) -> Result, Box> { - match self.album_art[i] { + match self.album_art.get(i).unwrap() { AlbumArt::Embedded(j) => { let file = lofty::read_from_path(self.primary_uri()?.0.path())?; - if file.contains_tag_type(TagType::Id3v2) { - Ok(file.tag(TagType::Id3v2).unwrap().pictures()[j].data().to_vec()) - } else { - unimplemented!() - } + Ok(file.tag(file.primary_tag_type()).unwrap().pictures()[*j].data().to_vec()) }, AlbumArt::External(ref path) => { let mut buf = vec![]; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 15a27e5..94f313a 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -182,7 +182,7 @@ async fn create_library( #[tauri::command] async fn lib_already_created(app: tauri::AppHandle, lib_rx: State<'_, LibRx>, handle_tx: State<'_, HandleTx>) -> Result<(), String> { println!("lib already created"); - lib_rx.inner().0.send(None); + lib_rx.inner().0.send(None).unwrap(); app.manage(handle_tx.inner().0.recv().unwrap()); Ok(()) } diff --git a/src-tauri/src/wrappers.rs b/src-tauri/src/wrappers.rs index d65b2f7..52751ed 100644 --- a/src-tauri/src/wrappers.rs +++ b/src-tauri/src/wrappers.rs @@ -51,6 +51,7 @@ pub async fn next(app: AppHandle, ctrl_handle: State<'_, ControllerHandle>, }; let _song = _Song::from(&song); art_rx.0.send(song.album_art(0).unwrap()).unwrap(); + println!("next"); app.emit("now_playing_change", _song).unwrap(); Ok(()) } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 5b3ff94..caddea4 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -20,9 +20,13 @@ "security": { "assetProtocol": { "enable": true, - "scope": { "allow": ["asset://localhost*"] } + "scope": { "allow": ["asset://localhost*", "http://localhost*"] } }, - "csp": "default-src 'self'; img-src 'self'; asset: asset://localhost/*" + "csp": { + "default-src": "'self' customprotocol: asset:", + "connect-src": "ipc: http://ipc.localhost", + "img-src": "'self' asset: http://asset.localhost blob: data:" + } } }, "bundle": { diff --git a/src/App.tsx b/src/App.tsx index 9854b4f..277af9c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,22 +4,50 @@ import "./App.css"; import { Config } from "./types"; import { EventEmitter } from "@tauri-apps/plugin-shell"; import { listen } from "@tauri-apps/api/event"; +// import { fetch } from "@tauri-apps/plugin-http"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; + +const appWindow = getCurrentWebviewWindow(); function App() { const library = useState(); - const [artwork, setArtwork] = useState(<>); - const [nowPlaying, setNowPlaying] = useState(); + const [imagePath, setImagePath] = useState(null); + const [uuid, setUuid] = useState(0); - listen("now_playing_change", (event) => { - console.log(event.payload); + // const [artwork, setArtwork] = useState(); + + const [nowPlaying, setNowPlaying] = useState( + } + /> + ); + + useEffect(() => { + const unlisten = appWindow.listen("now_playing_change", ({ event, payload }) => { + console.log(event); + setUuid(payload.uuid) + + setNowPlaying( + + } + /> + ) + + }) + + return () => { unlisten.then((f) => f()) } + }, []); - setNowPlaying( ) - setArtwork( ) - }) useEffect(() => { getConfig(); @@ -42,6 +70,13 @@ function App() { ); } +interface L { + uuid: number, +} +function LI({uuid}: L) { + return ( Some Image ) +} + export default App; function getConfig(): any { @@ -50,7 +85,7 @@ function getConfig(): any { if (config.libraries.libraries.length == 0) { newWindow() } else { - console.log("else"); + // console.log("else"); invoke('lib_already_created').then(() => {}) } }) @@ -150,8 +185,12 @@ function Song(props: SongProps) { ) } + function PlayBar() { let [playing, setPlaying] = useState('play'); + + + return (
@@ -187,7 +226,7 @@ interface NowPlayingProps { } function NowPlaying({ title, artist, album, artwork }: NowPlayingProps) { - console.log(convertFileSrc("abc")); + // console.log(convertFileSrc("abc")); return (
@@ -205,4 +244,15 @@ function Queue() { This is where the Queue be
) -} \ No newline at end of file +} + +interface LocalImageProps { + // setNowPlaying: React.Dispatch>, + // artwork: JSX.Element, + // setArtwork: React.Dispatch>, + payload: any +} + +function LocalImage({ payload }: LocalImageProps) { + ; +}