"use client" import { useAuth } from "@/contexts/auth-context" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Progress } from "@/components/ui/progress" import { BarChart3, Clock, Heart, ImageIcon, MessageSquare, FileText, TrendingUp, Trash2, RefreshCw, Bot, Mic, Settings, Zap, Star, Eye, Target, Users, Lightbulb, Search, Database, Shield, Cpu, Globe, Layers, PieChart, Activity, Calendar, Code, Command, Compass, CreditCard, Download, Edit, ExternalLink, Filter, Flag, Folder, Gift, Home, Info, Key, Link, Lock, Mail, MapPin, Minus, Monitor, MoreHorizontal, MoreVertical, MousePointer, Navigation, Pause, Play, Plus, Power, Save, Send, Share, Smartphone, Tablet, Upload, Volume2, Wifi, X, ZoomIn, ZoomOut } from "lucide-react" import { useState, useEffect } from "react" interface ActivityRecordsDialogProps { open: boolean onOpenChange: (open: boolean) => void } // Mock data for demonstration - will be replaced with real data const mockRecentApps: any[] = [] const mockCategoryData: any[] = [] export function ActivityRecordsDialog({ open, onOpenChange }: ActivityRecordsDialogProps) { const { user, getViewCount, getAppLikes, getUserLikeHistory, getAppLikesInPeriod } = useAuth() const [recentApps, setRecentApps] = useState([]) const [categoryData, setCategoryData] = useState([]) const [userStats, setUserStats] = useState({ totalUsage: 0, favoriteApps: 0, daysJoined: 0 }) const [isLoading, setIsLoading] = useState(false) const [isResetting, setIsResetting] = useState(false) if (!user) return null // Load user activity data from API const loadUserActivity = async () => { if (!user) return setIsLoading(true) try { const response = await fetch(`/api/user/activity?userId=${user.id}`) const data = await response.json() if (data.success) { setRecentApps(data.data.recentApps || []) setCategoryData(data.data.categoryStats || []) setUserStats(data.data.userStats || { totalUsage: 0, favoriteApps: 0, daysJoined: 0 }) } } catch (error) { console.error('載入用戶活動數據錯誤:', error) } finally { setIsLoading(false) } } // Load data when dialog opens useEffect(() => { if (open && user) { loadUserActivity() } }, [open, user]) // Reset user activity data const resetActivityData = async () => { setIsResetting(true) try { // Clear localStorage data if (typeof window !== "undefined") { localStorage.removeItem("appViews") localStorage.removeItem("appLikes") localStorage.removeItem("userLikes") localStorage.removeItem("appLikesOld") localStorage.removeItem("appRatings") } // Reset user's recent apps and favorites if (user) { const updatedUser = { ...user, recentApps: [], favoriteApps: [], totalLikes: 0, totalViews: 0 } localStorage.setItem("user", JSON.stringify(updatedUser)) // Reload the page to refresh all data window.location.reload() } } catch (error) { console.error("Error resetting activity data:", error) } finally { setIsResetting(false) } } return ( 活動紀錄 最近使用 個人統計

最近使用的應用

您最近體驗過的 AI 應用

{isLoading ? (

載入活動記錄中...

) : recentApps.length > 0 ? (
{recentApps.map((app) => { // 圖標映射函數 const getIconComponent = (iconName: string) => { const iconMap: { [key: string]: any } = { 'Bot': Bot, 'ImageIcon': ImageIcon, 'Mic': Mic, 'MessageSquare': MessageSquare, 'Settings': Settings, 'Zap': Zap, 'TrendingUp': TrendingUp, 'Star': Star, 'Heart': Heart, 'Eye': Eye, 'Target': Target, 'Users': Users, 'Lightbulb': Lightbulb, 'Search': Search, 'BarChart3': BarChart3, 'Database': Database, 'Shield': Shield, 'Cpu': Cpu, 'FileText': FileText, 'Globe': Globe, 'Layers': Layers, 'PieChart': PieChart, 'Activity': Activity, 'Calendar': Calendar, 'Clock': Clock, 'Code': Code, 'Command': Command, 'Compass': Compass, 'CreditCard': CreditCard, 'Download': Download, 'Edit': Edit, 'ExternalLink': ExternalLink, 'Filter': Filter, 'Flag': Flag, 'Folder': Folder, 'Gift': Gift, 'Home': Home, 'Info': Info, 'Key': Key, 'Link': Link, 'Lock': Lock, 'Mail': Mail, 'MapPin': MapPin, 'Minus': Minus, 'Monitor': Monitor, 'MoreHorizontal': MoreHorizontal, 'MoreVertical': MoreVertical, 'MousePointer': MousePointer, 'Navigation': Navigation, 'Pause': Pause, 'Play': Play, 'Plus': Plus, 'Power': Power, 'RefreshCw': RefreshCw, 'Save': Save, 'Send': Send, 'Share': Share, 'Smartphone': Smartphone, 'Tablet': Tablet, 'Trash2': Trash2, 'Upload': Upload, 'Volume2': Volume2, 'Wifi': Wifi, 'X': X, 'ZoomIn': ZoomIn, 'ZoomOut': ZoomOut, } return iconMap[iconName] || MessageSquare } const IconComponent = getIconComponent(app.icon || 'MessageSquare') const lastUsedDate = new Date(app.lastUsed) const now = new Date() const diffTime = Math.abs(now.getTime() - lastUsedDate.getTime()) const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) return (

{app.name}

by {app.creator}

{app.type} 使用 {app.usageCount} 次

{diffDays === 1 ? '昨天' : diffDays < 7 ? `${diffDays}天前` : `${Math.ceil(diffDays / 7)}週前`}

) })}
) : (

尚未使用任何應用

開始探索平台上的 AI 應用,您的使用記錄將顯示在這裡

)}

個人統計

您在平台上的活動概覽

{/* Statistics Cards */}
總使用次數
{isNaN(userStats.totalUsage) ? 0 : userStats.totalUsage}

{(isNaN(userStats.totalUsage) ? 0 : userStats.totalUsage) > 0 ? "累計使用" : "尚未使用任何應用"}

收藏應用
{isNaN(userStats.favoriteApps) ? 0 : userStats.favoriteApps}

{(isNaN(userStats.favoriteApps) ? 0 : userStats.favoriteApps) > 0 ? "個人收藏" : "尚未收藏任何應用"}

加入天數
{isNaN(userStats.daysJoined) ? 0 : userStats.daysJoined}

{(isNaN(userStats.daysJoined) ? 0 : userStats.daysJoined) > 0 ? "已加入平台" : "今天剛加入"}

{/* Category Usage */} 最常使用的類別 根據您的使用頻率統計的應用類別分布 {categoryData.length > 0 ? ( categoryData.map((category, index) => (
{category.name}
{category.usage}%
)) ) : (

尚未有使用數據

開始使用應用後,類別分布將顯示在這裡

)}
) }