mirror of
https://github.com/ankitects/anki.git
synced 2025-12-11 13:56:55 -05:00
defer media DB load until media action performed
This means a corrupt media DB will not prevent collection load.
This commit is contained in:
parent
ec9abf1ce5
commit
8d97f862a4
1 changed files with 6 additions and 13 deletions
|
|
@ -24,7 +24,8 @@ pub type ProtoProgressCallback = Box<dyn Fn(Vec<u8>) -> bool + Send>;
|
||||||
pub struct Backend {
|
pub struct Backend {
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
col_path: PathBuf,
|
col_path: PathBuf,
|
||||||
media_manager: Option<MediaManager>,
|
media_folder: String,
|
||||||
|
media_db: String,
|
||||||
progress_callback: Option<ProtoProgressCallback>,
|
progress_callback: Option<ProtoProgressCallback>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,14 +79,10 @@ pub fn init_backend(init_msg: &[u8]) -> std::result::Result<Backend, String> {
|
||||||
|
|
||||||
impl Backend {
|
impl Backend {
|
||||||
pub fn new(col_path: &str, media_folder: &str, media_db: &str) -> Result<Backend> {
|
pub fn new(col_path: &str, media_folder: &str, media_db: &str) -> Result<Backend> {
|
||||||
let media_manager = match (media_folder.is_empty(), media_db.is_empty()) {
|
|
||||||
(false, false) => Some(MediaManager::new(media_folder, media_db)?),
|
|
||||||
_ => None,
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(Backend {
|
Ok(Backend {
|
||||||
col_path: col_path.into(),
|
col_path: col_path.into(),
|
||||||
media_manager,
|
media_folder: media_folder.into(),
|
||||||
|
media_db: media_db.into(),
|
||||||
progress_callback: None,
|
progress_callback: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -283,12 +280,8 @@ impl Backend {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_file_to_media_folder(&mut self, input: pt::AddFileToMediaFolderIn) -> Result<String> {
|
fn add_file_to_media_folder(&mut self, input: pt::AddFileToMediaFolderIn) -> Result<String> {
|
||||||
Ok(self
|
let mut mgr = MediaManager::new(&self.media_folder, &self.media_db)?;
|
||||||
.media_manager
|
Ok(mgr.add_file(&input.desired_name, &input.data)?.into())
|
||||||
.as_mut()
|
|
||||||
.unwrap()
|
|
||||||
.add_file(&input.desired_name, &input.data)?
|
|
||||||
.into())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sync_media(&self, input: SyncMediaIn) -> Result<()> {
|
fn sync_media(&self, input: SyncMediaIn) -> Result<()> {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue