From eb5e0ecaf9f31f25ea604b5ef8beb7411df9082b Mon Sep 17 00:00:00 2001 From: Marc Scholten Date: Sat, 21 May 2022 22:04:04 +0200 Subject: [PATCH] Splitted Lockable.isLocked into an IO and a pure function --- IHP/AuthSupport/Lockable.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/IHP/AuthSupport/Lockable.hs b/IHP/AuthSupport/Lockable.hs index f27a98ba1..3e515661c 100644 --- a/IHP/AuthSupport/Lockable.hs +++ b/IHP/AuthSupport/Lockable.hs @@ -15,8 +15,11 @@ lockDuration = let timeInSecs = 60 * 60 in secondsToNominalDiffTime timeInSecs isLocked :: forall user. (HasField "lockedAt" user (Maybe UTCTime)) => user -> IO Bool isLocked user = do now <- getCurrentTime - let currentLockedAt :: Maybe UTCTime = getField @"lockedAt" user - pure $! case currentLockedAt of + pure (isLocked' now user) + +isLocked' :: forall user. (HasField "lockedAt" user (Maybe UTCTime)) => UTCTime -> user -> Bool +isLocked' now user = + case getField @"lockedAt" user of Just lockedAt -> let diff = diffUTCTime now lockedAt in diff < lockDuration