From d718f2c50c02cf225fc41b6576849dabcdc2c48d Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 26 Aug 2022 11:06:15 +0100 Subject: [PATCH] fix: web: add form: re-enable the file field (#1229) It was ignored since cc1241fa2 in 2018. Also simplify some types. --- hledger-web/Hledger/Web/Handler/AddR.hs | 11 +- hledger-web/Hledger/Web/Widget/AddForm.hs | 157 +++++++++++----------- hledger-web/templates/add-form.hamlet | 9 +- 3 files changed, 84 insertions(+), 93 deletions(-) diff --git a/hledger-web/Hledger/Web/Handler/AddR.hs b/hledger-web/Hledger/Web/Handler/AddR.hs index 20308be72..9ec4a8d81 100644 --- a/hledger-web/Hledger/Web/Handler/AddR.hs +++ b/hledger-web/Hledger/Web/Handler/AddR.hs @@ -35,12 +35,11 @@ postAddR = do ((res, view), enctype) <- runFormPost $ addForm j today case res of - FormSuccess res' -> do - let t = txnTieKnot res' - -- XXX(?) move into balanceTransaction - liftIO $ ensureJournalFileExists (journalFilePath j) - -- XXX why not journalAddTransaction ? - liftIO $ appendToJournalFileOrStdout (journalFilePath j) (showTransaction t) + FormSuccess (t,f) -> do + let t' = txnTieKnot t + liftIO $ do + ensureJournalFileExists f + appendToJournalFileOrStdout f (showTransaction t') setMessage "Transaction added." redirect JournalR FormMissing -> showForm view enctype diff --git a/hledger-web/Hledger/Web/Widget/AddForm.hs b/hledger-web/Hledger/Web/Widget/AddForm.hs index cc17616fd..20ddb9a0c 100644 --- a/hledger-web/Hledger/Web/Widget/AddForm.hs +++ b/hledger-web/Hledger/Web/Widget/AddForm.hs @@ -25,19 +25,13 @@ import Text.Megaparsec (bundleErrors, eof, parseErrorTextPretty, runParser) import Yesod import Hledger -import Hledger.Web.Foundation -- (App, Form, Handler, Widget) +import Hledger.Web.Foundation (App, Handler, Widget) import Hledger.Web.Settings (widgetFile) +import Data.Function ((&)) --- addModal :: --- ( MonadWidget m --- , r ~ Route (HandlerSite m) --- , m ~ WidgetFor (HandlerSite m) --- , RenderMessage (HandlerSite m) FormMessage --- ) --- => r -> Journal -> Day -> m () addModal :: Route App -> Journal -> Day -> Widget addModal addR j today = do - (addView, addEnctype) <- generateFormPost (addForm j today) + (addView, addEnctype) <- handlerToWidget $ generateFormPost (addForm j today) [whamlet|