diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index c7b7aee21..7e11e014b 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -282,26 +282,23 @@ multiFileField :: Handler (Set FileId) -> Field Handler (Source Handler (Either multiFileField permittedFiles' = Field{..} where fieldEnctype = Multipart - fieldParse vals files - | null files - , null vals = return $ Right Nothing - | otherwise = return . Right . Just $ do - pVals <- lift permittedFiles' - let - decrypt' :: CryptoUUIDFile -> Handler (Maybe FileId) - decrypt' = fmap (either (\(_ :: CryptoIDError) -> Nothing) Just) . try . decrypt - yieldMany vals - .| C.filter (/= unpackZips) - .| C.map fromPathPiece .| C.catMaybes - .| C.mapMaybeM decrypt' - .| C.filter (`elem` pVals) - .| C.map Left - let - handleFile :: FileInfo -> Source Handler File - handleFile - | doUnpack = sourceFiles - | otherwise = yieldM . acceptFile - mapM_ handleFile files .| C.map Right + fieldParse vals files = return . Right . Just $ do + pVals <- lift permittedFiles' + let + decrypt' :: CryptoUUIDFile -> Handler (Maybe FileId) + decrypt' = fmap (either (\(_ :: CryptoIDError) -> Nothing) Just) . try . decrypt + yieldMany vals + .| C.filter (/= unpackZips) + .| C.map fromPathPiece .| C.catMaybes + .| C.mapMaybeM decrypt' + .| C.filter (`elem` pVals) + .| C.map Left + let + handleFile :: FileInfo -> Source Handler File + handleFile + | doUnpack = sourceFiles + | otherwise = yieldM . acceptFile + mapM_ handleFile files .| C.map Right where doUnpack = unpackZips `elem` vals fieldView fieldId fieldName attrs val req = do