jsaddle-dom-0.10.0.0: src/JSDOM/Custom/GeolocationPositionError.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE DeriveDataTypeable #-}
module JSDOM.Custom.GeolocationPositionError (
module Generated
, PositionErrorCode(..)
, PositionException(..)
, throwPositionException
) where
import Prelude ()
import Prelude.Compat
import Data.Typeable (Typeable)
import Control.Exception (Exception, throwIO)
import Control.Monad.IO.Class (MonadIO(..))
import JSDOM.Types (MonadDOM)
import JSDOM.Generated.GeolocationPositionError as Generated
data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
data PositionException = PositionException {
positionErrorCode :: PositionErrorCode,
positionErrorMessage :: String } deriving (Show, Eq, Typeable)
instance Exception PositionException
throwPositionException :: MonadDOM m => GeolocationPositionError -> m a
throwPositionException error = do
positionErrorCode <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
positionErrorMessage <- getMessage error
liftIO $ throwIO (PositionException{..})