{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.StorageQuota
       (queryUsageAndQuota, requestQuota, StorageQuota(..),
        gTypeStorageQuota)
       where
import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
import qualified Prelude (error)
import Data.Typeable (Typeable)
import Data.Traversable (mapM)
import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
import Data.Int (Int64)
import Data.Word (Word, Word64)
import JSDOM.Types
import Control.Applicative ((<$>))
import Control.Monad (void)
import Control.Lens.Operators ((^.))
import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
import JSDOM.Enums

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
queryUsageAndQuota ::
                   (MonadDOM m) =>
                     StorageQuota ->
                       StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
queryUsageAndQuota :: forall (m :: * -> *).
MonadDOM m =>
StorageQuota
-> StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
queryUsageAndQuota StorageQuota
self StorageUsageCallback
usageCallback Maybe StorageErrorCallback
errorCallback
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (StorageQuota
self StorageQuota
-> Getting (JSM JSVal) StorageQuota (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"queryUsageAndQuota"
            [StorageUsageCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal StorageUsageCallback
usageCallback, Maybe StorageErrorCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe StorageErrorCallback
errorCallback]))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.requestQuota Mozilla StorageQuota.requestQuota documentation> 
requestQuota ::
             (MonadDOM m) =>
               StorageQuota ->
                 Word64 ->
                   Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
requestQuota :: forall (m :: * -> *).
MonadDOM m =>
StorageQuota
-> Word64
-> Maybe StorageQuotaCallback
-> Maybe StorageErrorCallback
-> m ()
requestQuota StorageQuota
self Word64
newQuotaInBytes Maybe StorageQuotaCallback
quotaCallback Maybe StorageErrorCallback
errorCallback
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         (StorageQuota
self StorageQuota
-> Getting (JSM JSVal) StorageQuota (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> [JSM JSVal] -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"requestQuota"
            [Word64 -> JSM JSVal
forall a. Integral a => a -> JSM JSVal
integralToDoubleToJSVal Word64
newQuotaInBytes, Maybe StorageQuotaCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe StorageQuotaCallback
quotaCallback,
             Maybe StorageErrorCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe StorageErrorCallback
errorCallback]))