diff --git a/rslib/src/backend.rs b/rslib/src/backend.rs index 14b1d4a34..d18452bb6 100644 --- a/rslib/src/backend.rs +++ b/rslib/src/backend.rs @@ -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)) } } diff --git a/rslib/src/media/mod.rs b/rslib/src/media/mod.rs index 1648cb47b..871e0d153 100644 --- a/rslib/src/media/mod.rs +++ b/rslib/src/media/mod.rs @@ -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(&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(&self, func: F) -> Result - // where - // F: FnOnce(&mut MediaDatabaseContext) -> Result, - // { - // MediaDatabaseContext::query(&self.db, func) - // } - - // pub(super) fn transact(&self, func: F) -> Result - // where - // F: FnOnce(&mut MediaDatabaseContext) -> Result, - // { - // MediaDatabaseContext::transact(&self.db, func) - // } } fn register_changes(ctx: &mut MediaDatabaseContext, folder: &Path) -> Result<()> { diff --git a/rslib/src/media/sync.rs b/rslib/src/media/sync.rs index efabcda18..5f5f44a3a 100644 --- a/rslib/src/media/sync.rs +++ b/rslib/src/media/sync.rs @@ -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(()) }