page.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. const handleLogout = () => {
  19. setCurrentUser(null);
  20. localStorage.removeItem("currentUser");
  21. router.push("/");
  22. };
  23. return (
  24. <div className="bg-blue-600 text-white min-h-screen">
  25. <header className="h-16 fixed top-0 left-0 right-0 bg-white shadow-md z-10 transition-all duration-300">
  26. <div className="max-w-md mx-auto px-4 h-full">
  27. <div className="flex justify-between items-center h-full">
  28. <div className="flex items-center">
  29. <Image
  30. src="/images/header_logo.png"
  31. alt="Logo"
  32. width={45}
  33. height={45}
  34. />
  35. </div>
  36. {currentUser ? (
  37. <div className="flex items-center">
  38. <div
  39. className="flex items-center cursor-pointer mr-4"
  40. onClick={handlePersonalCenterClick}
  41. >
  42. {currentUser.avatar ? (
  43. <Image
  44. src={currentUser.avatar}
  45. alt="User Avatar"
  46. width={32}
  47. height={32}
  48. className="rounded-full mr-2"
  49. />
  50. ) : (
  51. <div className="w-7 h-7 mr-2">
  52. <Image
  53. src="/images/cluo.webp"
  54. alt="User Avatar"
  55. width={32}
  56. height={32}
  57. className="rounded-full"
  58. />
  59. </div>
  60. )}
  61. <span className="text-base font-bold text-gray-700">
  62. {currentUser.username}
  63. </span>
  64. </div>
  65. <span
  66. className="text-sm font-bold cursor-pointer text-red-400 hover:text-red-500"
  67. onClick={handleLogout}
  68. >
  69. 退出登录
  70. </span>
  71. </div>
  72. ) : (
  73. <button
  74. className="bg-blue-500 text-white hover:bg-blue-600 px-4 py-1 rounded-full text-sm font-bold transition duration-300"
  75. onClick={() => router.push("/login")}
  76. >
  77. 登录
  78. </button>
  79. )}
  80. </div>
  81. </div>
  82. </header>
  83. <main className="max-w-md mx-auto pt-16">
  84. <MatchPrediction currentUser={currentUser} />
  85. </main>
  86. <ActivityModal />
  87. </div>
  88. );
  89. }