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 } => {
|
||||
self.uploads.insert(id, request);
|
||||
}
|
||||
TransferEvent::Sent => {}
|
||||
TransferEvent::Received(id) => {
|
||||
TransferEvent::Cancelled(id) | TransferEvent::Received(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_margin = Margin::new(1, 2);
|
||||
|
||||
let subscreen_margin = Margin::new(2, 4);
|
||||
|
||||
let mode = self.screen.last().unwrap();
|
||||
let ups: Vec<_> = self.uploads.values().collect();
|
||||
match mode {
|
||||
|
@ -84,7 +86,7 @@ impl Widget for &mut App {
|
|||
let peers = PeersWidget { peers: &self.peers };
|
||||
peers.render(footer_right.inner(footer_margin), buf);
|
||||
NetworkInfoWidget.render(footer_left.inner(footer_margin), buf);
|
||||
uploads(
|
||||
upload_requests(
|
||||
&ups,
|
||||
&mut self.upload_state,
|
||||
header_left.inner(header_margin),
|
||||
|
@ -93,14 +95,14 @@ impl Widget for &mut App {
|
|||
}
|
||||
CurrentScreen::Logging => {
|
||||
main_page(*mode, &LOGGING_MENU, area, buf);
|
||||
logger(area.inner(Margin::new(2, 4)), buf);
|
||||
logger(area.inner(subscreen_margin), buf);
|
||||
}
|
||||
CurrentScreen::Receiving => {
|
||||
main_page(*mode, &UPLOADS_MENU, area, buf);
|
||||
uploads(
|
||||
upload_requests(
|
||||
&ups,
|
||||
&mut self.upload_state,
|
||||
area.inner(Margin::new(2, 4)),
|
||||
area.inner(subscreen_margin),
|
||||
buf,
|
||||
);
|
||||
}
|
||||
|
@ -142,7 +144,7 @@ fn main_page(screen: CurrentScreen, menu: &Line, area: Rect, buf: &mut Buffer) {
|
|||
.render(area, buf);
|
||||
}
|
||||
|
||||
fn uploads(
|
||||
fn upload_requests(
|
||||
requests: &[&JoecalUploadRequest],
|
||||
state: &mut TableState,
|
||||
area: Rect,
|
||||
|
|
|
@ -46,9 +46,8 @@ pub enum UploadDialog {
|
|||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TransferEvent {
|
||||
Sent,
|
||||
Received(Julid),
|
||||
Failed,
|
||||
Cancelled(Julid),
|
||||
UploadRequest {
|
||||
id: Julid,
|
||||
request: JoecalUploadRequest,
|
||||
|
|
|
@ -348,7 +348,16 @@ pub async fn register_cancel(
|
|||
Some(session) => session,
|
||||
None => return StatusCode::BAD_REQUEST.into_response(),
|
||||
};
|
||||
|
||||
debug!("got cancel request for {}", params.session_id);
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue