add liftH shim between yesod versions, to avoid needing zillions of ifdefs

This commit is contained in:
Joey Hess 2013-06-03 13:51:54 -04:00
parent 79fd677805
commit 31753bad46
16 changed files with 66 additions and 51 deletions

View file

@ -36,7 +36,7 @@ newNotifier getbroadcaster = liftAssistant $ do
- every form. -} - every form. -}
webAppFormAuthToken :: Widget webAppFormAuthToken :: Widget
webAppFormAuthToken = do webAppFormAuthToken = do
webapp <- handlerToWidget getYesod webapp <- liftH getYesod
[whamlet|<input type="hidden" name="auth" value="#{secretToken webapp}">|] [whamlet|<input type="hidden" name="auth" value="#{secretToken webapp}">|]
{- A button with an icon, and maybe label or tooltip, that can be {- A button with an icon, and maybe label or tooltip, that can be

View file

@ -119,10 +119,10 @@ postAddS3R :: Handler RepHtml
#ifdef WITH_S3 #ifdef WITH_S3
postAddS3R = awsConfigurator $ do postAddS3R = awsConfigurator $ do
defcreds <- liftAnnex previouslyUsedAWSCreds defcreds <- liftAnnex previouslyUsedAWSCreds
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ s3InputAForm defcreds runFormPost $ renderBootstrap $ s3InputAForm defcreds
case result of case result of
FormSuccess input -> handlerToWidget $ do FormSuccess input -> liftH $ do
let name = T.unpack $ repoName input let name = T.unpack $ repoName input
makeAWSRemote S3.remote (extractCreds input) name setgroup $ M.fromList makeAWSRemote S3.remote (extractCreds input) name setgroup $ M.fromList
[ configureEncryption $ enableEncryption input [ configureEncryption $ enableEncryption input
@ -145,10 +145,10 @@ postAddGlacierR :: Handler RepHtml
#ifdef WITH_S3 #ifdef WITH_S3
postAddGlacierR = glacierConfigurator $ do postAddGlacierR = glacierConfigurator $ do
defcreds <- liftAnnex previouslyUsedAWSCreds defcreds <- liftAnnex previouslyUsedAWSCreds
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ glacierInputAForm defcreds runFormPost $ renderBootstrap $ glacierInputAForm defcreds
case result of case result of
FormSuccess input -> handlerToWidget $ do FormSuccess input -> liftH $ do
let name = T.unpack $ repoName input let name = T.unpack $ repoName input
makeAWSRemote Glacier.remote (extractCreds input) name setgroup $ M.fromList makeAWSRemote Glacier.remote (extractCreds input) name setgroup $ M.fromList
[ configureEncryption $ enableEncryption input [ configureEncryption $ enableEncryption input
@ -191,10 +191,10 @@ enableAWSRemote :: RemoteType -> UUID -> Widget
#ifdef WITH_S3 #ifdef WITH_S3
enableAWSRemote remotetype uuid = do enableAWSRemote remotetype uuid = do
defcreds <- liftAnnex previouslyUsedAWSCreds defcreds <- liftAnnex previouslyUsedAWSCreds
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ awsCredsAForm defcreds runFormPost $ renderBootstrap $ awsCredsAForm defcreds
case result of case result of
FormSuccess creds -> handlerToWidget $ do FormSuccess creds -> liftH $ do
m <- liftAnnex readRemoteLog m <- liftAnnex readRemoteLog
let name = fromJust $ M.lookup "name" $ let name = fromJust $ M.lookup "name" $
fromJust $ M.lookup uuid m fromJust $ M.lookup uuid m

View file

@ -72,14 +72,14 @@ postDeleteCurrentRepositoryR = deleteCurrentRepository
deleteCurrentRepository :: Handler RepHtml deleteCurrentRepository :: Handler RepHtml
deleteCurrentRepository = dangerPage $ do deleteCurrentRepository = dangerPage $ do
reldir <- fromJust . relDir <$> handlerToWidget getYesod reldir <- fromJust . relDir <$> liftH getYesod
havegitremotes <- haveremotes syncGitRemotes havegitremotes <- haveremotes syncGitRemotes
havedataremotes <- haveremotes syncDataRemotes havedataremotes <- haveremotes syncDataRemotes
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ sanityVerifierAForm $ runFormPost $ renderBootstrap $ sanityVerifierAForm $
SanityVerifier magicphrase SanityVerifier magicphrase
case result of case result of
FormSuccess _ -> handlerToWidget $ do FormSuccess _ -> liftH $ do
dir <- liftAnnex $ fromRepo Git.repoPath dir <- liftAnnex $ fromRepo Git.repoPath
liftIO $ removeAutoStartFile dir liftIO $ removeAutoStartFile dir

View file

@ -177,10 +177,10 @@ editForm new uuid = page "Configure repository" (Just Configuration) $ do
mremote <- liftAnnex $ Remote.remoteFromUUID uuid mremote <- liftAnnex $ Remote.remoteFromUUID uuid
curr <- liftAnnex $ getRepoConfig uuid mremote curr <- liftAnnex $ getRepoConfig uuid mremote
liftAnnex $ checkAssociatedDirectory curr mremote liftAnnex $ checkAssociatedDirectory curr mremote
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ editRepositoryAForm curr runFormPost $ renderBootstrap $ editRepositoryAForm curr
case result of case result of
FormSuccess input -> handlerToWidget $ do FormSuccess input -> liftH $ do
setRepoConfig uuid mremote curr input setRepoConfig uuid mremote curr input
liftAnnex $ checkAssociatedDirectory input mremote liftAnnex $ checkAssociatedDirectory input mremote
redirect DashboardR redirect DashboardR

View file

@ -125,10 +125,10 @@ postAddIAR :: Handler RepHtml
#ifdef WITH_S3 #ifdef WITH_S3
postAddIAR = iaConfigurator $ do postAddIAR = iaConfigurator $ do
defcreds <- liftAnnex previouslyUsedIACreds defcreds <- liftAnnex previouslyUsedIACreds
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ iaInputAForm defcreds runFormPost $ renderBootstrap $ iaInputAForm defcreds
case result of case result of
FormSuccess input -> handlerToWidget $ do FormSuccess input -> liftH $ do
let name = escapeBucket $ T.unpack $ itemName input let name = escapeBucket $ T.unpack $ itemName input
AWS.makeAWSRemote S3.remote (extractCreds input) name setgroup $ AWS.makeAWSRemote S3.remote (extractCreds input) name setgroup $
M.fromList $ catMaybes M.fromList $ catMaybes
@ -167,10 +167,10 @@ postEnableIAR _ = error "S3 not supported by this build"
enableIARemote :: UUID -> Widget enableIARemote :: UUID -> Widget
enableIARemote uuid = do enableIARemote uuid = do
defcreds <- liftAnnex previouslyUsedIACreds defcreds <- liftAnnex previouslyUsedIACreds
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ iaCredsAForm defcreds runFormPost $ renderBootstrap $ iaCredsAForm defcreds
case result of case result of
FormSuccess creds -> handlerToWidget $ do FormSuccess creds -> liftH $ do
m <- liftAnnex readRemoteLog m <- liftAnnex readRemoteLog
let name = fromJust $ M.lookup "name" $ let name = fromJust $ M.lookup "name" $
fromJust $ M.lookup uuid m fromJust $ M.lookup uuid m

View file

@ -142,11 +142,11 @@ postFirstRepositoryR = page "Getting started" (Just Configuration) $ do
let path = "/sdcard/annex" let path = "/sdcard/annex"
#else #else
let androidspecial = False let androidspecial = False
path <- liftIO . defaultRepositoryPath =<< handlerToWidget inFirstRun path <- liftIO . defaultRepositoryPath =<< liftH inFirstRun
#endif #endif
((res, form), enctype) <- handlerToWidget $ runFormPost $ newRepositoryForm path ((res, form), enctype) <- liftH $ runFormPost $ newRepositoryForm path
case res of case res of
FormSuccess (RepositoryPath p) -> handlerToWidget $ FormSuccess (RepositoryPath p) -> liftH $
startFullAssistant (T.unpack p) ClientGroup startFullAssistant (T.unpack p) ClientGroup
_ -> $(widgetFile "configurators/newrepository/first") _ -> $(widgetFile "configurators/newrepository/first")
@ -160,13 +160,13 @@ getNewRepositoryR = postNewRepositoryR
postNewRepositoryR :: Handler RepHtml postNewRepositoryR :: Handler RepHtml
postNewRepositoryR = page "Add another repository" (Just Configuration) $ do postNewRepositoryR = page "Add another repository" (Just Configuration) $ do
home <- liftIO myHomeDir home <- liftIO myHomeDir
((res, form), enctype) <- handlerToWidget $ runFormPost $ newRepositoryForm home ((res, form), enctype) <- liftH $ runFormPost $ newRepositoryForm home
case res of case res of
FormSuccess (RepositoryPath p) -> do FormSuccess (RepositoryPath p) -> do
let path = T.unpack p let path = T.unpack p
isnew <- liftIO $ makeRepo path False isnew <- liftIO $ makeRepo path False
u <- liftIO $ initRepo isnew True path Nothing u <- liftIO $ initRepo isnew True path Nothing
handlerToWidget $ liftAnnexOr () $ setStandardGroup u ClientGroup liftH $ liftAnnexOr () $ setStandardGroup u ClientGroup
liftIO $ addAutoStartFile path liftIO $ addAutoStartFile path
liftIO $ startAssistant path liftIO $ startAssistant path
askcombine u path askcombine u path
@ -174,7 +174,7 @@ postNewRepositoryR = page "Add another repository" (Just Configuration) $ do
where where
askcombine newrepouuid newrepopath = do askcombine newrepouuid newrepopath = do
newrepo <- liftIO $ relHome newrepopath newrepo <- liftIO $ relHome newrepopath
mainrepo <- fromJust . relDir <$> handlerToWidget getYesod mainrepo <- fromJust . relDir <$> liftH getYesod
$(widgetFile "configurators/newrepository/combine") $(widgetFile "configurators/newrepository/combine")
getCombineRepositoryR :: FilePathAndUUID -> Handler RepHtml getCombineRepositoryR :: FilePathAndUUID -> Handler RepHtml
@ -215,10 +215,10 @@ postAddDriveR = page "Add a removable drive" (Just Configuration) $ do
removabledrives <- liftIO $ driveList removabledrives <- liftIO $ driveList
writabledrives <- liftIO $ writabledrives <- liftIO $
filterM (canWrite . T.unpack . mountPoint) removabledrives filterM (canWrite . T.unpack . mountPoint) removabledrives
((res, form), enctype) <- handlerToWidget $ runFormPost $ ((res, form), enctype) <- liftH $ runFormPost $
selectDriveForm (sort writabledrives) selectDriveForm (sort writabledrives)
case res of case res of
FormSuccess drive -> handlerToWidget $ redirect $ ConfirmAddDriveR drive FormSuccess drive -> liftH $ redirect $ ConfirmAddDriveR drive
_ -> $(widgetFile "configurators/adddrive") _ -> $(widgetFile "configurators/adddrive")
{- The repo may already exist, when adding removable media {- The repo may already exist, when adding removable media

View file

@ -146,7 +146,7 @@ getFinishLocalPairR = postFinishLocalPairR
postFinishLocalPairR :: PairMsg -> Handler RepHtml postFinishLocalPairR :: PairMsg -> Handler RepHtml
#ifdef WITH_PAIRING #ifdef WITH_PAIRING
postFinishLocalPairR msg = promptSecret (Just msg) $ \_ secret -> do postFinishLocalPairR msg = promptSecret (Just msg) $ \_ secret -> do
repodir <- handlerToWidget $ repoPath <$> liftAnnex gitRepo repodir <- liftH $ repoPath <$> liftAnnex gitRepo
liftIO $ setup repodir liftIO $ setup repodir
startLocalPairing PairAck (cleanup repodir) alert uuid "" secret startLocalPairing PairAck (cleanup repodir) alert uuid "" secret
where where
@ -216,8 +216,8 @@ getRunningLocalPairR _ = noLocalPairing
-} -}
startLocalPairing :: PairStage -> IO () -> (AlertButton -> Alert) -> Maybe UUID -> Text -> Secret -> Widget startLocalPairing :: PairStage -> IO () -> (AlertButton -> Alert) -> Maybe UUID -> Text -> Secret -> Widget
startLocalPairing stage oncancel alert muuid displaysecret secret = do startLocalPairing stage oncancel alert muuid displaysecret secret = do
urlrender <- handlerToWidget getUrlRender urlrender <- liftH getUrlRender
reldir <- fromJust . relDir <$> handlerToWidget getYesod reldir <- fromJust . relDir <$> liftH getYesod
sendrequests <- liftAssistant $ asIO2 $ mksendrequests urlrender sendrequests <- liftAssistant $ asIO2 $ mksendrequests urlrender
{- Generating a ssh key pair can take a while, so do it in the {- Generating a ssh key pair can take a while, so do it in the
@ -235,7 +235,7 @@ startLocalPairing stage oncancel alert muuid displaysecret secret = do
startSending pip stage $ sendrequests sender startSending pip stage $ sendrequests sender
void $ liftIO $ forkIO thread void $ liftIO $ forkIO thread
handlerToWidget $ redirect $ RunningLocalPairR $ toSecretReminder displaysecret liftH $ redirect $ RunningLocalPairR $ toSecretReminder displaysecret
where where
{- Sends pairing messages until the thread is killed, {- Sends pairing messages until the thread is killed,
- and shows an activity alert while doing it. - and shows an activity alert while doing it.
@ -264,7 +264,7 @@ data InputSecret = InputSecret { secretText :: Maybe Text }
- that can validate it. -} - that can validate it. -}
promptSecret :: Maybe PairMsg -> (Text -> Secret -> Widget) -> Handler RepHtml promptSecret :: Maybe PairMsg -> (Text -> Secret -> Widget) -> Handler RepHtml
promptSecret msg cont = pairPage $ do promptSecret msg cont = pairPage $ do
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ runFormPost $ renderBootstrap $
InputSecret <$> aopt textField "Secret phrase" Nothing InputSecret <$> aopt textField "Secret phrase" Nothing
case result of case result of

View file

@ -86,11 +86,11 @@ getPreferencesR :: Handler RepHtml
getPreferencesR = postPreferencesR getPreferencesR = postPreferencesR
postPreferencesR :: Handler RepHtml postPreferencesR :: Handler RepHtml
postPreferencesR = page "Preferences" (Just Configuration) $ do postPreferencesR = page "Preferences" (Just Configuration) $ do
((result, form), enctype) <- handlerToWidget $ do ((result, form), enctype) <- liftH $ do
current <- liftAnnex getPrefs current <- liftAnnex getPrefs
runFormPost $ renderBootstrap $ prefsAForm current runFormPost $ renderBootstrap $ prefsAForm current
case result of case result of
FormSuccess new -> handlerToWidget $ do FormSuccess new -> liftH $ do
liftAnnex $ storePrefs new liftAnnex $ storePrefs new
redirect ConfigurationR redirect ConfigurationR
_ -> $(widgetFile "configurators/preferences") _ -> $(widgetFile "configurators/preferences")

View file

@ -107,7 +107,7 @@ getAddSshR = postAddSshR
postAddSshR :: Handler RepHtml postAddSshR :: Handler RepHtml
postAddSshR = sshConfigurator $ do postAddSshR = sshConfigurator $ do
u <- liftIO $ T.pack <$> myUserName u <- liftIO $ T.pack <$> myUserName
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ sshInputAForm textField $ runFormPost $ renderBootstrap $ sshInputAForm textField $
SshInput Nothing (Just u) Nothing 22 SshInput Nothing (Just u) Nothing 22
case result of case result of
@ -115,7 +115,7 @@ postAddSshR = sshConfigurator $ do
s <- liftIO $ testServer sshinput s <- liftIO $ testServer sshinput
case s of case s of
Left status -> showform form enctype status Left status -> showform form enctype status
Right sshdata -> handlerToWidget $ redirect $ ConfirmSshR sshdata Right sshdata -> liftH $ redirect $ ConfirmSshR sshdata
_ -> showform form enctype UntestedServer _ -> showform form enctype UntestedServer
where where
showform form enctype status = $(widgetFile "configurators/ssh/add") showform form enctype status = $(widgetFile "configurators/ssh/add")
@ -138,12 +138,12 @@ postEnableRsyncR u = do
m <- fromMaybe M.empty . M.lookup u <$> liftAnnex readRemoteLog m <- fromMaybe M.empty . M.lookup u <$> liftAnnex readRemoteLog
case (parseSshRsyncUrl =<< M.lookup "rsyncurl" m, M.lookup "name" m) of case (parseSshRsyncUrl =<< M.lookup "rsyncurl" m, M.lookup "name" m) of
(Just sshinput, Just reponame) -> sshConfigurator $ do (Just sshinput, Just reponame) -> sshConfigurator $ do
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ sshInputAForm textField sshinput runFormPost $ renderBootstrap $ sshInputAForm textField sshinput
case result of case result of
FormSuccess sshinput' FormSuccess sshinput'
| isRsyncNet (inputHostname sshinput') -> | isRsyncNet (inputHostname sshinput') ->
void $ handlerToWidget $ makeRsyncNet sshinput' reponame (const noop) void $ liftH $ makeRsyncNet sshinput' reponame (const noop)
| otherwise -> do | otherwise -> do
s <- liftIO $ testServer sshinput' s <- liftIO $ testServer sshinput'
case s of case s of
@ -156,7 +156,7 @@ postEnableRsyncR u = do
showform form enctype status = do showform form enctype status = do
description <- liftAnnex $ T.pack <$> prettyUUID u description <- liftAnnex $ T.pack <$> prettyUUID u
$(widgetFile "configurators/ssh/enable") $(widgetFile "configurators/ssh/enable")
enable sshdata = handlerToWidget $ redirect $ ConfirmSshR $ enable sshdata = liftH $ redirect $ ConfirmSshR $
sshdata { rsyncOnly = True } sshdata { rsyncOnly = True }
{- Converts a rsyncurl value to a SshInput. But only if it's a ssh rsync {- Converts a rsyncurl value to a SshInput. But only if it's a ssh rsync

View file

@ -65,10 +65,10 @@ postAddBoxComR :: Handler RepHtml
#ifdef WITH_WEBDAV #ifdef WITH_WEBDAV
postAddBoxComR = boxConfigurator $ do postAddBoxComR = boxConfigurator $ do
defcreds <- liftAnnex $ previouslyUsedWebDAVCreds "box.com" defcreds <- liftAnnex $ previouslyUsedWebDAVCreds "box.com"
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ boxComAForm defcreds runFormPost $ renderBootstrap $ boxComAForm defcreds
case result of case result of
FormSuccess input -> handlerToWidget $ FormSuccess input -> liftH $
makeWebDavRemote "box.com" (toCredPair input) setgroup $ M.fromList makeWebDavRemote "box.com" (toCredPair input) setgroup $ M.fromList
[ configureEncryption $ enableEncryption input [ configureEncryption $ enableEncryption input
, ("embedcreds", if embedCreds input then "yes" else "no") , ("embedcreds", if embedCreds input then "yes" else "no")
@ -99,7 +99,7 @@ postEnableWebDAVR uuid = do
mcreds <- liftAnnex $ mcreds <- liftAnnex $
getRemoteCredPairFor "webdav" c (WebDAV.davCreds uuid) getRemoteCredPairFor "webdav" c (WebDAV.davCreds uuid)
case mcreds of case mcreds of
Just creds -> webDAVConfigurator $ handlerToWidget $ Just creds -> webDAVConfigurator $ liftH $
makeWebDavRemote name creds (const noop) M.empty makeWebDavRemote name creds (const noop) M.empty
Nothing Nothing
| "box.com/" `isInfixOf` url -> | "box.com/" `isInfixOf` url ->
@ -111,10 +111,10 @@ postEnableWebDAVR uuid = do
defcreds <- liftAnnex $ defcreds <- liftAnnex $
maybe (pure Nothing) previouslyUsedWebDAVCreds $ maybe (pure Nothing) previouslyUsedWebDAVCreds $
urlHost url urlHost url
((result, form), enctype) <- handlerToWidget $ ((result, form), enctype) <- liftH $
runFormPost $ renderBootstrap $ webDAVCredsAForm defcreds runFormPost $ renderBootstrap $ webDAVCredsAForm defcreds
case result of case result of
FormSuccess input -> handlerToWidget $ FormSuccess input -> liftH $
makeWebDavRemote name (toCredPair input) (const noop) M.empty makeWebDavRemote name (toCredPair input) (const noop) M.empty
_ -> do _ -> do
description <- liftAnnex $ description <- liftAnnex $

View file

@ -110,13 +110,13 @@ postXMPPConfigForPairSelfR = xmppform StartXMPPPairSelfR
xmppform :: Route WebApp -> Handler RepHtml xmppform :: Route WebApp -> Handler RepHtml
#ifdef WITH_XMPP #ifdef WITH_XMPP
xmppform next = xmppPage $ do xmppform next = xmppPage $ do
((result, form), enctype) <- handlerToWidget $ do ((result, form), enctype) <- liftH $ do
oldcreds <- liftAnnex getXMPPCreds oldcreds <- liftAnnex getXMPPCreds
runFormPost $ renderBootstrap $ xmppAForm $ runFormPost $ renderBootstrap $ xmppAForm $
creds2Form <$> oldcreds creds2Form <$> oldcreds
let showform problem = $(widgetFile "configurators/xmpp") let showform problem = $(widgetFile "configurators/xmpp")
case result of case result of
FormSuccess f -> either (showform . Just) (handlerToWidget . storecreds) FormSuccess f -> either (showform . Just) (liftH . storecreds)
=<< liftIO (validateForm f) =<< liftIO (validateForm f)
_ -> showform Nothing _ -> showform Nothing
where where

View file

@ -30,8 +30,8 @@ import Control.Concurrent
{- A display of currently running and queued transfers. -} {- A display of currently running and queued transfers. -}
transfersDisplay :: Bool -> Widget transfersDisplay :: Bool -> Widget
transfersDisplay warnNoScript = do transfersDisplay warnNoScript = do
webapp <- handlerToWidget getYesod webapp <- liftH getYesod
current <- handlerToWidget $ M.toList <$> getCurrentTransfers current <- liftH $ M.toList <$> getCurrentTransfers
queued <- take 10 <$> liftAssistant getTransferQueue queued <- take 10 <$> liftAssistant getTransferQueue
autoUpdate ident NotifierTransfersR (10 :: Int) (10 :: Int) autoUpdate ident NotifierTransfersR (10 :: Int) (10 :: Int)
let transfers = simplifyTransfers $ current ++ queued let transfers = simplifyTransfers $ current ++ queued

View file

@ -110,7 +110,7 @@ repoListDisplay reposelector = do
addScript $ StaticR jquery_ui_mouse_js addScript $ StaticR jquery_ui_mouse_js
addScript $ StaticR jquery_ui_sortable_js addScript $ StaticR jquery_ui_sortable_js
repolist <- handlerToWidget $ repoList reposelector repolist <- liftH $ repoList reposelector
let addmore = nudgeAddMore reposelector let addmore = nudgeAddMore reposelector
let nootherrepos = length repolist < 2 let nootherrepos = length repolist < 2

View file

@ -28,7 +28,7 @@ sideBarDisplay :: Widget
sideBarDisplay = do sideBarDisplay = do
let content = do let content = do
{- Add newest alerts to the sidebar. -} {- Add newest alerts to the sidebar. -}
alertpairs <- handlerToWidget $ M.toList . alertMap alertpairs <- liftH $ M.toList . alertMap
<$> liftAssistant getDaemonStatus <$> liftAssistant getDaemonStatus
mapM_ renderalert $ mapM_ renderalert $
take displayAlerts $ reverse $ sortAlertPairs alertpairs take displayAlerts $ reverse $ sortAlertPairs alertpairs

View file

@ -91,7 +91,7 @@ instance LiftAnnex Handler where
liftAnnex = liftAnnexOr $ error "internal liftAnnex" liftAnnex = liftAnnexOr $ error "internal liftAnnex"
instance LiftAnnex (WidgetT WebApp IO) where instance LiftAnnex (WidgetT WebApp IO) where
liftAnnex = handlerToWidget . liftAnnex liftAnnex = liftH . liftAnnex
class LiftAssistant m where class LiftAssistant m where
liftAssistant :: Assistant a -> m a liftAssistant :: Assistant a -> m a
@ -101,7 +101,7 @@ instance LiftAssistant Handler where
=<< assistantData <$> getYesod =<< assistantData <$> getYesod
instance LiftAssistant (WidgetT WebApp IO) where instance LiftAssistant (WidgetT WebApp IO) where
liftAssistant = handlerToWidget . liftAssistant liftAssistant = liftH . liftAssistant
type Form x = MForm Handler (FormResult x, Widget) type Form x = MForm Handler (FormResult x, Widget)

View file

@ -1,11 +1,14 @@
{- Yesod stuff, that's typically found in the scaffolded site. {- Yesod stuff, that's typically found in the scaffolded site.
- -
- Copyright 2012 Joey Hess <joey@kitenet.net> - Also a bit of a compatability layer to make it easier to support yesod
- 1.1 and 1.2 in the same code base.
-
- Copyright 2012, 2013 Joey Hess <joey@kitenet.net>
- -
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
{-# LANGUAGE CPP #-} {-# LANGUAGE CPP, RankNTypes #-}
module Utility.Yesod where module Utility.Yesod where
@ -16,6 +19,9 @@ import Language.Haskell.TH.Syntax
import Data.Default (def) import Data.Default (def)
import Text.Hamlet import Text.Hamlet
#endif #endif
#if MIN_VERSION_yesod_default(1,2,0)
import Yesod.Core
#endif
widgetFile :: String -> Q Exp widgetFile :: String -> Q Exp
#if ! MIN_VERSION_yesod_default(1,1,0) #if ! MIN_VERSION_yesod_default(1,1,0)
@ -31,3 +37,12 @@ widgetFile = widgetFileNoReload $ def
hamletTemplate :: FilePath -> FilePath hamletTemplate :: FilePath -> FilePath
hamletTemplate f = globFile "hamlet" f hamletTemplate f = globFile "hamlet" f
#endif #endif
{- Lift Handler to Widget -}
#if ! MIN_VERSION_yesod(1,2,0)
liftH :: forall t. Lift t => t -> Q Exp
liftH = lift
#else
liftH :: Monad m => HandlerT site m a -> WidgetT site m a
liftH = liftH
#endif