Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
.DS_Store

.env

CLAUDE.md
.claude
21 changes: 14 additions & 7 deletions frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import { useCallback, useRef } from 'react';
import { useParams, useSearchParams } from 'react-router-dom';
import ClubDetailTopBar from './components/ClubDetailTopBar/ClubDetailTopBar';
import Footer from '@/components/common/Footer/Footer';
import Header from '@/components/common/Header/Header';
import { PAGE_VIEW, USER_EVENT } from '@/constants/eventName';
import useMixpanelTrack from '@/hooks/Mixpanel/useMixpanelTrack';
import useTrackPageView from '@/hooks/Mixpanel/useTrackPageView';
import { useGetClubDetail } from '@/hooks/Queries/useClub';
import useDevice from '@/hooks/useDevice';
import { useScrollTo } from '@/hooks/Scroll/useScrollTo';
import useDevice from '@/hooks/useDevice';
import ClubFeed from '@/pages/ClubDetailPage/components/ClubFeed/ClubFeed';
import ClubIntroContent from '@/pages/ClubDetailPage/components/ClubIntroContent/ClubIntroContent';
import ClubProfileCard from '@/pages/ClubDetailPage/components/ClubProfileCard/ClubProfileCard';
import * as Styled from './ClubDetailPage.styles';
import ClubDetailFooter from './components/ClubDetailFooter/ClubDetailFooter';
import ClubDetailTopBar from './components/ClubDetailTopBar/ClubDetailTopBar';

export const TAB_TYPE = {
INTRO: 'intro',
Expand Down Expand Up @@ -47,7 +47,6 @@ const ClubDetailPage = () => {
const contentRef = useRef<HTMLDivElement>(null);
const { scrollToElement } = useScrollTo();


const scrollToContent = useCallback(() => {
scrollToElement(contentRef.current, TOP_BAR_HEIGHT);
}, [scrollToElement]);
Expand All @@ -58,10 +57,10 @@ const ClubDetailPage = () => {
trackEvent(
tabKey === TAB_TYPE.INTRO
? USER_EVENT.CLUB_INTRO_TAB_CLICKED
: USER_EVENT.CLUB_FEED_TAB_CLICKED
: USER_EVENT.CLUB_FEED_TAB_CLICKED,
);
},
[setSearchParams, trackEvent]
[setSearchParams, trackEvent],
);

if (error) {
Expand Down Expand Up @@ -119,10 +118,18 @@ const ClubDetailPage = () => {
</Styled.TabList>

<Styled.TabContent>
<div style={{ display: activeTab === TAB_TYPE.INTRO ? 'block' : 'none' }}>
<div
style={{
display: activeTab === TAB_TYPE.INTRO ? 'block' : 'none',
}}
>
<ClubIntroContent {...clubDetail.description} />
</div>
<div style={{ display: activeTab === TAB_TYPE.PHOTOS ? 'block' : 'none' }}>
<div
style={{
display: activeTab === TAB_TYPE.PHOTOS ? 'block' : 'none',
}}
>
<ClubFeed feed={clubDetail.feeds} clubName={clubDetail.name} />
</div>
</Styled.TabContent>
Expand Down
1 change: 1 addition & 0 deletions frontend/src/pages/ClubDetailPage/LegacyClubDetailPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ const LegacyClubDetailPage = () => {
recruitmentStart={clubDetail.recruitmentStart}
recruitmentEnd={clubDetail.recruitmentEnd}
recruitmentStatus={clubDetail.recruitmentStatus}
hideShareButtonOnMobile
/>
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,28 @@ import ApplicationSelectModal from '@/components/application/modals/ApplicationS
import { USER_EVENT } from '@/constants/eventName';
import useMixpanelTrack from '@/hooks/Mixpanel/useMixpanelTrack';
import { useGetClubDetail } from '@/hooks/Queries/useClub';
import useDevice from '@/hooks/useDevice';
import { ApplicationForm, ApplicationFormMode } from '@/types/application';
import ShareButton from '../ShareButton/ShareButton';
import useDevice from '@/hooks/useDevice';
import * as Styled from './ClubApplyButton.styles';

interface ClubApplyButtonProps {
deadlineText?: string;
hideShareButtonOnMobile?: boolean;
}

const ClubApplyButton = ({ deadlineText }: ClubApplyButtonProps) => {
const ClubApplyButton = ({
deadlineText,
hideShareButtonOnMobile = false,
}: ClubApplyButtonProps) => {
const { clubId } = useParams<{ clubId: string }>();
const navigate = useNavigate();
const trackEvent = useMixpanelTrack();
const { data: clubDetail } = useGetClubDetail(clubId!);
const { isMobile, isTablet } = useDevice();
const shouldShowShareButton = !isMobile && !isTablet;
const shouldShowShareButton = hideShareButtonOnMobile
? !isMobile && !isTablet
: true;

const [isApplicationModalOpen, setIsApplicationModalOpen] = useState(false);
const [applicationOptions, setApplicationOptions] = useState<
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ interface ClubDetailFooterProps {
recruitmentStart: string;
recruitmentEnd: string;
recruitmentStatus: RecruitmentStatus;
hideShareButtonOnMobile?: boolean;
}

const ClubDetailFooter = ({
recruitmentStart,
recruitmentEnd,
recruitmentStatus,
hideShareButtonOnMobile = false,
}: ClubDetailFooterProps) => {
const deadlineText = getDeadlineText(
recruitmentDateParser(recruitmentStart),
Expand All @@ -23,7 +25,10 @@ const ClubDetailFooter = ({

return (
<Styled.ClubDetailFooterContainer>
<ClubApplyButton deadlineText={deadlineText} />
<ClubApplyButton
deadlineText={deadlineText}
hideShareButtonOnMobile={hideShareButtonOnMobile}
/>
</Styled.ClubDetailFooterContainer>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ interface ShareButtonProps {

const isRNWebView = isInAppWebView();

const MOADONG_BASE_URL = 'https://www.moadong.com/club/';
const MOADONG_BASE_URL = 'https://www.moadong.com/clubDetail/';

const ShareButton = ({ clubId }: ShareButtonProps) => {
const { isMobile } = useDevice();
Expand Down