Skip to content

Commit 5b222fe

Browse files
gvelez17claude
andcommitted
Add optional video testimonial to RequestRating page
- Import VideoRecorder component - Add videoUrl state to track uploaded video - Include VideoRecorder with 60s max duration - Send videoUrl in claim payload when video is recorded 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 63563aa commit 5b222fe

File tree

2 files changed

+79
-1
lines changed

2 files changed

+79
-1
lines changed

public/privacy-policy.html

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Privacy Policy - LinkedTrust</title>
7+
<style>
8+
body {
9+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
10+
max-width: 800px;
11+
margin: 0 auto;
12+
padding: 40px 20px;
13+
line-height: 1.6;
14+
color: #333;
15+
}
16+
h1 { color: #1a1a1a; }
17+
h2 { color: #444; margin-top: 30px; }
18+
p { margin: 15px 0; }
19+
.updated { color: #666; font-style: italic; }
20+
</style>
21+
</head>
22+
<body>
23+
<h1>Privacy Policy</h1>
24+
<p class="updated">Last updated: December 1, 2025</p>
25+
26+
<h2>Overview</h2>
27+
<p>LinkedTrust ("we", "our", "us") operates the LinkedTrust platform at live.linkedtrust.us. This policy describes how we collect, use, and protect your information.</p>
28+
29+
<h2>Information We Collect</h2>
30+
<p>We collect information you provide directly:</p>
31+
<ul>
32+
<li>Account information (email, name) when you register</li>
33+
<li>Authentication data when you sign in via Google, GitHub, LinkedIn, or wallet (MetaMask)</li>
34+
<li>Claims and credentials you create on the platform</li>
35+
</ul>
36+
37+
<h2>How We Use Your Information</h2>
38+
<p>We use your information to:</p>
39+
<ul>
40+
<li>Provide and maintain the LinkedTrust service</li>
41+
<li>Authenticate your identity</li>
42+
<li>Display claims and credentials you choose to make public</li>
43+
<li>Link your identities across platforms when you authorize such connections</li>
44+
</ul>
45+
46+
<h2>Information Sharing</h2>
47+
<p>We do not sell your personal information. Claims you create on LinkedTrust are intended to be public and verifiable. We may share information:</p>
48+
<ul>
49+
<li>When required by law</li>
50+
<li>To protect our rights and safety</li>
51+
<li>With your consent</li>
52+
</ul>
53+
54+
<h2>Third-Party Services</h2>
55+
<p>We integrate with third-party authentication providers (Google, GitHub, LinkedIn). Their use of your information is governed by their respective privacy policies.</p>
56+
57+
<h2>Data Security</h2>
58+
<p>We implement reasonable security measures to protect your information. However, no method of transmission over the Internet is 100% secure.</p>
59+
60+
<h2>Your Rights</h2>
61+
<p>You may request access to, correction of, or deletion of your personal information by contacting us.</p>
62+
63+
<h2>Contact</h2>
64+
<p>For questions about this privacy policy, contact us at: privacy@linkedtrust.us</p>
65+
</body>
66+
</html>

src/components/RequestRating/index.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import StarIcon from '@mui/icons-material/Star'
2424
import { useCreateClaim } from '../../hooks/useCreateClaim'
2525
import Loader from '../Loader'
2626
import MainContainer from '../MainContainer'
27+
import VideoRecorder from '../VideoRecorder'
2728

2829
/**
2930
* RequestRating - Public page for collecting ratings/testimonials
@@ -65,6 +66,7 @@ const RequestRating: React.FC = () => {
6566
const theme = useTheme()
6667
const [loading, setLoading] = useState(false)
6768
const [submitted, setSubmitted] = useState(false)
69+
const [videoUrl, setVideoUrl] = useState<string | null>(null)
6870

6971
const aboutUri = searchParams.get('about') || ''
7072

@@ -130,7 +132,8 @@ const RequestRating: React.FC = () => {
130132
effectiveDate: data.effectiveDate.toISOString(),
131133
stars: data.stars || undefined,
132134
sourceURI: data.sourceURI || undefined,
133-
images: [] // Required by useCreateClaim
135+
images: [], // Required by useCreateClaim
136+
...(videoUrl && { videoUrl }) // Include video URL if recorded
134137
}
135138

136139
const { message, isSuccess } = await createClaim(payload)
@@ -339,6 +342,15 @@ const RequestRating: React.FC = () => {
339342
/>
340343
</Box>
341344

345+
{/* Video Testimonial */}
346+
<Box sx={{ mb: 4 }}>
347+
<VideoRecorder
348+
onVideoUploaded={url => setVideoUrl(url)}
349+
onVideoRemoved={() => setVideoUrl(null)}
350+
maxDuration={60}
351+
/>
352+
</Box>
353+
342354
{/* Submit */}
343355
<Button
344356
type='submit'

0 commit comments

Comments
 (0)