{-# LANGUAGE FlexibleInstances #-}
module Platform.Analytics.Internal
( trackEvent,
AnalyticsEventDetails,
)
where
import qualified Data.Aeson as Aeson
import NriPrelude
import qualified Platform
import qualified Platform.Internal as Internal
import qualified Prelude
trackEvent :: (Aeson.ToJSON e) => e -> Task err ()
trackEvent :: forall e err. ToJSON e => e -> Task err ()
trackEvent e
event =
let value :: Value
value = e -> Value
forall a. ToJSON a => a -> Value
Aeson.toJSON e
event
in Text -> Task err () -> Task err ()
forall e a. HasCallStack => Text -> Task e a -> Task e a
Platform.tracingSpan Text
"analytics.track" (Task err () -> Task err ()) -> Task err () -> Task err ()
forall a b. (a -> b) -> a -> b
<| do
AnalyticsEventDetails -> Task err ()
forall d e. TracingSpanDetails d => d -> Task e ()
Platform.setTracingSpanDetails (Value -> AnalyticsEventDetails
AnalyticsEventDetails Value
value)
(LogHandler -> IO (Result err ())) -> Task err ()
forall x a. (LogHandler -> IO (Result x a)) -> Task x a
Internal.Task
( \LogHandler
handler -> do
let Internal.Task LogHandler -> IO (Result Never ())
runCallback = LogHandler -> Value -> Task Never ()
Internal.trackAnalyticsEvent LogHandler
handler Value
value
_ <- LogHandler -> IO (Result Never ())
runCallback LogHandler
handler
Prelude.pure (Ok ())
)
newtype AnalyticsEventDetails = AnalyticsEventDetails Aeson.Value
deriving ([AnalyticsEventDetails] -> Value
[AnalyticsEventDetails] -> Encoding
AnalyticsEventDetails -> Bool
AnalyticsEventDetails -> Value
AnalyticsEventDetails -> Encoding
(AnalyticsEventDetails -> Value)
-> (AnalyticsEventDetails -> Encoding)
-> ([AnalyticsEventDetails] -> Value)
-> ([AnalyticsEventDetails] -> Encoding)
-> (AnalyticsEventDetails -> Bool)
-> ToJSON AnalyticsEventDetails
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: AnalyticsEventDetails -> Value
toJSON :: AnalyticsEventDetails -> Value
$ctoEncoding :: AnalyticsEventDetails -> Encoding
toEncoding :: AnalyticsEventDetails -> Encoding
$ctoJSONList :: [AnalyticsEventDetails] -> Value
toJSONList :: [AnalyticsEventDetails] -> Value
$ctoEncodingList :: [AnalyticsEventDetails] -> Encoding
toEncodingList :: [AnalyticsEventDetails] -> Encoding
$comitField :: AnalyticsEventDetails -> Bool
omitField :: AnalyticsEventDetails -> Bool
Aeson.ToJSON)
instance Internal.TracingSpanDetails AnalyticsEventDetails