Skip to content

feat(frontend): implement transaction history with filtering export a…#661

Open
Aycode01 wants to merge 6 commits into
Suncrest-Labs:mainfrom
Aycode01:feat/transaction-history-page
Open

feat(frontend): implement transaction history with filtering export a…#661
Aycode01 wants to merge 6 commits into
Suncrest-Labs:mainfrom
Aycode01:feat/transaction-history-page

Conversation

@Aycode01

Copy link
Copy Markdown

Summary

Implements a complete transaction history page with real on-chain activity, filtering, search, exports, pagination, and Stellar Expert verification links.

Related Issues

Closes #108

Type of Change
Bug fix
New feature
Breaking change
Refactor
Documentation

Changes Made
Added transaction history table
Added filtering and search support
Added cursor-based server pagination
Added CSV and PDF transaction exports
Added Stellar Expert transaction verification links
Added time-aware yield summary section

Testing Done
Verified API activity loading
Tested filters and search
Verified exports
Tested pagination with large transaction sets
Verified Stellar Explorer links

Checklist
Code follows project style guidelines
Self-review completed
Tests added/updated
Documentation updated if needed
No secrets or credentials included
Smart contract interactions reviewed for security implications

@Aycode01 Aycode01 requested a review from 0xDeon as a code owner June 23, 2026 11:43
@@ -0,0 +1,109 @@
import { jsPDF } from 'jspdf';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dapp Frontend (Next.js) CI job failed. Fix the build failure — likely caused by the jspdf/jspdf-autotable additions or a TypeScript error in the new history components — before this can be merged.

txHash?: string;
}

export default function HistoryPage() {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Property 'user' does not exist on type 'WalletState' — user?.id on line 82 causes a TypeScript compile error that fails the frontend CI build. WalletState exposes 'address' not 'user'. Replace user?.id with address or the correct field from WalletState for the userId param.

setTransactions(json.data);
setNextCursor(json.nextCursor ?? null);
setPrevCursor(json.prevCursor ?? null);
} catch (e: any) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

catch (e: any) — use catch (e: unknown) and narrow the type, or (e instanceof Error ? e.message : String(e)). The explicit-any triggers an ESLint error that blocks the build.

return transactions.filter((tx) => {
const hashMatch = tx.txHash?.toLowerCase().includes(term) ?? false;
const amountMatch = tx.amount.toString().includes(term);
return hashMatch || amountMatch;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

setLoading(true) and setError(null) called synchronously inside useEffect triggers the ESLint react-hooks/exhaustive-deps cascade-renders rule (19 instances flagged across files). Move state updates into the async fetchData callback body only, not at the top level of the effect.

@Aycode01

Copy link
Copy Markdown
Author

I already solve the build issue but I can't be one resolving over 1000 conflicts

@0xDeon 0xDeon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge conflict with main. Rebase onto main and resolve conflicts before this can be merged.

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.

feat(frontend): implement transaction history page with filtering, export, and on-chain verification

2 participants