diff --git a/src/backend/src/sockets.rs b/src/backend/src/sockets.rs index d5dba5ec..e38a6657 100644 --- a/src/backend/src/sockets.rs +++ b/src/backend/src/sockets.rs @@ -198,7 +198,6 @@ async fn browser_refresh( .send(Message::text(SerJson::serialize_json( &types::BrowserList { contents: systemdata::browser_dir(std::path::Path::new(dir_path)), - currentpath: dir_path.to_string(), }, ))) .await; @@ -216,7 +215,6 @@ async fn browser_handler( contents: systemdata::browser_dir(std::path::Path::new( &std::env::var_os("HOME").unwrap(), )), - currentpath: std::env::var("HOME").unwrap(), }, ))) .await; @@ -233,7 +231,6 @@ async fn browser_handler( contents: systemdata::browser_dir(std::path::Path::new( &data.args[0], )), - currentpath: data.args[0].clone(), }, ))) .await; @@ -242,13 +239,19 @@ async fn browser_handler( let _send = (*socket_send) .send(Message::text(SerJson::serialize_json( &types::BrowserFileData { - data: std::fs::read_to_string(std::path::Path::new(&data.args[0])) - .unwrap(), - currentpath: data.args[0].clone(), + textdata: std::fs::read_to_string(std::path::Path::new( + &data.args[0], + )) + .unwrap(), }, ))) .await; } + "img" => { + let _send = (*socket_send) + .send(Message::binary(std::fs::read(&data.args[0]).unwrap())) + .await; + } "save" => { std::fs::write(std::path::Path::new(&data.args[0]), &data.args[1]).unwrap(); } diff --git a/src/backend/src/types.rs b/src/backend/src/types.rs index d86cd902..e4120b93 100644 --- a/src/backend/src/types.rs +++ b/src/backend/src/types.rs @@ -105,12 +105,10 @@ pub struct BrowserDirData { #[derive(SerJson)] pub struct BrowserFileData { - pub data: String, - pub currentpath: String, + pub textdata: String, } #[derive(SerJson)] pub struct BrowserList { pub contents: Vec, - pub currentpath: String, } diff --git a/src/frontend/.yarn/install-state.gz b/src/frontend/.yarn/install-state.gz index a77e18c3..0c8f3cde 100644 Binary files a/src/frontend/.yarn/install-state.gz and b/src/frontend/.yarn/install-state.gz differ diff --git a/src/frontend/src/App.svelte b/src/frontend/src/App.svelte index bd4d0a3c..3aa981b6 100755 --- a/src/frontend/src/App.svelte +++ b/src/frontend/src/App.svelte @@ -34,7 +34,7 @@ services?: services[]; // File browser page contents?: browser[]; - currentpath?: string; + textdata?: string; // Global update?: string; } @@ -76,12 +76,19 @@ let socket; let socketData: socketData = {}; + let binData = ""; let shown = false; let menu = window.innerWidth > 768; let update = ""; const socketMessageListener = (e) => { - socketData = JSON.parse(e.data); + if (typeof e.data === "string") { + socketData = JSON.parse(e.data); + binData = ""; + } else { + socketData = {}; + binData = URL.createObjectURL(e.data); + } if (socketData.update != undefined) { update = socketData.update; } @@ -189,7 +196,7 @@ >
- {#if socketData.contents != undefined || socketData.data != undefined} + {#if socketData.contents != undefined || socketData.textdata != undefined || binData != ""}
@@ -167,6 +169,7 @@ class="btn px-2 focus:outline-none" on:click={() => { sendCmd("/", "cd"); + currentPath = "/"; }}>/ {#each pathArray as path} @@ -187,6 +190,7 @@ } } sendCmd(fullPath, "cd"); + currentPath = fullPath; }}>{path} {/if} @@ -213,11 +217,15 @@ case "text": sendCmd(contents.path, "open"); break; + case "image": + sendCmd(contents.path, "img"); + break; default: alert( "ERROR: can't view that type of file" ); } + currentPath = contents.path; }} on:click={() => (selPath = contents)} > @@ -239,7 +247,7 @@ {/each} - {:else if socketData.data != undefined} + {:else if socketData.textdata != undefined}