-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#728 2024 봄 이벤트 퀘스트 페이지 만들기 #732
The head ref may contain hidden characters: "#728-2024-\uBD04-\uC774\uBCA4\uD2B8-\uD018\uC2A4\uD2B8-\uD398\uC774\uC9C0-\uB9CC\uB4E4\uAE30"
Changes from 13 commits
b646e0a
78ddf81
0176d39
8627f90
8e8d07e
645621c
19240e7
58b6a83
5159a09
eca865c
ab81986
0c85fe5
48787b3
c87b72f
f33c3f8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,119 @@ | ||||||
import { useMemo, useState } from "react"; | ||||||
|
||||||
import { useIsLogin, useValueRecoilState } from "@/hooks/useFetchRecoilState"; | ||||||
|
||||||
import Button from "@/components/Button"; | ||||||
import { | ||||||
ModalEvent2023FallJoin, | ||||||
ModalNotification, | ||||||
} from "@/components/ModalPopup"; | ||||||
import WhiteContainer from "@/components/WhiteContainer"; | ||||||
|
||||||
import eventTheme from "@/tools/eventTheme"; | ||||||
import theme from "@/tools/theme"; | ||||||
|
||||||
const SuggestJoinEventContainer = () => { | ||||||
const isLogin = useIsLogin(); | ||||||
const { isAgreeOnTermsOfEvent, completedQuests } = | ||||||
useValueRecoilState("event2023FallInfo") || {}; | ||||||
|
||||||
const randomToken = useMemo(() => !!Math.floor(Math.random() * 2), []); | ||||||
const [isOpenJoin, setIsOpenJoin] = useState<boolean>(false); | ||||||
const [isOpenNotification, setIsOpenNotification] = useState<boolean>(false); | ||||||
|
||||||
const styleButton = { | ||||||
padding: "12px", | ||||||
borderRadius: "12px", | ||||||
...eventTheme.font12_bold, | ||||||
background: eventTheme.blue_title, | ||||||
}; | ||||||
const styleTitle = { | ||||||
...eventTheme.font16_bold, | ||||||
background: eventTheme.blue_title, | ||||||
backgroundClip: "text", | ||||||
textFillColor: "transparent", | ||||||
marginBottom: "4px", | ||||||
}; | ||||||
const styleDescription = { | ||||||
...eventTheme.font10, | ||||||
color: theme.white, | ||||||
margin: "12px", | ||||||
}; | ||||||
|
||||||
return ( | ||||||
<> | ||||||
{!isLogin ? null : !isAgreeOnTermsOfEvent ? ( | ||||||
<WhiteContainer | ||||||
css={{ | ||||||
padding: "14px 16px", | ||||||
background: eventTheme.black, | ||||||
border: "1px solid #FFF", | ||||||
}} | ||||||
> | ||||||
<div css={styleTitle}>🌟 첫 발걸음</div> | ||||||
<div css={styleDescription}> | ||||||
이벤트 참여 동의 이후 퀘스트 달성이 가능합니다. 많은 혜택과 기회를 | ||||||
놓치지 마세요! | ||||||
</div> | ||||||
<Button | ||||||
type="purple" | ||||||
css={styleButton} | ||||||
onClick={() => setIsOpenJoin(true)} | ||||||
> | ||||||
이벤트 참여하기 | ||||||
</Button> | ||||||
</WhiteContainer> | ||||||
) : randomToken && | ||||||
completedQuests && | ||||||
!completedQuests.includes("adPushAgreement") ? ( | ||||||
<WhiteContainer> | ||||||
<div css={styleTitle}>🌟 Taxi의 소울메이트</div> | ||||||
<div css={styleDescription}> | ||||||
Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 | ||||||
동의를 해주시면 방이 많이 모이는 시즌, 주변에 택시앱 사용자가 있을 | ||||||
때 알려드릴 수 있어요. | ||||||
</div> | ||||||
<Button | ||||||
type="purple" | ||||||
css={styleButton} | ||||||
onClick={() => setIsOpenNotification(true)} | ||||||
> | ||||||
광고성 푸시 알림 수신 동의하고 넙죽코인 50개 얻기 | ||||||
</Button> | ||||||
</WhiteContainer> | ||||||
) : completedQuests && !completedQuests.includes("adPushAgreement") ? ( | ||||||
<WhiteContainer | ||||||
css={{ | ||||||
padding: "14px 16px", | ||||||
background: eventTheme.black, | ||||||
border: "1px solid #FFF", | ||||||
}} | ||||||
> | ||||||
<div css={styleTitle}>🌟 Taxi의 소울메이트</div> | ||||||
<div css={styleDescription}> | ||||||
Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 | ||||||
동의를 해주시면 방이 많이 모이는 시즌, 주변에 택시앱 사용자가 있을 | ||||||
때 알려드릴 수 있어요. | ||||||
</div> | ||||||
<Button | ||||||
type="purple" | ||||||
css={styleButton} | ||||||
onClick={() => setIsOpenNotification(true)} | ||||||
> | ||||||
광고성 푸시 알림 수신 동의하고 넙죽코인 50개 얻기 | ||||||
</Button> | ||||||
</WhiteContainer> | ||||||
) : null} | ||||||
<ModalEvent2023FallJoin | ||||||
isOpen={isOpenJoin} | ||||||
onChangeIsOpen={setIsOpenJoin} | ||||||
/> | ||||||
<ModalNotification | ||||||
isOpen={isOpenNotification} | ||||||
onChangeIsOpen={setIsOpenNotification} | ||||||
/> | ||||||
</> | ||||||
); | ||||||
}; | ||||||
|
||||||
export default SuggestJoinEventContainer; | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
메모이제이션 권장 드립니다.! |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import { useEffect } from "react"; | ||
|
||
export const useEventBackgroundEffect = (color: string = "#000000") => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
useEffect(() => { | ||
const prevBackground = document.body.style.background; | ||
document.body.style.background = color; | ||
return () => { | ||
document.body.style.background = prevBackground; | ||
}; | ||
}, [color]); | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
추후에 이벤트 참가 가능 여부가
event2024SpringInfo
API 에 담겨져서 넘어 올 것 같습니다.이 값에 따라 이벤트 상태, 이벤트 참여 권장 컴포넌트 띄어지도록 수정되어야 할 것 같아요