import Head from 'next/head'; import MainLayout from '~/components/Layout/MainLayout'; import { Button } from '~/components/ui/button'; import Link from 'next/link'; import { UserAvatar } from '~/components/ui/avatar'; import { Bell, ChevronRight, Download, DownloadCloud, FileDown, Github, HeartHandshakeIcon, Star, } from 'lucide-react'; import { signOut } from 'next-auth/react'; import { AppDrawer } from '~/components/ui/drawer'; import { SubmitFeedback } from '~/components/Account/SubmitFeedback'; import { UpdateDetails } from '~/components/Account/UpdateDetails'; import { api } from '~/utils/api'; import { type NextPageWithUser } from '~/types'; import { toast } from 'sonner'; import { env } from '~/env'; import { SubscribeNotification } from '~/components/Account/SubscribeNotification'; import { useState } from 'react'; import { LoadingSpinner } from '~/components/ui/spinner'; const AccountPage: NextPageWithUser = ({ user }) => { const userQuery = api.user.me.useQuery(); const downloadQuery = api.user.downloadData.useMutation(); const [downloading, setDownloading] = useState(false); async function downloadData() { setDownloading(true); const data = await downloadQuery.mutateAsync(); const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = 'splitpro_data.json'; link.click(); URL.revokeObjectURL(url); setDownloading(false); } return ( <>