Confirm dangerous downloads

This commit is contained in:
2026-05-07 22:27:20 -04:00
parent 912b7b4b94
commit d33c1e6a30
8 changed files with 393 additions and 114 deletions
+18
View File
@@ -55,6 +55,7 @@ pub struct DownloadEntry {
received_bytes: u64,
total_bytes: Option<u64>,
checksum: Option<DownloadChecksum>,
security_prompt_confirmed: bool,
started_at: SystemTime,
}
@@ -212,6 +213,7 @@ impl DownloadEntry {
received_bytes: 0,
total_bytes,
checksum: None,
security_prompt_confirmed: false,
started_at,
})
}
@@ -268,6 +270,12 @@ impl DownloadEntry {
Ok(())
}
pub fn confirm_security_prompt(&mut self) -> Result<(), DomainError> {
self.require_state("confirm security prompt", &[DownloadState::Completed])?;
self.security_prompt_confirmed = true;
Ok(())
}
#[must_use]
pub fn id(&self) -> &DownloadId {
&self.id
@@ -303,6 +311,16 @@ impl DownloadEntry {
&self.security
}
#[must_use]
pub fn requires_security_confirmation(&self) -> bool {
self.security.requires_prompt() && !self.security_prompt_confirmed
}
#[must_use]
pub fn security_prompt_confirmed(&self) -> bool {
self.security_prompt_confirmed
}
#[must_use]
pub fn state(&self) -> &DownloadState {
&self.state