Skip to content

Commit f6fa325

Browse files
committed
Only open the cover image if needed
1 parent 11e9a6a commit f6fa325

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

lib/Check/Album.hs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,18 @@ check (HaveCover cover@Cover {..}) album
7373
maybeToExceptT (MissingCover dir) $
7474
MaybeT $
7575
Monad.findM Path.doesFileExist (toList absFiles)
76-
picture <-
77-
Except.withExceptT (UnableToReadCover coverFile . toText) $
78-
ExceptT $
79-
readImage coverFile
76+
-- Reading the image is very slow, so only do it if we have size
77+
-- constraints
78+
when (Cover.haveRange cover) $ do
79+
picture <-
80+
Except.withExceptT (UnableToReadCover coverFile . toText) $
81+
ExceptT $
82+
readImage coverFile
8083

81-
let size = Cover.pictureSize picture
82-
unless (Cover.withinRange cover size) $
83-
Except.throwE $
84-
BadCoverSize coverFile size
84+
let size = Cover.pictureSize picture
85+
unless (Cover.withinRange cover size) $
86+
Except.throwE $
87+
BadCoverSize coverFile size
8588
| otherwise = pure $ Left NotInSameDir
8689
where
8790
readImage = liftIO . Picture.readImage . Path.toFilePath

lib/Model/Cover.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module Model.Cover
33
Size (..),
44
sizeToText,
55
pictureSize,
6+
haveRange,
67
withinRange,
78
)
89
where
@@ -38,6 +39,9 @@ pictureSize picture =
3839
siHeight = Picture.dynamicMap Picture.imageHeight picture
3940
}
4041

42+
haveRange :: Cover -> Bool
43+
haveRange Cover {..} = isJust coMinSize || isJust coMaxSize
44+
4145
withinRange :: Cover -> Size -> Bool
4246
withinRange Cover {..} size =
4347
maybe True (size `greaterThan`) coMinSize

0 commit comments

Comments
 (0)