Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion client/app/dashboard/data-feed/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client"

import { useEffect, useState } from "react"
import { ArrowUpRight } from "lucide-react"
import { ArrowUpRight, Info, X } from "lucide-react"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
import { Badge } from "@/components/ui/badge"
Expand Down Expand Up @@ -76,11 +76,16 @@ export default function DataFeedPage() {
const [loading, setLoading] = useState(true)
const [loadingCrises, setLoadingCrises] = useState(false)
const [lastUpdated, setLastUpdated] = useState<Date | null>(null)
const [showDisclaimer, setShowDisclaimer] = useState(true)

useEffect(() => {
async function fetchInitialData() {
try {
setLoading(true)
const dismissed = typeof window !== 'undefined' ? localStorage.getItem('data-feed-disclaimer-dismissed') : null
if (dismissed === 'true') {
setShowDisclaimer(false)
}
const [statusData, overviewData] = await Promise.all([
getDataFeedStatus(),
getDataFeedOverview()
Expand Down Expand Up @@ -218,6 +223,34 @@ export default function DataFeedPage() {
</Button>
</div>

{showDisclaimer && (
<div className="rounded-xl border border-border bg-muted/70 p-4 text-sm text-muted-foreground flex items-start gap-3 justify-between">
<div className="flex items-start gap-3">
<Info className="mt-0.5 h-4 w-4 text-primary" aria-hidden />
<div>
<p className="font-medium text-foreground">Crisis data updates</p>
<p>
Crisis data is automatically updated every 24 hours from Bluesky and other trusted sources.
</p>
</div>
</div>
<Button
variant="ghost"
size="icon"
className="shrink-0 text-muted-foreground hover:text-foreground"
aria-label="Dismiss data freshness disclaimer"
onClick={() => {
setShowDisclaimer(false)
if (typeof window !== 'undefined') {
localStorage.setItem('data-feed-disclaimer-dismissed', 'true')
}
}}
>
<X className="h-4 w-4" />
</Button>
</div>
)}

{/* Overview Stats */}
{loading ? (
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
Expand Down