Problem
1. ContractEventFeed does not support exporting events to JSON — developers analysing contract behaviour often need to export event data for offline analysis. A "Export JSON" button should download all currently loaded events as a .json file.
2. ContractEventFeed topic tags have no copy button — each topic tag in EventRow is a small pill. Developers who need to copy topic values to use in queries have to manually select text from the tiny pills. A hover-reveal copy button on each topic tag would improve the developer experience.
3. ContractEventFeed does not support setting a custom start ledger for fetching events — the feed always fetches from the most recent events. Adding a fromLedger?: number prop (passed through to getEvents) would allow developers to inspect historical events.
Solution
- Add an "Export JSON" button to the card header that calls
URL.createObjectURL(new Blob([JSON.stringify(events, null, 2)])) and triggers a download.
- Add a hover-reveal copy button on each topic tag in
EventRow.
- Add
fromLedger?: number prop to ContractEventFeed passed to getEvents in the load function.
Acceptance Criteria
Note for Contributors: Write a clear PR description. Include a screenshot of the topic tag copy button and confirm the exported JSON is valid.
Problem
1.
ContractEventFeeddoes not support exporting events to JSON — developers analysing contract behaviour often need to export event data for offline analysis. A "Export JSON" button should download all currently loaded events as a.jsonfile.2.
ContractEventFeedtopic tags have no copy button — each topic tag inEventRowis a small pill. Developers who need to copy topic values to use in queries have to manually select text from the tiny pills. A hover-reveal copy button on each topic tag would improve the developer experience.3.
ContractEventFeeddoes not support setting a custom start ledger for fetching events — the feed always fetches from the most recent events. Adding afromLedger?: numberprop (passed through togetEvents) would allow developers to inspect historical events.Solution
URL.createObjectURL(new Blob([JSON.stringify(events, null, 2)]))and triggers a download.EventRow.fromLedger?: numberprop toContractEventFeedpassed togetEventsin theloadfunction.Acceptance Criteria
.jsonfilefromLedgerprop filters events from that ledger forwardnpm run buildpasses