move sync_media() into MediaManager

This commit is contained in:
Damien Elmes 2020-02-06 10:30:40 +10:00
parent fb8f753d2d
commit 4289f7a02a
3 changed files with 16 additions and 25 deletions

View file

@ -6,7 +6,7 @@ use crate::backend_proto::backend_input::Value;
use crate::backend_proto::{Empty, RenderedTemplateReplacement, SyncMediaIn};
use crate::cloze::expand_clozes_to_reveal_latex;
use crate::err::{AnkiError, NetworkErrorKind, Result, SyncErrorKind};
use crate::media::sync::{MediaSyncer, Progress as MediaSyncProgress};
use crate::media::sync::Progress as MediaSyncProgress;
use crate::media::MediaManager;
use crate::sched::{local_minutes_west_for_stamp, sched_timing_today};
use crate::template::{
@ -325,9 +325,7 @@ impl Backend {
};
let mut rt = Runtime::new().unwrap();
let mut syncer = MediaSyncer::new(&mgr, callback, &input.endpoint);
rt.block_on(syncer.sync(&input.hkey))
rt.block_on(mgr.sync_media(callback, &input.endpoint, &input.hkey))
}
}

View file

@ -7,6 +7,7 @@ use crate::media::files::{
add_data_to_folder_uniquely, mtime_as_i64, sha1_of_data, sha1_of_file,
MEDIA_SYNC_FILESIZE_LIMIT, NONSYNCABLE_FILENAME,
};
use crate::media::sync::{MediaSyncer, Progress};
use rusqlite::Connection;
use std::borrow::Cow;
use std::collections::HashMap;
@ -94,25 +95,18 @@ impl MediaManager {
Ok(chosen_fname)
}
/// Sync media.
pub async fn sync_media<F>(&self, progress: F, endpoint: &str, hkey: &str) -> Result<()>
where
F: Fn(Progress) -> bool,
{
let mut syncer = MediaSyncer::new(self, progress, endpoint);
syncer.sync(hkey).await
}
fn dbctx(&self) -> MediaDatabaseContext {
MediaDatabaseContext::new(&self.db)
}
// db helpers
// pub(super) fn query<F, R>(&self, func: F) -> Result<R>
// where
// F: FnOnce(&mut MediaDatabaseContext) -> Result<R>,
// {
// MediaDatabaseContext::query(&self.db, func)
// }
// pub(super) fn transact<F, R>(&self, func: F) -> Result<R>
// where
// F: FnOnce(&mut MediaDatabaseContext) -> Result<R>,
// {
// MediaDatabaseContext::transact(&self.db, func)
// }
}
fn register_changes(ctx: &mut MediaDatabaseContext, folder: &Path) -> Result<()> {

View file

@ -685,7 +685,7 @@ fn media_check_required() -> AnkiError {
#[cfg(test)]
mod test {
use crate::err::Result;
use crate::media::sync::{determine_required_change, LocalState, MediaSyncer, RequiredChange};
use crate::media::sync::{determine_required_change, LocalState, RequiredChange};
use crate::media::MediaManager;
use tempfile::tempdir;
use tokio::runtime::Runtime;
@ -703,10 +703,9 @@ mod test {
true
};
let mut mgr = MediaManager::new(&media_dir, &media_db)?;
let mut syncer = MediaSyncer::new(&mut mgr, progress, "https://sync.ankiweb.net/msync/");
syncer.sync(hkey).await?;
let mgr = MediaManager::new(&media_dir, &media_db)?;
mgr.sync_media(progress, "https://sync.ankiweb.net/msync/", hkey)
.await?;
Ok(())
}