diff --git a/public/images/frame/frame-blue-sp.svg b/public/images/frame/frame-blue-sp.svg new file mode 100644 index 0000000..b0a46cc --- /dev/null +++ b/public/images/frame/frame-blue-sp.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/frame/frame-purple-sp.svg b/public/images/frame/frame-purple-sp.svg new file mode 100644 index 0000000..d25bebd --- /dev/null +++ b/public/images/frame/frame-purple-sp.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/rpkm/loading-icon.png b/public/images/rpkm/loading-icon.png new file mode 100644 index 0000000..08f81bc Binary files /dev/null and b/public/images/rpkm/loading-icon.png differ diff --git a/public/images/rpkm/profile/robot-02.png b/public/images/rpkm/profile/robot-02.png index ad08f8a..5b64a18 100644 Binary files a/public/images/rpkm/profile/robot-02.png and b/public/images/rpkm/profile/robot-02.png differ diff --git a/public/images/rpkm/rank-1.svg b/public/images/rpkm/rank-houseRank1.svg similarity index 100% rename from public/images/rpkm/rank-1.svg rename to public/images/rpkm/rank-houseRank1.svg diff --git a/public/images/rpkm/rank-2.svg b/public/images/rpkm/rank-houseRank2.svg similarity index 100% rename from public/images/rpkm/rank-2.svg rename to public/images/rpkm/rank-houseRank2.svg diff --git a/public/images/rpkm/rank-3.svg b/public/images/rpkm/rank-houseRank3.svg similarity index 100% rename from public/images/rpkm/rank-3.svg rename to public/images/rpkm/rank-houseRank3.svg diff --git a/public/images/rpkm/rank-4.svg b/public/images/rpkm/rank-houseRank4.svg similarity index 100% rename from public/images/rpkm/rank-4.svg rename to public/images/rpkm/rank-houseRank4.svg diff --git a/public/images/rpkm/rank-5.svg b/public/images/rpkm/rank-houseRank5.svg similarity index 100% rename from public/images/rpkm/rank-5.svg rename to public/images/rpkm/rank-houseRank5.svg diff --git a/public/images/rpkm/rank-sub.svg b/public/images/rpkm/rank-houseRankSub.svg similarity index 100% rename from public/images/rpkm/rank-sub.svg rename to public/images/rpkm/rank-houseRankSub.svg diff --git a/src/components/common/Frame.astro b/src/components/common/Frame.astro index ae60cf1..bd0f908 100644 --- a/src/components/common/Frame.astro +++ b/src/components/common/Frame.astro @@ -27,7 +27,7 @@ */ export interface Props { - size?: "lg" | "md" | "sm" | "xs"; + size?: "lg" | "md" | "sm" | "xs" | "sp"; color?: "blue" | "purple"; class?: string; contentContainerClass?: string; @@ -44,6 +44,10 @@ const frameSvg = `/images/frame/frame-${color}-${size}.svg`; // Size configuration with aspect ratios and minimum heights const sizeConfig = { + sp: { + aspectRatio: "346/300", + minHeight: "300px", + }, lg: { aspectRatio: "346/550", minHeight: "550px", @@ -110,6 +114,10 @@ const config = sizeConfig[size]; margin: 4% 7%; } + .frame-container[data-size="sp"] .frame-content-clip { + margin: 3% 5%; + } + /* Custom scrollbar styling */ .frame-content-clip { scrollbar-width: thin; diff --git a/src/components/common/MapDropdown.tsx b/src/components/common/MapDropdown.tsx index 4fc83ae..5eb4dbb 100644 --- a/src/components/common/MapDropdown.tsx +++ b/src/components/common/MapDropdown.tsx @@ -64,13 +64,13 @@ const MapDropdown: React.FC = ({ aria-expanded={open} aria-haspopup="true" type="button" - onClick={handleTriggerClick} + onClick={options.length > 1 ? handleTriggerClick : undefined} > {selectedOption.label}
- + {options.length > 1 ? : null}
void; } @@ -52,6 +53,7 @@ const Frame: React.FC = ({ noWrapper = false, children, frameId: propFrameId, + noScroll = false, onClickX, }) => { const { theme } = useTheme(); @@ -158,7 +160,7 @@ const Frame: React.FC = ({ {/* Content area with proper clipping */}
{noWrapper ? ( children diff --git a/src/components/firstdate/Navbar.astro b/src/components/firstdate/Navbar.astro index d7d4581..1e008b6 100644 --- a/src/components/firstdate/Navbar.astro +++ b/src/components/firstdate/Navbar.astro @@ -69,6 +69,9 @@ import ButtonFd from "@common/ButtonFd.astro";
  • รับเพื่อนก้าวใหม่
  • +
  • + Freshmen Night +
  • PROFILE
  • diff --git a/src/components/rpkm/components/group-picker.astro b/src/components/rpkm/components/group-picker.astro index 60dcfcd..4ac1163 100644 --- a/src/components/rpkm/components/group-picker.astro +++ b/src/components/rpkm/components/group-picker.astro @@ -3,31 +3,36 @@ import GroupProfile from "@rpkm/rubpuen/GroupProfile"; import Divider from "@/components/common/Divider.astro"; import Frame from "@/components/common/Frame.astro"; -import { getGroupData } from "@/lib/groupAPI"; +import { getGroupByGroupId } from "@/lib/groupAPI"; import { getProfile } from "@/lib/profileAPI"; import type { Group, User } from "@/types/common"; const token = Astro.cookies.get("token")?.value; -let groupData = null; -let user = null; +let groupData: Group | null = null; +let user: User | null = null; if (token) { - const response = await getGroupData(token); - if (response.success && response.data) { - groupData = response.data.data as Group; - } - - try { - const userResponse = await getProfile(token); - if (userResponse.success && userResponse.data) { - user = userResponse.data.user as User; + let groupID = ""; + const userResponse = await getProfile(token); + if (userResponse.success && userResponse.data) { + user = userResponse.data.user as User; + groupID = user.groupId ? user.groupId : ""; + if (groupID) { + const groupResponse = await getGroupByGroupId(groupID, token); + if (groupResponse.success && groupResponse.data) { + groupData = groupResponse.data.data as Group; + } else { + return Astro.redirect("/login"); + } } else { - console.error("Failed to fetch user data:", userResponse.error); + return Astro.redirect("/login"); } - } catch (error) { - console.error("Error fetching user data:", error); + } else { + console.error("Failed to fetch user data:", userResponse.error); } +} else { + return Astro.redirect("/login"); } if (!groupData || !user) { @@ -35,16 +40,29 @@ if (!groupData || !user) { } const inviteCode = groupData.inviteCode; +const isOwner = groupData.ownerId === user.id; +const isConfirmed = groupData.isConfirmed; +const memberCount = groupData.memberCount; + +const canDisplayDefault = !isConfirmed && memberCount === 1 && isOwner; +const canDisplayHead = + (isConfirmed && isOwner) || (!isConfirmed && isOwner && memberCount != 1); +const canDisplayMember = !isOwner; const member1 = groupData.memberCount > 1 ? groupData.users[1] : null; const member2 = groupData.memberCount > 2 ? groupData.users[2] : null; --- -
    +
    -

    จับกลุ่มเพื่อน (1/3)

    +

    + {`จับกลุ่มเพื่อน (${memberCount}/3)`} +

    @@ -103,62 +121,43 @@ const member2 = groupData.memberCount > 2 ? groupData.users[2] : null;
    -