fix(schedule): reintroduce form failure handling

This commit is contained in:
Sarah Vaupel 2020-10-24 19:29:32 +02:00
parent fe4507cdad
commit ae0e3f797f

View File

@ -42,13 +42,11 @@ postScheduleR = do
, fsAttrs = if sView == scheduleView currentScheduleOptions then [("disabled","")] else mempty
}) Nothing
viewRes <- if
-- TODO: ignoring FormFailures for now
-- | Just errs <- fromNullable (filter (is _FormFailure) viewRess) -> do
-- mapM_ formFailure2Alerts errs
-- $logInfoS "SCHEDULE-VIEW" $ "encountered error(s): " <> tshow errs
-- (return . FormFailure . mconcat . catMaybes . (fmap $ preview _FormFailure) . toNullable) errs
| Just errs <- fromNullable (filter (is _FormFailure) viewRess) -> do
mapM_ formFailure2Alerts errs
(return . FormFailure . mconcat . catMaybes . (fmap $ preview _FormFailure) . toNullable) errs
| otherwise -> case catMaybes $ catMaybes (formResultToMaybe <$> viewRess) of
[ScheduleOptions{scheduleView=sView}] -> return $ FormSuccess $ ScheduleOptions
[ScheduleOptions{scheduleView=sView}] -> (return . FormSuccess) $ ScheduleOptions
{ scheduleView = sView
, scheduleOffset = ScheduleOffsetNone
, scheduleOptionsAction = ScheduleSetView
@ -78,17 +76,14 @@ postScheduleR = do
, fsAttrs = if offsetInDays (scheduleOffset btn) == offsetInDays (scheduleOffset currentScheduleOptions) then [("disabled","")] else mempty
}) Nothing
offsetRes <- if
-- TODO: ignoring FormFailures for now
-- | Just errs <- fromNullable (filter (is _FormFailure) offsetRess) -> do
-- mapM_ formFailure2Alerts errs
-- $logInfoS "SCHEDULE-OFFSET" $ "encountered error(s): " <> tshow errs
-- (return . FormFailure . mconcat . catMaybes . (fmap $ preview _FormFailure) . toNullable) errs
| Just errs <- fromNullable (filter (is _FormFailure) offsetRess) -> do
mapM_ formFailure2Alerts errs
(return . FormFailure . mconcat . catMaybes . (fmap $ preview _FormFailure) . toNullable) errs
| otherwise -> case catMaybes $ catMaybes (formResultToMaybe <$> offsetRess) of
[opt] -> return $ FormSuccess opt
_ -> return $ FormSuccess currentScheduleOptions
let
-- TODO: work in progress
scheduleResult = case (viewRes, offsetRes) of
(_, opts@(FormSuccess _)) -> opts
(opts@(FormSuccess _), _) -> opts
@ -99,10 +94,9 @@ postScheduleR = do
((optionsRes, optionsWidget), optionsEnctype) <- runFormGet scheduleOptionsForm
let
schedule = case optionsRes of
FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> weekSchedule uid scheduleOffset
_ -> mempty -- TODO: don't swallow errors!
schedule <- case optionsRes of
FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> return $ weekSchedule uid scheduleOffset
other -> formFailure2Alerts other >> return mempty
siteLayoutMsg MsgMenuSchedule $ do
setTitleI MsgMenuSchedule