{-# LANGUAGE PatternSynonyms #-}
-- For HasCallStack compatibility
{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module JSDOM.Generated.RTCRtpSender
       (getParameters, getParameters_, replaceTrack, getTrack,
        getTrackUnsafe, getTrackUnchecked, RTCRtpSender(..),
        gTypeRTCRtpSender)
       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/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
getParameters :: (MonadDOM m) => RTCRtpSender -> m RTCRtpParameters
getParameters :: forall (m :: * -> *).
MonadDOM m =>
RTCRtpSender -> m RTCRtpParameters
getParameters RTCRtpSender
self
  = DOM RTCRtpParameters -> m RTCRtpParameters
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpSender
self RTCRtpSender
-> Getting (JSM JSVal) RTCRtpSender (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getParameters" ()) JSM JSVal
-> (JSVal -> DOM RTCRtpParameters) -> DOM RTCRtpParameters
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM RTCRtpParameters
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
getParameters_ :: (MonadDOM m) => RTCRtpSender -> m ()
getParameters_ :: forall (m :: * -> *). MonadDOM m => RTCRtpSender -> m ()
getParameters_ RTCRtpSender
self
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (RTCRtpSender
self RTCRtpSender
-> Getting (JSM JSVal) RTCRtpSender (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> () -> JSF
forall name args.
(ToJSString name, MakeArgs args) =>
name -> args -> JSF
jsf String
"getParameters" ()))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.replaceTrack Mozilla RTCRtpSender.replaceTrack documentation> 
replaceTrack ::
             (MonadDOM m, IsMediaStreamTrack withTrack) =>
               RTCRtpSender -> Maybe withTrack -> m ()
replaceTrack :: forall (m :: * -> *) withTrack.
(MonadDOM m, IsMediaStreamTrack withTrack) =>
RTCRtpSender -> Maybe withTrack -> m ()
replaceTrack RTCRtpSender
self Maybe withTrack
withTrack
  = DOM () -> m ()
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM
      (JSM JSVal -> DOM ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void
         ((RTCRtpSender
self RTCRtpSender
-> Getting (JSM JSVal) RTCRtpSender (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
"replaceTrack" [Maybe withTrack -> JSM JSVal
forall a. ToJSVal a => a -> JSM JSVal
toJSVal Maybe withTrack
withTrack]) JSM JSVal -> (JSVal -> JSM JSVal) -> JSM JSVal
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> JSM JSVal
readPromise))

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
getTrack ::
         (MonadDOM m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
getTrack :: forall (m :: * -> *).
MonadDOM m =>
RTCRtpSender -> m (Maybe MediaStreamTrack)
getTrack RTCRtpSender
self = DOM (Maybe MediaStreamTrack) -> m (Maybe MediaStreamTrack)
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpSender
self RTCRtpSender
-> Getting (JSM JSVal) RTCRtpSender (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter RTCRtpSender (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"track") JSM JSVal
-> (JSVal -> DOM (Maybe MediaStreamTrack))
-> DOM (Maybe MediaStreamTrack)
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM (Maybe MediaStreamTrack)
forall a. FromJSVal a => JSVal -> JSM (Maybe a)
fromJSVal)

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

-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
getTrackUnchecked ::
                  (MonadDOM m) => RTCRtpSender -> m MediaStreamTrack
getTrackUnchecked :: forall (m :: * -> *).
MonadDOM m =>
RTCRtpSender -> m MediaStreamTrack
getTrackUnchecked RTCRtpSender
self
  = DOM MediaStreamTrack -> m MediaStreamTrack
forall (m :: * -> *) a. MonadDOM m => DOM a -> m a
liftDOM ((RTCRtpSender
self RTCRtpSender
-> Getting (JSM JSVal) RTCRtpSender (JSM JSVal) -> JSM JSVal
forall s a. s -> Getting a s a -> a
^. String -> IndexPreservingGetter RTCRtpSender (JSM JSVal)
forall s name.
(MakeObject s, ToJSString name) =>
name -> IndexPreservingGetter s (JSM JSVal)
js String
"track") JSM JSVal
-> (JSVal -> DOM MediaStreamTrack) -> DOM MediaStreamTrack
forall a b. JSM a -> (a -> JSM b) -> JSM b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= JSVal -> DOM MediaStreamTrack
forall a. FromJSVal a => JSVal -> JSM a
fromJSValUnchecked)