mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 22:12:21 -04:00
tell AnkiWeb to abort on interrupt
This commit is contained in:
parent
90e19daec2
commit
d8b907e4e8
2 changed files with 13 additions and 3 deletions
|
@ -33,8 +33,8 @@ use crate::{
|
|||
sched::timespan::{answer_button_time, learning_congrats, studied_today, time_span},
|
||||
search::SortMode,
|
||||
sync::{
|
||||
sync_login, FullSyncProgress, NormalSyncProgress, SyncActionRequired, SyncAuth, SyncOutput,
|
||||
SyncStage,
|
||||
sync_abort, sync_login, FullSyncProgress, NormalSyncProgress, SyncActionRequired, SyncAuth,
|
||||
SyncOutput, SyncStage,
|
||||
},
|
||||
template::RenderedNode,
|
||||
text::{extract_av_tags, strip_av_tags, AVTag},
|
||||
|
@ -1258,6 +1258,7 @@ impl Backend {
|
|||
self.sync_abort = Some(abort_handle);
|
||||
|
||||
let mut rt = Runtime::new().unwrap();
|
||||
let input_copy = input.clone();
|
||||
|
||||
let ret = self.with_col(|col| {
|
||||
let result = if check_only {
|
||||
|
@ -1280,6 +1281,11 @@ impl Backend {
|
|||
// if the user aborted, we'll need to clean up the transaction
|
||||
if !check_only {
|
||||
col.storage.rollback_trx()?;
|
||||
// and tell AnkiWeb to clean up
|
||||
let _handle = std::thread::spawn(move || {
|
||||
let _ =
|
||||
rt.block_on(sync_abort(input_copy.hkey, input_copy.host_number));
|
||||
});
|
||||
}
|
||||
|
||||
Err(AnkiError::Interrupted)
|
||||
|
|
|
@ -586,6 +586,11 @@ pub async fn sync_login(username: &str, password: &str) -> Result<SyncAuth> {
|
|||
})
|
||||
}
|
||||
|
||||
pub async fn sync_abort(hkey: String, host_number: u32) -> Result<()> {
|
||||
let remote = HTTPSyncClient::new(Some(hkey), host_number);
|
||||
remote.abort().await
|
||||
}
|
||||
|
||||
impl Collection {
|
||||
pub async fn get_sync_status(&mut self, auth: SyncAuth) -> Result<SyncOutput> {
|
||||
NormalSyncer::new(self, auth, |_p, _t| ())
|
||||
|
@ -598,7 +603,6 @@ impl Collection {
|
|||
where
|
||||
F: FnMut(NormalSyncProgress, bool),
|
||||
{
|
||||
// fixme: server abort on failure
|
||||
NormalSyncer::new(self, auth, progress_fn).sync().await
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue