{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.StorageInfo
       (queryUsageAndQuota, requestQuota, pattern TEMPORARY,
        pattern PERSISTENT, StorageInfo(..), gTypeStorageInfo)
       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/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
queryUsageAndQuota ::
                   (MonadDOM m) =>
                     StorageInfo ->
                       Word ->
                         Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
queryUsageAndQuota :: forall (m :: * -> *).
MonadDOM m =>
StorageInfo
-> Word
-> Maybe StorageUsageCallback
-> Maybe StorageErrorCallback
-> m ()
queryUsageAndQuota StorageInfo
self Word
storageType Maybe 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
         (StorageInfo
self StorageInfo
-> Getting (JSM JSVal) StorageInfo (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"
            [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
storageType, Maybe StorageUsageCallback -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe 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/StorageInfo.requestQuota Mozilla StorageInfo.requestQuota documentation> 
requestQuota ::
             (MonadDOM m) =>
               StorageInfo ->
                 Word ->
                   Word64 ->
                     Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
requestQuota :: forall (m :: * -> *).
MonadDOM m =>
StorageInfo
-> Word
-> Word64
-> Maybe StorageQuotaCallback
-> Maybe StorageErrorCallback
-> m ()
requestQuota StorageInfo
self Word
storageType 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
         (StorageInfo
self StorageInfo
-> Getting (JSM JSVal) StorageInfo (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"
            [Word -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Word
storageType, 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]))
pattern $mTEMPORARY :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bTEMPORARY :: forall {a}. (Eq a, Num a) => a
TEMPORARY = 0
pattern $mPERSISTENT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bPERSISTENT :: forall {a}. (Eq a, Num a) => a
PERSISTENT = 1