@@ -21,7 +21,7 @@ import Prelude
21import Codec.Archive.Zip (Archive (..), Entry, findEntryByPath, fromEntry,
21import Codec.Archive.Zip (Archive (..), Entry, findEntryByPath, fromEntry,
22 toArchiveOrFail)
22 toArchiveOrFail)
23import Control.DeepSeq (NFData, deepseq)
23import Control.DeepSeq (NFData, deepseq)
24−import Control.Monad (guard, liftM, liftM2)
24+import Control.Monad (guard, liftM, liftM2, mplus)
25import Control.Monad.Except (throwError)
25import Control.Monad.Except (throwError)
26import qualified Data.ByteString.Lazy as BL (ByteString)
26import qualified Data.ByteString.Lazy as BL (ByteString)
27import Data.List (isInfixOf, isPrefixOf)
27import Data.List (isInfixOf, isPrefixOf)
@@ -134,7 +134,7 @@ parseManifest content coverId = do
134 let items = findChildren (dfName "item") manifest
134 let items = findChildren (dfName "item") manifest
135 r <- mapM parseItem items
135 r <- mapM parseItem items
136 let cover = findAttr (emptyName "href") =<< filterChild findCover manifest
136 let cover = findAttr (emptyName "href") =<< filterChild findCover manifest
137− return (cover, M.fromList r)
137+ return (cover `mplus` coverId, M.fromList r)
139 findCover e = maybe False (isInfixOf "cover-image")
139 findCover e = maybe False (isInfixOf "cover-image")
140 (findAttr (emptyName "properties") e)
140 (findAttr (emptyName "properties") e)