page.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. "use client";
  2. import { useState, useEffect } from "react";
  3. import MatchPrediction from "./ui/MatchPrediction";
  4. import Image from "next/image";
  5. import { useRouter } from "next/navigation";
  6. import ActivityModal from "./ui/components/ActivityModal";
  7. export default function Home() {
  8. const [currentUser, setCurrentUser] = useState(null);
  9. const router = useRouter();
  10. useEffect(() => {
  11. const user = JSON.parse(localStorage.getItem("currentUser") || "null");
  12. setCurrentUser(user);
  13. }, []);
  14. const handlePersonalCenterClick = () => {
  15. console.log("Personal center clicked");
  16. router.push("/personal-center");
  17. };
  18. return (
  19. <div className="bg-blue-600 text-white min-h-screen">
  20. <header className="h-16 fixed top-0 left-0 right-0 bg-white shadow-md z-10 transition-all duration-300">
  21. <div className="max-w-md mx-auto px-4 h-full">
  22. <div className="flex justify-between items-center h-full">
  23. <div className="flex items-center">
  24. <Image
  25. src="/images/header_logo.png"
  26. alt="Logo"
  27. width={100}
  28. height={45}
  29. />
  30. </div>
  31. {currentUser ? (
  32. <div className="flex items-center">
  33. <div
  34. className="flex items-center cursor-pointer mr-4"
  35. onClick={handlePersonalCenterClick}
  36. >
  37. {currentUser.avatar ? (
  38. <Image
  39. src={currentUser.avatar}
  40. alt="User Avatar"
  41. width={32}
  42. height={32}
  43. className="rounded-full mr-2"
  44. />
  45. ) : (
  46. <div className="w-7 h-7 mr-2">
  47. <Image
  48. src="/images/cluo.webp"
  49. alt="User Avatar"
  50. width={32}
  51. height={32}
  52. className="rounded-full"
  53. />
  54. </div>
  55. )}
  56. <span className="text-base font-bold text-gray-700">
  57. {currentUser.username}
  58. </span>
  59. </div>
  60. </div>
  61. ) : (
  62. <button
  63. className="bg-blue-500 text-white hover:bg-blue-600 px-4 py-1 rounded-full text-sm font-bold transition duration-300"
  64. onClick={() => router.push("/login")}
  65. >
  66. 登录
  67. </button>
  68. )}
  69. </div>
  70. </div>
  71. </header>
  72. <main className="max-w-md mx-auto pt-16">
  73. <MatchPrediction currentUser={currentUser} />
  74. </main>
  75. <ActivityModal />
  76. </div>
  77. );
  78. }