diff --git a/src/Foundation.hs b/src/Foundation.hs index 759de00fb..483d452a0 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -417,7 +417,7 @@ instance Yesod UniWorX where [ Desc CourseFavouriteTime , OffsetBy $ userMaxFavourites user ] - lift $ mapM delete oldFavs + lift $ mapM_ delete oldFavs _other -> return () return res diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index ace4a2427..76fb32dfc 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -47,9 +47,18 @@ getProfileR = do ((res,formWidget), formEnctype) <- runFormPost $ makeSettingForm settingsTemplate case res of (FormSuccess SettingsForm{..}) -> do - runDB $ update uid [ UserMaxFavourites =. stgMaxFavourties - , UserTheme =. stgTheme - ] + runDB $ do + update uid [ UserMaxFavourites =. stgMaxFavourties + , UserTheme =. stgTheme + ] + when (stgMaxFavourties < userMaxFavourites) $ do + -- prune Favourites to user-defined size + oldFavs <- selectKeysList [ CourseFavouriteUser ==. uid] + [ Desc CourseFavouriteTime + , OffsetBy $ stgMaxFavourties + ] + mapM_ delete oldFavs + addMessageI "info" $ MsgSettingsUpdate (FormFailure msgs) -> forM_ msgs $ (addMessage "warning") . toHtml _ -> return ()