fixed deadlock, needs https
This commit is contained in:
parent
58fca36bd8
commit
9ea3a3a1d6
3 changed files with 23 additions and 15 deletions
|
@ -221,21 +221,26 @@ impl App {
|
|||
|
||||
// send content to selected peer, or change directories in the file explorer
|
||||
async fn send_content(&mut self) {
|
||||
if let Some(_bytes) = self.content.iter().next().cloned() {
|
||||
debug!("sending content");
|
||||
|
||||
if let Some(_bytes) = self.content.to_owned() {
|
||||
// self.service.send_bytes(session_id, content_id, token, body)
|
||||
warn!("entering text is not yet supported");
|
||||
} else {
|
||||
let file = self.file_picker.current().path().clone();
|
||||
|
||||
if file.is_dir()
|
||||
&& let Err(e) = self.file_picker.set_cwd(&file)
|
||||
{
|
||||
error!("could not list directory {file:?}: {e}");
|
||||
} else if let Some((peer, _)) = self.service.peers.lock().await.first_key_value()
|
||||
}
|
||||
|
||||
if let Some((_, (_, peer))) = self.peers.first_key_value()
|
||||
&& file.is_file()
|
||||
&& let Err(e) = self.service.send_file(peer.to_owned(), file.clone()).await
|
||||
{
|
||||
error!("got error sending content: {e:?}");
|
||||
debug!("sending {file:?}");
|
||||
if let Err(e) = self.service.send_file(peer.to_owned(), file.clone()).await {
|
||||
error!("got error sending content: {e:?}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -145,9 +145,10 @@ impl Widget for &mut App {
|
|||
receive_requests(
|
||||
&rx_reqs,
|
||||
&mut self.receiving_state,
|
||||
area.inner(subscreen_margin),
|
||||
top.inner(subscreen_margin),
|
||||
buf,
|
||||
);
|
||||
logger(bottom.inner(subscreen_margin), buf);
|
||||
}
|
||||
CurrentScreen::Sending(s) => {
|
||||
match s {
|
||||
|
@ -164,7 +165,9 @@ impl Widget for &mut App {
|
|||
|
||||
self.file_picker
|
||||
.widget()
|
||||
.render(top.inner(subscreen_margin), buf);
|
||||
.render(header_left.inner(header_margin), buf);
|
||||
logger(header_right.inner(header_margin), buf);
|
||||
|
||||
peers.render(bottom.inner(subscreen_margin), buf);
|
||||
}
|
||||
_ => {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use std::{collections::BTreeMap, net::SocketAddr, path::PathBuf};
|
||||
use std::{collections::BTreeMap, net::SocketAddr, path::PathBuf, time::Duration};
|
||||
|
||||
use axum::{
|
||||
Json,
|
||||
|
@ -58,23 +58,23 @@ impl JoecalService {
|
|||
peer: String,
|
||||
files: BTreeMap<String, FileMetadata>,
|
||||
) -> Result<PrepareUploadResponse> {
|
||||
if !self.peers.lock().await.contains_key(&peer) {
|
||||
let Some((addr, device)) = self.peers.lock().await.get(&peer).cloned() else {
|
||||
return Err(LocalSendError::PeerNotFound);
|
||||
}
|
||||
};
|
||||
|
||||
let peer = self.peers.lock().await.get(&peer).unwrap().clone();
|
||||
debug!("sending to peer at {addr:?}");
|
||||
|
||||
let response = self
|
||||
.client
|
||||
.post(format!(
|
||||
"{}://{}/api/localsend/v2/prepare-upload",
|
||||
peer.1.protocol,
|
||||
peer.0.clone()
|
||||
device.protocol, addr
|
||||
))
|
||||
.json(&PrepareUploadRequest {
|
||||
info: self.device.clone(),
|
||||
files: files.clone(),
|
||||
})
|
||||
.timeout(Duration::from_secs(30))
|
||||
.send()
|
||||
.await?;
|
||||
|
||||
|
@ -86,10 +86,10 @@ impl JoecalService {
|
|||
session_id: response.session_id.clone(),
|
||||
files,
|
||||
file_tokens: response.files.clone(),
|
||||
receiver: peer.1,
|
||||
receiver: device,
|
||||
sender: self.device.clone(),
|
||||
status: SessionStatus::Active,
|
||||
addr: peer.0,
|
||||
addr,
|
||||
};
|
||||
|
||||
self.sessions
|
||||
|
|
Loading…
Reference in a new issue