diff --git a/lib/domain/libimagdiary/src/diary.rs b/lib/domain/libimagdiary/src/diary.rs index fb1953d1..15ee28ba 100644 --- a/lib/domain/libimagdiary/src/diary.rs +++ b/lib/domain/libimagdiary/src/diary.rs @@ -134,9 +134,9 @@ impl Diary for Store { /// Get all diary names fn diary_names(&self) -> Result { - self.retrieve_for_module("diary") - .chain_err(|| DEK::StoreReadError) - .map(DiaryNameIterator::new) + self.entries() + .map(|it| DiaryNameIterator::new(it.without_store())) + .map_err(::error::DiaryError::from) } } diff --git a/lib/domain/libimagdiary/src/error.rs b/lib/domain/libimagdiary/src/error.rs index 32eb9555..4bb9a3f6 100644 --- a/lib/domain/libimagdiary/src/error.rs +++ b/lib/domain/libimagdiary/src/error.rs @@ -23,6 +23,7 @@ error_chain! { } links { + StoreError(::libimagstore::error::StoreError, ::libimagstore::error::StoreErrorKind); EntryUtilError(::libimagentryutil::error::EntryUtilError, ::libimagentryutil::error::EntryUtilErrorKind); } diff --git a/lib/domain/libimagdiary/src/iter.rs b/lib/domain/libimagdiary/src/iter.rs index b98746a0..09f9114e 100644 --- a/lib/domain/libimagdiary/src/iter.rs +++ b/lib/domain/libimagdiary/src/iter.rs @@ -140,18 +140,21 @@ impl Iterator for DiaryNameIterator { type Item = Result; fn next(&mut self) -> Option { - self.0 - .next() - .map(|s| { - s.to_str() + while let Some(next) = self.0.next() { + if next.is_in_collection(&["diary"]) { + return Some(next + .to_str() .chain_err(|| DEK::DiaryNameFindingError) .and_then(|s| { s.split("diary/") .nth(1) .and_then(|n| n.split("/").nth(0).map(String::from)) .ok_or(DE::from_kind(DEK::DiaryNameFindingError)) - }) - }) + })) + } + } + + None } }