11import { FC , useEffect , useMemo , useCallback , Suspense } from "react" ;
22import { useGlobalSearch , useWidgetHeight } from "src/api/hooks" ;
3+ import { useCustomAnalytics } from "src/api/hooks/useCustomAnalytics" ;
34import {
45 useGetKasandraCoinsQuery ,
56 useGetMarketHistoryQuery ,
@@ -28,6 +29,7 @@ const KasandraContainer: FC<IModuleContainer> = ({ moduleData }) => {
2829 const WIDGET_HEIGHT = useWidgetHeight ( moduleData ) ;
2930
3031 const isAuthenticated = useAppSelector ( selectIsAuthenticated ) ;
32+ const { logButtonClicked } = useCustomAnalytics ( ) ;
3133
3234 const selectedTimestamp = useAppSelector (
3335 ( state ) => state . widgets . kasandra ?. [ moduleData . hash ] ?. selectedTimestamp
@@ -125,12 +127,38 @@ const KasandraContainer: FC<IModuleContainer> = ({ moduleData }) => {
125127 limit : 24 ,
126128 } ) ;
127129
130+ const logData = useMemo ( ( ) => {
131+ return {
132+ selectedTimestamp : selectedTimestamp ?? 0 ,
133+ widgetName : moduleData . name ,
134+ case : selectedCase ,
135+ chartRange : selectedChartRange ,
136+ marketId : selectedMarket ?. id ,
137+ marketTicker : selectedMarket ?. ticker ,
138+ } ;
139+ } , [
140+ moduleData . name ,
141+ selectedCase ,
142+ selectedChartRange ,
143+ selectedMarket ?. id ,
144+ selectedMarket ?. ticker ,
145+ selectedTimestamp ,
146+ ] ) ;
147+
128148 const handleSelectedMarket = useCallback (
129149 ( market : TMarketMeta ) => {
130150 dispatch ( setKasandraData ( { widgetHash : moduleData . hash , market } ) ) ;
151+ logButtonClicked ( {
152+ buttonName : "kasandra-coin" ,
153+ data : {
154+ ...logData ,
155+ marketId : market . id ,
156+ marketTicker : market . ticker ,
157+ } ,
158+ } ) ;
131159 } ,
132160
133- [ dispatch , moduleData . hash ]
161+ [ dispatch , logButtonClicked , logData , moduleData . hash ]
134162 ) ;
135163
136164 const handleSelectedChartRange = useCallback (
@@ -141,18 +169,32 @@ const KasandraContainer: FC<IModuleContainer> = ({ moduleData }) => {
141169 chartRange,
142170 } )
143171 ) ;
172+ logButtonClicked ( {
173+ buttonName : "kasandra-date-range" ,
174+ data : {
175+ ...logData ,
176+ chartRange,
177+ } ,
178+ } ) ;
144179 } ,
145180
146- [ dispatch , moduleData . hash ]
181+ [ dispatch , logButtonClicked , logData , moduleData . hash ]
147182 ) ;
148183
149184 const handleSelectedCase = useCallback (
150185 ( kase : TKasandraCase ) => {
151186 dispatch (
152187 setKasandraData ( { widgetHash : moduleData . hash , case : kase } )
153188 ) ;
189+ logButtonClicked ( {
190+ buttonName : "kasandra-case" ,
191+ data : {
192+ ...logData ,
193+ case : kase ,
194+ } ,
195+ } ) ;
154196 } ,
155- [ dispatch , moduleData . hash ]
197+ [ dispatch , logButtonClicked , logData , moduleData . hash ]
156198 ) ;
157199
158200 const handleselectedTimestamp = useCallback (
@@ -163,8 +205,15 @@ const KasandraContainer: FC<IModuleContainer> = ({ moduleData }) => {
163205 timestamp,
164206 } )
165207 ) ;
208+ logButtonClicked ( {
209+ buttonName : "kasandra-datapoint" ,
210+ data : {
211+ ...logData ,
212+ selectedTimestamp : timestamp ,
213+ } ,
214+ } ) ;
166215 } ,
167- [ dispatch , moduleData . hash ]
216+ [ dispatch , logButtonClicked , logData , moduleData . hash ]
168217 ) ;
169218
170219 const handleAcceptDisclaimer = useCallback ( ( ) => {
@@ -174,7 +223,13 @@ const KasandraContainer: FC<IModuleContainer> = ({ moduleData }) => {
174223 disclaimerAccepted : true ,
175224 } )
176225 ) ;
177- } , [ dispatch , moduleData . hash ] ) ;
226+ logButtonClicked ( {
227+ buttonName : "kasandra-disclaimer" ,
228+ data : {
229+ widgetName : moduleData . name ,
230+ } ,
231+ } ) ;
232+ } , [ dispatch , logButtonClicked , moduleData . hash , moduleData . name ] ) ;
178233
179234 /**
180235 * if user searches for some keyword and tags are included, automatically set the selected market
0 commit comments