{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.ApplePayError
       (newApplePayError, setCode, getCode, setContactField,
        getContactField, getContactFieldUnsafe, getContactFieldUnchecked,
        setMessage, getMessage, ApplePayError(..), gTypeApplePayError)
       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/ApplePayError Mozilla ApplePayError documentation> 
newApplePayError ::
                 (MonadDOM m, ToJSString message) =>
                   ApplePayErrorCode ->
                     Maybe ApplePayErrorContactField -> Maybe message -> m ApplePayError
newApplePayError :: ApplePayErrorCode
-> Maybe ApplePayErrorContactField
-> Maybe message
-> m ApplePayError
newApplePayError ApplePayErrorCode
errorCode Maybe ApplePayErrorContactField
contactField Maybe message
message
  = DOM ApplePayError -> m ApplePayError
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSVal -> ApplePayError
ApplePayError (JSVal -> ApplePayError) -> JSM JSVal -> DOM ApplePayError
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$>
         JSM JSVal -> [JSM JSVal] -> JSM JSVal
forall constructor args.
(MakeObject constructor, MakeArgs args) =>
constructor -> args -> JSM JSVal
new ([Char] -> JSM JSVal
forall a. ToJSString a => a -> JSM JSVal
jsg [Char]
"ApplePayError")
           [ApplePayErrorCode -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ApplePayErrorCode
errorCode, Maybe ApplePayErrorContactField -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe ApplePayErrorContactField
contactField, Maybe message -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe message
message])

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
setCode ::
        (MonadDOM m) => ApplePayError -> ApplePayErrorCode -> m ()
setCode :: ApplePayError -> ApplePayErrorCode -> m ()
setCode ApplePayError
self ApplePayErrorCode
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (ApplePayError
self ApplePayError -> Getting (DOM ()) ApplePayError (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"code" (ApplePayErrorCode -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal ApplePayErrorCode
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
getCode :: (MonadDOM m) => ApplePayError -> m ApplePayErrorCode
getCode :: ApplePayError -> m ApplePayErrorCode
getCode ApplePayError
self = DOM ApplePayErrorCode -> m ApplePayErrorCode
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ApplePayError
self ApplePayError
-> Getting (JSM JSVal) ApplePayError (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter ApplePayError (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"code") JSM JSVal
-> (JSVal -> DOM ApplePayErrorCode) -> DOM ApplePayErrorCode
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ApplePayErrorCode
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
setContactField ::
                (MonadDOM m) =>
                  ApplePayError -> Maybe ApplePayErrorContactField -> m ()
setContactField :: ApplePayError -> Maybe ApplePayErrorContactField -> m ()
setContactField ApplePayError
self Maybe ApplePayErrorContactField
val
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (ApplePayError
self ApplePayError -> Getting (DOM ()) ApplePayError (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"contactField" (Maybe ApplePayErrorContactField -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe ApplePayErrorContactField
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
getContactField ::
                (MonadDOM m) =>
                  ApplePayError -> m (Maybe ApplePayErrorContactField)
getContactField :: ApplePayError -> m (Maybe ApplePayErrorContactField)
getContactField ApplePayError
self
  = DOM (Maybe ApplePayErrorContactField)
-> m (Maybe ApplePayErrorContactField)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ApplePayError
self ApplePayError
-> Getting (JSM JSVal) ApplePayError (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter ApplePayError (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"contactField") JSM JSVal
-> (JSVal -> DOM (Maybe ApplePayErrorContactField))
-> DOM (Maybe ApplePayErrorContactField)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe ApplePayErrorContactField)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
getContactFieldUnsafe ::
                      (MonadDOM m, HasCallStack) =>
                        ApplePayError -> m ApplePayErrorContactField
getContactFieldUnsafe :: ApplePayError -> m ApplePayErrorContactField
getContactFieldUnsafe ApplePayError
self
  = DOM ApplePayErrorContactField -> m ApplePayErrorContactField
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (((ApplePayError
self ApplePayError
-> Getting (JSM JSVal) ApplePayError (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter ApplePayError (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"contactField") JSM JSVal
-> (JSVal -> DOM (Maybe ApplePayErrorContactField))
-> DOM (Maybe ApplePayErrorContactField)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe ApplePayErrorContactField)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal) DOM (Maybe ApplePayErrorContactField)
-> (Maybe ApplePayErrorContactField
    -> DOM ApplePayErrorContactField)
-> DOM ApplePayErrorContactField
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
         DOM ApplePayErrorContactField
-> (ApplePayErrorContactField -> DOM ApplePayErrorContactField)
-> Maybe ApplePayErrorContactField
-> DOM ApplePayErrorContactField
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ([Char] -> DOM ApplePayErrorContactField
forall a. HasCallStack => [Char] -> a
Prelude.error [Char]
"Nothing to return") ApplePayErrorContactField -> DOM ApplePayErrorContactField
forall (m :: * -> *) a. Monad m => a -> m a
return)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
getContactFieldUnchecked ::
                         (MonadDOM m) => ApplePayError -> m ApplePayErrorContactField
getContactFieldUnchecked :: ApplePayError -> m ApplePayErrorContactField
getContactFieldUnchecked ApplePayError
self
  = DOM ApplePayErrorContactField -> m ApplePayErrorContactField
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ApplePayError
self ApplePayError
-> Getting (JSM JSVal) ApplePayError (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter ApplePayError (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"contactField") JSM JSVal
-> (JSVal -> DOM ApplePayErrorContactField)
-> DOM ApplePayErrorContactField
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM ApplePayErrorContactField
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
setMessage ::
           (MonadDOM m, ToJSString val) => ApplePayError -> val -> m ()
setMessage :: ApplePayError -> val -> m ()
setMessage ApplePayError
self val
val = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (ApplePayError
self ApplePayError -> Getting (DOM ()) ApplePayError (DOM ()) -> DOM ()
forall s a. s -> Getting a s a -> a
^. [Char]
-> JSM JSVal
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
forall name val.
(ToJSString name, ToJSVal val) =>
name
-> val
-> forall o. MakeObject o => IndexPreservingGetter o (DOM ())
jss [Char]
"message" (val -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal val
val))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
getMessage ::
           (MonadDOM m, FromJSString result) => ApplePayError -> m result
getMessage :: ApplePayError -> m result
getMessage ApplePayError
self
  = DOM result -> m result
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((ApplePayError
self ApplePayError
-> Getting (JSM JSVal) ApplePayError (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. [Char] -> IndexPreservingGetter ApplePayError (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js [Char]
"message") JSM JSVal -> (JSVal -> DOM result) -> DOM result
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM result
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)