Skip to content

Feat/tick transactions table#431

Open
sallymoc wants to merge 62 commits intodevfrom
feat/tick-transactions-table
Open

Feat/tick transactions table#431
sallymoc wants to merge 62 commits intodevfrom
feat/tick-transactions-table

Conversation

@sallymoc
Copy link
Contributor

No description provided.

Extract TransactionRow and TransactionSkeletonRow into shared components
used by both tick and address transaction tables. Add txID and status
translation keys across all locales.
…ring

Replace mock event generation with RTK Query endpoints calling the
Events API. Add VITE_EVENTS_API_URL env var, dev proxy config,
event type filter support, NaN guards on URL params, and
contractReserveDeduction adapter.
…mprovements

Add filter dropdown with reset button on tick events tab, extract
duplicated BETA banner into shared BetaBanner component, preserve
tab selection when navigating between ticks, and hide stale count
labels during loading.
Remove TX Type filter from address transactions (desktop and mobile).
Remove address events tab and related hooks since the events API does
not yet support identity-based filtering.
Key the ErrorBoundary on location.pathname so it remounts when
navigating, clearing stale error state from failed lazy chunk loads.
…ering

- New /network/blockchain/events page with event type and tick filters
- Shared validation hooks: useValidatedPage, useValidatedPageSize, useSanitizedEventType
- Consolidated events API endpoint with reusable filter components
- Shared updateSearchParams utility to reduce duplication
Replace ErrorBoundary key={pathname} with pathname prop and
componentDidUpdate to reset error state without unmounting the
entire component tree. The previous approach caused a full
unmount/remount cycle on every tick navigation, which broke
RTK Query subscriptions for the events tab.

Also surface API errors in the events tab instead of silently
showing an empty list.
Add null checks before accessing tickData properties in the
search result matching logic and render. When the API returns
a 200 response for an empty tick with null/undefined tickData,
the code previously crashed with a TypeError.
Store page and pageSize in URL search params instead of local state,
consistent with the events tab behavior.
The events API returns timestamps in epoch seconds, but JavaScript Date
expects milliseconds, causing dates to display as 1970.
Replace hardcoded 1000-event bulk fetch with paginated getEvents API
using transactionHash filter. Auto-corrects page if it exceeds
available results.
Remove redux-logger, @tailwindcss/aspect-ratio, and @tailwindcss/typography
which are not used anywhere in the codebase.
Replace inline "Show X items" dropdown with a PageSizeSelect wrapper
that renders "Show [dropdown] per page" with i18n prefix/suffix labels.
Fixes text truncation in non-English locales and simplifies all 5
consumer pages. Also validates pageSize in RichListPage.
- Add getProcessedTickIntervals RTK Query endpoint (GET)
- Add getEpochForTick utility to resolve epoch from tick number
- Add useGetEpochForTick convenience hook
- Display epoch in transaction extended details
- Handle ticks falling in gaps between epoch intervals
- Add sharesAuctionEpoch field to SmartContract type
- Detect Place Bid transactions based on destination, inputType, and epoch
- Add decodeSharesAuctionBid utility for future bid details display
- Override transaction type label to "Place Bid" for auction bids
- Move isSharesAuctionBid logic from TransactionDetails into qubic utils
- Pass epoch to getTransactionTypeDisplay/Long for auction bid detection
- Both TransactionRow (table) and TransactionDetails now show Place Bid
Switch shortDate format from US locale (MM/DD/YYYY) to sv-SE locale
for ISO-style dates (YYYY-MM-DD HH:MM:SS)
…tilities

- Extract shared useEventFilters hook replacing 3 duplicated filter hooks
- Create EventsFilterBar and EventsMobileFiltersModal shared components
- Add mobile filter validation for tick range and date range
- Centralize TickRangeValue type and toTickRangeValue helper
- Compose formatRangeLabel inside getAmountRangeLabel
- Extract AddressCell component for highlighted address pattern
- Centralize buildTickFilter and parseTickRange utilities
The events API now returns timestamps in milliseconds, matching the
transactions API. The previous * 1000 conversion is no longer needed.
Add incoming/outgoing/all direction control to the events filter bar,
with bidirectional sync between direction and source/destination filters.
Extract shared applyEventDirectionSync utility for desktop and mobile.
Replace single event type filter with multi-select chip-based UI
supporting up to 5 concurrent selections. Unify EventTypeChips
and EventTypeDropdownList into a single component. Add input
validation with deduplication and empty-string filtering.
New event detail page showing all event fields (epoch, tick,
timestamp, type, contract index, source, destination, amount,
asset details). Event IDs in the events table are now clickable
links. Unify contractIndex field naming across adapter.
Virtual TX IDs are now clickable links that open a reduced
transaction preview showing TX type, tick, epoch, timestamp,
and filtered events. Add support for CUSTOM_MESSAGE and
smartContractMessage event types. Hide amount field when no
meaningful data exists. Add hideTopBorder to SubCardItem.
Display token issuers as "<name> Issuer" (e.g., "CFB Issuer") instead
of two separate tags "Token" + "<name>". The change is centralized in
useGetAddressName hook so all consumers (address page, transactions,
events, rich list) show the unified label. Also match token website
lookup by both name and issuer for correctness.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant