Skip to content
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

[JR-879] 로그인 되어있지 않을시 나타나는 모달 구현 #202

Merged
merged 5 commits into from
Oct 18, 2023
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
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { useToggle } from '@monorepo/hooks';
import Chip from 'components/Chip';
import Loading from 'components/Loading';
import ReplaceLoginPageModal from 'components/ReplaceLoginPagemModal/ReplaceLoginPageModal';
import VoteHeader from 'components/VoteHeader';
import { Button } from 'components/button';
import Path from 'lib/Path';
import { isLogin } from 'lib/utils/auth';
import Image from 'next/image';
import { useParams, useRouter } from 'next/navigation';
import useDrinkStampService from 'services/useDrinkStampService';
Expand All @@ -15,6 +19,8 @@ import styled, { css, useTheme } from 'styled-components';
import useDrinkLoadService from '../services/useDrinkLoadService';

const DrinkInfoContainer = () => {
const [isReplaceLoginPageModal, onToggleReplaceLoginPageModal] = useToggle();

const router = useRouter();
const params = useParams();
const { id } = params;
Expand Down Expand Up @@ -59,7 +65,7 @@ const DrinkInfoContainer = () => {
</PreviousButton>
}
rightButton={
<PreviousButton onClick={() => router.back()}>
<PreviousButton onClick={() => router.push(Path.SEARCH_PAGE)}>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안드로이드 뒤로가기키 클릭과 privious button 동작이 달라질텐데 의도된 동작이 맞을까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 그런데 저게 검색 아이콘이더라고요
이전 버튼은 왼쪽에 있습니다!

<SvgHeaderSearch width={24} height={24} />
</PreviousButton>
}
Expand Down Expand Up @@ -89,12 +95,15 @@ const DrinkInfoContainer = () => {
{enjoyCount}명이 즐겼어요
</Chip>
</FlexRow>
<SvgStamp
onClick={() => postDrinkEnjoy(Number(id))}
width={24}
height={24}
fill={stampColor}
/>
<button
onClick={() =>
isLogin()
? postDrinkEnjoy(Number(id))
: onToggleReplaceLoginPageModal()
}
>
<SvgStamp width={24} height={24} fill={stampColor} />
</button>
</FlexBetweenRow>
<TitleBox>
<div className="title">{name}</div>
Expand Down Expand Up @@ -127,6 +136,11 @@ const DrinkInfoContainer = () => {
<div className="content">{manufactureAddress}도</div>
</DescriptionRow>
</DescriptionBox>
{isReplaceLoginPageModal && (
<ReplaceLoginPageModal
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
)}
</Container>
</>
);
Expand Down
9 changes: 9 additions & 0 deletions apps/jurumarble/src/app/map/components/MapContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useEffect, useRef, useState } from 'react';
import { useToggle } from '@react-hookz/web';
import DrinkItem from 'app/stamp/components/DrinkItem';
import Loading from 'components/Loading';
import ReplaceLoginPageModal from 'components/ReplaceLoginPagemModal/ReplaceLoginPageModal';
import { Button } from 'components/button';
import Image from 'next/image';
import { ExImg1 } from 'public/images';
Expand All @@ -21,6 +22,8 @@ interface Location {
}

const MapContainer = () => {
const [isReplaceLoginPageModal, onToggleReplaceLoginPageModal] = useToggle();

const [delayRender, setDelayRender] = useState(true);
const [nowIn, setNowIn] = useState('');

Expand Down Expand Up @@ -267,6 +270,7 @@ const MapContainer = () => {
setChangeMapCenter(latitude, longitude);
}}
selectedDrinkList={[]}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
),
)}
Expand All @@ -278,6 +282,11 @@ const MapContainer = () => {
on={on}
onChangeNowIn={onChangeNowIn}
/>
{isReplaceLoginPageModal && (
<ReplaceLoginPageModal
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
)}
</Container>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ function VoteListContainer() {
const Container = styled.section`
${({ theme }) => css`
background-color: ${theme.colors.bg_02};
padding: 24px 20px;
padding: 24px 20px 80px 20px;
`};
`;

Expand Down
10 changes: 8 additions & 2 deletions apps/jurumarble/src/app/search/components/ChipContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,19 @@ const ChipContainer = ({
<SvgIcBookmarkActive
width={20}
height={20}
onClick={() => mutateBookMark()}
onClick={(e) => {
e.stopPropagation();
mutateBookMark();
}}
/>
) : (
<SvgIcBookmark
width={20}
height={20}
onClick={() => mutateBookMark()}
onClick={(e) => {
e.stopPropagation();
mutateBookMark();
}}
/>
)}
</FlexRow>
Expand Down
12 changes: 9 additions & 3 deletions apps/jurumarble/src/app/search/components/DrinkItem.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { RatioFrame } from '@monorepo/ui';
import Chip from 'components/Chip';
import { transitions } from 'lib/styles';
import { isLogin } from 'lib/utils/auth';
import Image from 'next/image';
import useDrinkStampService from 'services/useDrinkStampService';
import SvgStamp from 'src/assets/icons/components/IcStamp';
Expand All @@ -9,12 +10,17 @@ import styled, { css, useTheme } from 'styled-components';

interface Props {
drinkInfo: DrinkInfo;

onClickDrinkItem: (e: React.MouseEvent<HTMLButtonElement>) => void;
selectedDrinkList?: string[];
onToggleReplaceLoginPageModal: () => void;
}

function DrinkItem({ drinkInfo, onClickDrinkItem, selectedDrinkList }: Props) {
function DrinkItem({
drinkInfo,
onClickDrinkItem,
selectedDrinkList,
onToggleReplaceLoginPageModal,
}: Props) {
const { id, name, manufacturer, image, enjoyCount, region } = drinkInfo;

const { colors } = useTheme();
Expand Down Expand Up @@ -46,7 +52,7 @@ function DrinkItem({ drinkInfo, onClickDrinkItem, selectedDrinkList }: Props) {
<StampWrapper
onClick={(e) => {
e.stopPropagation();
postDrinkEnjoy(id);
isLogin() ? postDrinkEnjoy(id) : onToggleReplaceLoginPageModal();
}}
>
<SvgStamp width={24} height={24} fill={stampColor} />
Expand Down
9 changes: 8 additions & 1 deletion apps/jurumarble/src/app/search/components/DrinkList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,15 @@ interface Props {
sortOption: DrinkInfoSortType;
regionOption: string;
isSelectedTab: boolean;
onToggleReplaceLoginPageModal: () => void;
}

function DrinkList({ searchText, sortOption, regionOption }: Props) {
function DrinkList({
searchText,
sortOption,
regionOption,
onToggleReplaceLoginPageModal,
}: Props) {
const searchParams = useSearchParams();
const selectedTab = searchParams.get('selectedTab');

Expand Down Expand Up @@ -41,6 +47,7 @@ function DrinkList({ searchText, sortOption, regionOption }: Props) {
key={drinkInfo.id}
drinkInfo={drinkInfo}
onClickDrinkItem={() => onClickDrinkItem(drinkInfo.id)}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
))}
{selectedTab === 'drinkInfo' && <div ref={subscribe} />}
Expand Down
8 changes: 6 additions & 2 deletions apps/jurumarble/src/app/search/components/DrinkVoteItem.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Path from 'lib/Path';
import { isLogin } from 'lib/utils/auth';
import { useRouter } from 'next/navigation';
import useBookmarkService from 'services/useBookmarkService';
import { Content } from 'src/types/vote';
Expand All @@ -9,12 +10,13 @@ import VoteDescription from './VoteDescription';

interface Props {
voteDrink: Content;
onToggleReplaceLoginPageModal: () => void;
}
/**
*
* @Todo 타입 더 깔끔하게 정의 필요
*/
function DrinkVoteItem({ voteDrink }: Props) {
function DrinkVoteItem({ voteDrink, onToggleReplaceLoginPageModal }: Props) {
const { voteId, region, title, imageA, imageB, votedCount } = voteDrink;

const { isBookmark, mutateBookMark } = useBookmarkService(voteId);
Expand All @@ -30,7 +32,9 @@ function DrinkVoteItem({ voteDrink }: Props) {
title={title}
date="20.08.22"
region={region}
mutateBookMark={mutateBookMark}
mutateBookMark={() => {
isLogin() ? mutateBookMark() : onToggleReplaceLoginPageModal();
}}
isBookmark={isBookmark}
votedCount={votedCount}
/>
Expand Down
14 changes: 12 additions & 2 deletions apps/jurumarble/src/app/search/components/DrinkVoteList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,15 @@ interface Props {
sortOption: string;
regionOption: string;
isSelectedTab: boolean;
onToggleReplaceLoginPageModal: () => void;
}

function DrinkVoteList({ searchText, sortOption, regionOption }: Props) {
function DrinkVoteList({
searchText,
sortOption,
regionOption,
onToggleReplaceLoginPageModal,
}: Props) {
const searchParams = useSearchParams();
const selectedTab = searchParams.get('selectedTab');

Expand All @@ -30,7 +36,11 @@ function DrinkVoteList({ searchText, sortOption, regionOption }: Props) {
return (
<Container>
{voteDrinkList.map((voteDrink, index) => (
<DrinkVoteItem key={`drinkVoteItem_${index}`} voteDrink={voteDrink} />
<DrinkVoteItem
key={`drinkVoteItem_${index}`}
voteDrink={voteDrink}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
))}
{selectedTab === 'drinkVote' && <div ref={subscribe} />}
</Container>
Expand Down
13 changes: 13 additions & 0 deletions apps/jurumarble/src/app/search/components/SearchContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
'use client';

import { useToggle } from '@monorepo/hooks';
import { useDebouncedCallback } from '@react-hookz/web';
import BottomBar from 'components/BottomBar';
import DivideLine from 'components/DivideLine';
import ReplaceLoginPageModal from 'components/ReplaceLoginPagemModal/ReplaceLoginPageModal';
import SearchInput from 'components/SearchInput';
import { Button } from 'components/button';
import { useCreateQueryString } from 'hooks/useCreateQueryString';
Expand Down Expand Up @@ -37,6 +39,8 @@ type TabList = (typeof TAB_LIST)[number]['id'];
*/

function SearchContainer() {
const [isReplaceLoginPageModal, onToggleReplaceLoginPageModal] = useToggle();

const router = useRouter();
const pathname = usePathname();
const searchParams = useSearchParams();
Expand Down Expand Up @@ -101,6 +105,7 @@ function SearchContainer() {
sortOption={drinkInfoSortOption}
regionOption={regionOption}
isSelectedTab={isSelectedTab('total')}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
<MoreButton
variant="outline"
Expand All @@ -123,6 +128,7 @@ function SearchContainer() {
sortOption={drinkVoteSortOption}
regionOption={regionOption}
isSelectedTab={isSelectedTab('total')}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
<MoreButton
variant="outline"
Expand Down Expand Up @@ -157,6 +163,7 @@ function SearchContainer() {
sortOption={drinkInfoSortOption}
regionOption={regionOption}
isSelectedTab={false}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
</>
),
Expand All @@ -182,6 +189,7 @@ function SearchContainer() {
sortOption={drinkVoteSortOption}
regionOption={regionOption}
isSelectedTab={isSelectedTab('total')}
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
</>
),
Expand Down Expand Up @@ -215,6 +223,11 @@ function SearchContainer() {
</TopSection>
{isSelectedTab('total') && <DivideLine />}
<BottomSection>{bottomSectionItem}</BottomSection>
{isReplaceLoginPageModal && (
<ReplaceLoginPageModal
onToggleReplaceLoginPageModal={onToggleReplaceLoginPageModal}
/>
)}
<BottomBar />
</>
);
Expand Down
5 changes: 4 additions & 1 deletion apps/jurumarble/src/app/stamp/components/DrinkItem.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { transitions } from 'lib/styles';
import { isLogin } from 'lib/utils/auth';
import Image from 'next/image';
import useDrinkStampService from 'services/useDrinkStampService';
import SvgStamp from 'src/assets/icons/components/IcStamp';
Expand All @@ -16,12 +17,14 @@ interface Props {
};
onClickReplaceDrinkInfo: (e: React.MouseEvent<HTMLButtonElement>) => void;
selectedDrinkList?: string[];
onToggleReplaceLoginPageModal: () => void;
}

function DrinkItem({
drinkInfo,
onClickReplaceDrinkInfo,
selectedDrinkList,
onToggleReplaceLoginPageModal,
}: Props) {
const { id, name, manufacturer, image } = drinkInfo;

Expand Down Expand Up @@ -52,7 +55,7 @@ function DrinkItem({
<StampWrapper
onClick={(e) => {
e.stopPropagation();
postDrinkEnjoy(id);
isLogin() ? postDrinkEnjoy(id) : onToggleReplaceLoginPageModal();
}}
>
<SvgStamp width={24} height={24} fill={stampColor} />
Expand Down
11 changes: 9 additions & 2 deletions apps/jurumarble/src/app/vote/[id]/components/ChipContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import NonWriterBox from 'app/vote/components/NonWriterBox';
import Chip from 'components/Chip';
import Path from 'lib/Path';
import { AorB } from 'lib/apis/vote';
import { isLogin } from 'lib/utils/auth';
import { formatDate } from 'lib/utils/formatDate';
import { useRouter } from 'next/navigation';
import { toast } from 'react-toastify';
Expand All @@ -27,6 +28,7 @@ interface Props {
postedUserId: number;
voteId: number;
select: AorB | null;
onToggleReplaceLoginPageModal: () => void;
}

const ChipContainer = ({
Expand All @@ -39,6 +41,7 @@ const ChipContainer = ({
isBookmark,
postedUserId,
select,
onToggleReplaceLoginPageModal,
}: Props) => {
const { userInfo } = useGetUserInfo();
const { onDelete } = useVoteDeleteService(voteId);
Expand Down Expand Up @@ -67,15 +70,19 @@ const ChipContainer = ({
<SvgIcBookmarkActive
width={26}
height={26}
onClick={() => mutateBookMark()}
onClick={() =>
isLogin() ? mutateBookMark() : onToggleReplaceLoginPageModal()
}
/>
</SVGWrapper>
) : (
<SVGWrapper>
<SvgIcBookmark
width={20}
height={20}
onClick={() => mutateBookMark()}
onClick={() =>
isLogin() ? mutateBookMark() : onToggleReplaceLoginPageModal()
}
/>
</SVGWrapper>
)}
Expand Down
Loading
Loading