1- import { EventData } from "./types" ;
1+ import {
2+ EventData ,
3+ FeatureEventPayload ,
4+ GenericEventPayload ,
5+ IndexEventPayload ,
6+ SummaryEventPayload
7+ } from "./types" ;
28import { Icon } from "@launchpad-ui/icons" ;
39import { useState } from "react" ;
410
@@ -26,16 +32,16 @@ const clipboardLink = (linkText: string, value: string, showNotification: (messa
2632 ) ;
2733}
2834
29- const summaryRows = ( summaryEvent : EventData , showNotification : ( message : string ) => void ) => {
35+ const summaryRows = ( event : EventData , summaryEvent : SummaryEventPayload , showNotification : ( message : string ) => void ) => {
3036 const rows = [ ] ;
31- for ( const [ key , value ] of Object . entries ( summaryEvent . data . features || { } ) ) {
32- const rowId = summaryEvent . id + key ;
37+ for ( const [ key , value ] of Object . entries ( summaryEvent . features || { } ) ) {
38+ const rowId = event . id + key ;
3339 const counters = value . counters || [ ] ;
3440
3541 for ( const counter of counters ) {
3642 rows . push (
3743 < tr key = { rowId } >
38- < td > { new Date ( summaryEvent . timestamp ) . toLocaleTimeString ( ) } </ td >
44+ < td > { new Date ( event . timestamp ) . toLocaleTimeString ( ) } </ td >
3945 < td > summary</ td >
4046 < td > < Icon name = "flag" size = "small" /> { key } </ td >
4147 < td > evaluated as { String ( counter . value ) } </ td >
@@ -48,7 +54,7 @@ const summaryRows = (summaryEvent: EventData, showNotification: (message: string
4854 return rows ;
4955}
5056
51- const indexRows = ( indexEvent : EventData , showNotification : ( message : string ) => void ) => {
57+ const indexRows = ( event : EventData , indexEvent : IndexEventPayload , showNotification : ( message : string ) => void ) => {
5258 let targetText = 'unknown' ;
5359 let iconName :
5460 | 'person'
@@ -57,8 +63,12 @@ const indexRows = (indexEvent: EventData, showNotification: (message: string) =>
5763 | 'group'
5864 | 'cloud'
5965 | 'help' = 'help' ;
60- if ( indexEvent . data . context ) {
61- const context = indexEvent . data . context
66+ if ( event . data . context ) {
67+ const context = indexEvent . context ;
68+ if ( ! context ) {
69+ console . error ( 'Index event context is undefined' ) ;
70+ return [ ] ;
71+ }
6272 switch ( context . kind ) {
6373 case 'user' :
6474 targetText = 'user context' ;
@@ -93,39 +103,38 @@ const indexRows = (indexEvent: EventData, showNotification: (message: string) =>
93103 }
94104
95105 return [
96- < tr key = { indexEvent . id } >
97- < td > { new Date ( indexEvent . timestamp ) . toLocaleTimeString ( ) } </ td >
106+ < tr key = { event . id } >
107+ < td > { new Date ( event . timestamp ) . toLocaleTimeString ( ) } </ td >
98108 < td > index</ td >
99109 < td > < Icon name = { iconName } size = "small" /> { targetText } </ td >
100- < td > indexed { JSON . stringify ( indexEvent . data ) . length } bytes</ td >
110+ < td > indexed { JSON . stringify ( indexEvent ) . length } bytes</ td >
101111 < td > { clipboardLink ( 'Copy to clipboard' , JSON . stringify ( indexEvent . data ) , showNotification ) } </ td >
102112 </ tr >
103113 ]
104114}
105115
106- const featureRows = ( featureEvent : EventData , showNotification : ( message : string ) => void ) => {
107- const data = featureEvent . data ; // Type assertion for feature event
108- const eventText = `evaluated as ${ String ( data . value ) } ` ;
116+ const featureRows = ( event : EventData , featureEvent : FeatureEventPayload , showNotification : ( message : string ) => void ) => {
117+ const eventText = `evaluated as ${ String ( featureEvent . value ) } ` ;
109118
110119 return [
111- < tr key = { featureEvent . id } className = "feature-row" >
112- < td > { new Date ( featureEvent . timestamp ) . toLocaleTimeString ( ) } </ td >
120+ < tr key = { event . id } className = "feature-row" >
121+ < td > { new Date ( event . timestamp ) . toLocaleTimeString ( ) } </ td >
113122 < td > feature</ td >
114- < td > { data . key || 'unknown' } </ td >
123+ < td > { featureEvent . key || 'unknown' } </ td >
115124 < td > { eventText } </ td >
116- < td > { clipboardLink ( 'Copy to clipboard' , JSON . stringify ( featureEvent . data ) , showNotification ) } </ td >
125+ < td > { clipboardLink ( 'Copy to clipboard' , JSON . stringify ( featureEvent ) , showNotification ) } </ td >
117126 </ tr >
118127 ] ;
119128}
120129
121- const customRows = ( event : EventData , showNotification : ( message : string ) => void ) => {
130+ const customRows = ( event : EventData , customEvent : GenericEventPayload , showNotification : ( message : string ) => void ) => {
122131 return [
123132 < tr key = { event . id } >
124133 < td > { new Date ( event . timestamp ) . toLocaleTimeString ( ) } </ td >
125134 < td > { event . data . kind } </ td >
126- < td > < Icon name = "chart-histogram" size = "small" /> { event . data . key || 'unknown' } </ td >
127- < td > value is { event . data . metricValue } </ td >
128- < td > { clipboardLink ( 'Copy to clipboard' , JSON . stringify ( event . data ) , showNotification ) } </ td >
135+ < td > < Icon name = "chart-histogram" size = "small" /> { customEvent . key } </ td >
136+ < td > value is { customEvent . metricValue } </ td >
137+ < td > { clipboardLink ( 'Copy to clipboard' , JSON . stringify ( customEvent ) , showNotification ) } </ td >
129138 </ tr > ,
130139 ] ;
131140}
@@ -136,11 +145,11 @@ const customRows = (event: EventData, showNotification: (message: string) => voi
136145const renderEvent = ( event : EventData , showNotification : ( message : string ) => void ) => {
137146 switch ( event . data . kind ) {
138147 case 'summary' :
139- return summaryRows ( event , showNotification ) ;
148+ return summaryRows ( event , event . data as SummaryEventPayload , showNotification ) ;
140149 case 'index' :
141- return indexRows ( event , showNotification ) ;
150+ return indexRows ( event , event . data as IndexEventPayload , showNotification ) ;
142151 case 'feature' :
143- return featureRows ( event , showNotification ) ;
152+ return featureRows ( event , event . data as FeatureEventPayload , showNotification ) ;
144153 case 'custom' :
145154 return customRows ( event , showNotification ) ;
146155 default :
0 commit comments