chore: use requireAuthPair (+ fix type errors)
This commit is contained in:
parent
d6e39fb07c
commit
16abbc5da9
@ -36,33 +36,30 @@ postCNotesR _ _ _ = defaultLayout [whamlet|You have corrector access to this cou
|
||||
|
||||
postCFavouriteR :: TermId -> SchoolId -> CourseShorthand -> Handler ()
|
||||
postCFavouriteR tid ssh csh = void $ do
|
||||
muid <- maybeAuthPair
|
||||
authPair@(uid, _) <- requireAuthPair
|
||||
runDB $ void $ do
|
||||
mcid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
if | Just cid <- mcid, Just uid <- view _1 <$> muid -> do
|
||||
now <- liftIO getCurrentTime
|
||||
-- Nothing means blacklist
|
||||
-- should never return FavouriteCurrent
|
||||
newReason <- storedFavouriteReason tid ssh csh muid <&> (\case
|
||||
-- Maybe (Maybe reason, blacklist)
|
||||
Nothing -> Just FavouriteManual
|
||||
Just (_reason, True) -> Just FavouriteVisited
|
||||
Just (Just FavouriteManual, False) -> Nothing
|
||||
Just (_reason, False) -> Just FavouriteManual)
|
||||
-- change stored reason in DB
|
||||
case newReason of
|
||||
(Just reason) -> do
|
||||
void $ E.upsertBy
|
||||
(UniqueCourseFavourite uid cid)
|
||||
(CourseFavourite uid cid reason now)
|
||||
[P.Update CourseFavouriteReason reason P.Assign]
|
||||
E.deleteBy $ UniqueCourseNoFavourite uid cid
|
||||
Nothing -> do
|
||||
E.deleteBy $ UniqueCourseFavourite uid cid
|
||||
void $ E.upsertBy
|
||||
(UniqueCourseNoFavourite uid cid)
|
||||
(CourseNoFavourite uid cid)
|
||||
[] -- entry shouldn't exists, but keep it unchanged anyway
|
||||
| otherwise -> pure ()
|
||||
cid <- getKeyBy404 $ TermSchoolCourseShort tid ssh csh
|
||||
now <- liftIO getCurrentTime
|
||||
-- should never return FavouriteCurrent
|
||||
newReason <- storedFavouriteReason tid ssh csh (Just authPair) <&> (\case
|
||||
-- Maybe (Maybe reason, blacklist)
|
||||
Nothing -> Just FavouriteManual
|
||||
Just (_reason, True) -> Just FavouriteVisited
|
||||
Just (Just FavouriteManual, False) -> Nothing
|
||||
Just (_reason, False) -> Just FavouriteManual)
|
||||
-- change stored reason in DB
|
||||
case newReason of
|
||||
(Just reason) -> do
|
||||
void $ E.upsertBy
|
||||
(UniqueCourseFavourite uid cid)
|
||||
(CourseFavourite uid cid reason now)
|
||||
[P.Update CourseFavouriteReason reason P.Assign]
|
||||
E.deleteBy $ UniqueCourseNoFavourite uid cid
|
||||
Nothing -> do
|
||||
E.deleteBy $ UniqueCourseFavourite uid cid
|
||||
void $ E.upsertBy
|
||||
(UniqueCourseNoFavourite uid cid)
|
||||
(CourseNoFavourite uid cid)
|
||||
[] -- entry shouldn't exists, but keep it unchanged anyway
|
||||
-- show course page again
|
||||
redirect $ CourseR tid ssh csh CShowR
|
||||
|
||||
Loading…
Reference in New Issue
Block a user