support cancel requests
This commit is contained in:
parent
f9b77a02fe
commit
98e2897438
4 changed files with 18 additions and 10 deletions
|
@ -123,11 +123,9 @@ impl App {
|
||||||
TransferEvent::UploadRequest { id, request } => {
|
TransferEvent::UploadRequest { id, request } => {
|
||||||
self.uploads.insert(id, request);
|
self.uploads.insert(id, request);
|
||||||
}
|
}
|
||||||
TransferEvent::Sent => {}
|
TransferEvent::Cancelled(id) | TransferEvent::Received(id) => {
|
||||||
TransferEvent::Received(id) => {
|
|
||||||
self.uploads.remove(&id);
|
self.uploads.remove(&id);
|
||||||
}
|
}
|
||||||
_ => {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,8 @@ impl Widget for &mut App {
|
||||||
let [header_left, header_right] = header_layout.areas(top);
|
let [header_left, header_right] = header_layout.areas(top);
|
||||||
let header_margin = Margin::new(1, 2);
|
let header_margin = Margin::new(1, 2);
|
||||||
|
|
||||||
|
let subscreen_margin = Margin::new(2, 4);
|
||||||
|
|
||||||
let mode = self.screen.last().unwrap();
|
let mode = self.screen.last().unwrap();
|
||||||
let ups: Vec<_> = self.uploads.values().collect();
|
let ups: Vec<_> = self.uploads.values().collect();
|
||||||
match mode {
|
match mode {
|
||||||
|
@ -84,7 +86,7 @@ impl Widget for &mut App {
|
||||||
let peers = PeersWidget { peers: &self.peers };
|
let peers = PeersWidget { peers: &self.peers };
|
||||||
peers.render(footer_right.inner(footer_margin), buf);
|
peers.render(footer_right.inner(footer_margin), buf);
|
||||||
NetworkInfoWidget.render(footer_left.inner(footer_margin), buf);
|
NetworkInfoWidget.render(footer_left.inner(footer_margin), buf);
|
||||||
uploads(
|
upload_requests(
|
||||||
&ups,
|
&ups,
|
||||||
&mut self.upload_state,
|
&mut self.upload_state,
|
||||||
header_left.inner(header_margin),
|
header_left.inner(header_margin),
|
||||||
|
@ -93,14 +95,14 @@ impl Widget for &mut App {
|
||||||
}
|
}
|
||||||
CurrentScreen::Logging => {
|
CurrentScreen::Logging => {
|
||||||
main_page(*mode, &LOGGING_MENU, area, buf);
|
main_page(*mode, &LOGGING_MENU, area, buf);
|
||||||
logger(area.inner(Margin::new(2, 4)), buf);
|
logger(area.inner(subscreen_margin), buf);
|
||||||
}
|
}
|
||||||
CurrentScreen::Receiving => {
|
CurrentScreen::Receiving => {
|
||||||
main_page(*mode, &UPLOADS_MENU, area, buf);
|
main_page(*mode, &UPLOADS_MENU, area, buf);
|
||||||
uploads(
|
upload_requests(
|
||||||
&ups,
|
&ups,
|
||||||
&mut self.upload_state,
|
&mut self.upload_state,
|
||||||
area.inner(Margin::new(2, 4)),
|
area.inner(subscreen_margin),
|
||||||
buf,
|
buf,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -142,7 +144,7 @@ fn main_page(screen: CurrentScreen, menu: &Line, area: Rect, buf: &mut Buffer) {
|
||||||
.render(area, buf);
|
.render(area, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn uploads(
|
fn upload_requests(
|
||||||
requests: &[&JoecalUploadRequest],
|
requests: &[&JoecalUploadRequest],
|
||||||
state: &mut TableState,
|
state: &mut TableState,
|
||||||
area: Rect,
|
area: Rect,
|
||||||
|
|
|
@ -46,9 +46,8 @@ pub enum UploadDialog {
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub enum TransferEvent {
|
pub enum TransferEvent {
|
||||||
Sent,
|
|
||||||
Received(Julid),
|
Received(Julid),
|
||||||
Failed,
|
Cancelled(Julid),
|
||||||
UploadRequest {
|
UploadRequest {
|
||||||
id: Julid,
|
id: Julid,
|
||||||
request: JoecalUploadRequest,
|
request: JoecalUploadRequest,
|
||||||
|
|
|
@ -348,7 +348,16 @@ pub async fn register_cancel(
|
||||||
Some(session) => session,
|
Some(session) => session,
|
||||||
None => return StatusCode::BAD_REQUEST.into_response(),
|
None => return StatusCode::BAD_REQUEST.into_response(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
debug!("got cancel request for {}", params.session_id);
|
||||||
|
|
||||||
session.status = SessionStatus::Cancelled;
|
session.status = SessionStatus::Cancelled;
|
||||||
|
if let Ok(id) = Julid::from_str(¶ms.session_id)
|
||||||
|
&& let Err(e) = state.transfer_event_tx.send(TransferEvent::Cancelled(id))
|
||||||
|
{
|
||||||
|
error!("got error sending upload canceled event: {e:?}");
|
||||||
|
};
|
||||||
|
|
||||||
StatusCode::OK.into_response()
|
StatusCode::OK.into_response()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue