Skip to content

Commit a092194

Browse files
committed
full support for generic event nouns
1 parent 52b9fd1 commit a092194

File tree

3 files changed

+9
-13
lines changed

3 files changed

+9
-13
lines changed

packages/plugins/packages/boundwitness/src/components/_shared/Payloads/payloads-table/TableBody.stories.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,11 @@ const Default = Template.bind({})
3838
Default.args = {}
3939

4040
const WithData = Template.bind({})
41-
WithData.args = {
42-
...data, eventNoun: 'boundwitness', clickableFields: ['hash'],
43-
}
41+
WithData.args = { ...data, clickableFields: ['payload'] }
4442

4543
const WithCustomNouns = TemplateWithCustomNouns.bind({})
4644
WithCustomNouns.args = {
47-
...data, eventNoun: 'customNoun', clickableFields: ['hash'],
45+
...data, eventNoun: 'customNoun', clickableFields: ['customNoun'],
4846
}
4947

5048
export {

packages/plugins/packages/boundwitness/src/components/_shared/Payloads/payloads-table/TableBody.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,14 @@ import { useTableHeight } from '@xyo-network/react-table'
1111
import type { RefObject } from 'react'
1212
import React, { useLayoutEffect } from 'react'
1313

14-
type clickableFields = 'payload'
15-
16-
export interface BoundWitnessPayloadTableBodyProps<TNoun extends ExtendEventNoun = EventNoun> extends PayloadTableBodyProps {
17-
clickableFields?: clickableFields[]
14+
export interface BoundWitnessPayloadTableBodyProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends PayloadTableBodyProps {
15+
clickableFields?: TNoun[]
1816
eventNoun?: TNoun
1917
payloadHashes?: string[]
2018
payloadSchemas?: string[]
2119
}
2220

23-
export const BoundWitnessPayloadTableBody = <TNoun extends ExtendEventNoun = EventNoun>({
21+
export const BoundWitnessPayloadTableBody = <TNoun extends ExtendEventNoun<string> = EventNoun>({
2422
clickableFields,
2523
eventNoun = 'payload' as TNoun,
2624
payloadHashes,
@@ -34,7 +32,7 @@ export const BoundWitnessPayloadTableBody = <TNoun extends ExtendEventNoun = Eve
3432
} = props
3533

3634
const { setRowHeight } = useTableHeight()
37-
const [tableRowRef, dispatch] = useEvent<HTMLTableRowElement>(undefined, ref as RefObject<HTMLTableRowElement | null> | undefined)
35+
const [tableRowRef, dispatch] = useEvent<HTMLTableRowElement, TNoun>(undefined, ref as RefObject<HTMLTableRowElement | null> | undefined)
3836

3937
useLayoutEffect(() => {
4038
if (tableRowRef.current) {
@@ -53,7 +51,7 @@ export const BoundWitnessPayloadTableBody = <TNoun extends ExtendEventNoun = Eve
5351
<TableRow ref={tableRowRef} key={hash}>
5452
<TableCell title={payloadSchemas[index]}>{payloadSchemas[index]}</TableCell>
5553
<HashTableCell title={hash} value={hash}>
56-
{clickableFields?.includes('payload')
54+
{clickableFields?.includes(eventNoun)
5755
? (
5856
<Link
5957
sx={{ cursor: 'pointer' }}

packages/sdk/packages/event/src/hooks/useEvent.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import type { RefObject } from 'react'
33
import { useCustomEvent } from './useCustomEvent.ts'
44

55
export type EventNoun = 'payload' | 'boundwitness' | 'address' | 'hash' | 'signature' | 'schema'
6-
export type ExtendEventNoun<Extension extends string = string> = Extension | EventNoun
6+
export type ExtendEventNoun<Extension extends string | void = void> = Extension extends string ? Extension : EventNoun
77

88
export type EventVerb = 'click' | 'favorite'
99

10-
export interface Event<TNoun = EventNoun, TVerb = EventVerb, TData = string> {
10+
export interface Event<TNoun = ExtendEventNoun, TVerb = EventVerb, TData = string> {
1111
data?: TData
1212
noun: TNoun
1313
verb: TVerb

0 commit comments

Comments
 (0)