import React, { useState, useEffect } from 'react'; import { useSoulStream } from '../contexts/SoulStreamContext'; import type { ReputationComponentProps, ReputationData } from '../types'; /** * ReputationComponent displays reputation metrics from the SoulStream protocol */ const ReputationComponent: React.FC = ({ walletAddress, showDetails = false }) => { const [reputationData, setReputationData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const { getReputationScore } = useSoulStream(); useEffect(() => { const fetchReputation = async () => { if (!walletAddress) return; try { setLoading(true); const data = await getReputationScore(walletAddress); setReputationData(data); setError(null); } catch (err) { console.error('Failed to fetch reputation data:', err); setError('Failed to load reputation data'); } finally { setLoading(false); } }; fetchReputation(); }, [walletAddress, getReputationScore]); if (loading) return
Loading reputation data...
; if (error) return
Error: {error}
; if (!reputationData) return
No reputation data available
; return (

Reputation Score

{reputationData.score}
{showDetails && (

Reputation Details

  • Trust: {reputationData.trust}
  • Activity: {reputationData.activity}
  • Engagement: {reputationData.engagement}
)}
); }; export default ReputationComponent;