diff --git a/src/app/board/[boardId]/_components/Header/SelectModeHeader.tsx b/src/app/board/[boardId]/_components/Header/SelectModeHeader.tsx index 7577c62..84005f5 100644 --- a/src/app/board/[boardId]/_components/Header/SelectModeHeader.tsx +++ b/src/app/board/[boardId]/_components/Header/SelectModeHeader.tsx @@ -4,15 +4,21 @@ import { useSelect } from '@/app/board/[boardId]/_contexts/SelectModeContext' import { useBoard } from '@/app/board/[boardId]/_contexts/BoardContext' import { twMerge } from 'tailwind-merge' import { getBoardStyle } from '@/lib/utils/board' +import BackIcon from 'public/icons/arrow_back_ios.svg' const SelectModeHeader = () => { - const { selectedIds, MAX_SELECT_COUNT } = useSelect() + const { selectedIds, MAX_SELECT_COUNT, setIsSelectMode } = useSelect() const { board } = useBoard() const maxLength = Math.min(board.items.length, MAX_SELECT_COUNT) const { selectCountClassName, titleClassName } = getBoardStyle(board) + const toUnselectMode = () => { + setIsSelectMode(false) + } + return (
} title={

꾸미고 싶은 폴라로이드를 골라주세요

diff --git a/src/app/board/[boardId]/_contexts/SelectModeContext.tsx b/src/app/board/[boardId]/_contexts/SelectModeContext.tsx index 7b7a940..67f64e4 100644 --- a/src/app/board/[boardId]/_contexts/SelectModeContext.tsx +++ b/src/app/board/[boardId]/_contexts/SelectModeContext.tsx @@ -1,6 +1,7 @@ 'use client' -import { createContext, ReactNode, useContext, useMemo, useState } from 'react' +import { createContext, ReactNode, useContext, useMemo } from 'react' +import { usePathname, useRouter, useSearchParams } from 'next/navigation' interface SelectContextProps { isSelectMode: boolean @@ -23,18 +24,30 @@ export const SelectContextProvider = ({ }: { children: ReactNode }) => { - const [isSelectMode, setIsSelectMode] = useState(false) - const [selectedIds, setSelectedIds] = useState([]) + const searchParams = useSearchParams() + const router = useRouter() + const pathname = usePathname() + const isSelectMode = searchParams.get('isSelectMode') === 'true' + const setIsSelectMode = (mode: boolean) => { + router.push(`${pathname}?isSelectMode=${mode}`) + } + + const selectedIds = searchParams.getAll('selectedId').map((id) => Number(id)) const addSelectedId = (id: number) => { if (selectedIds.length === 9) { return } - setSelectedIds((prev) => [...prev, id]) + + const params = new URLSearchParams(searchParams.toString()) + params.append('selectedId', id.toString()) + router.push(`${pathname}?${params}`) } const removeSelectedId = (id: number) => { - setSelectedIds((prev) => prev.filter((selectedId) => selectedId !== id)) + const params = new URLSearchParams(searchParams.toString()) + params.delete('selectedId', id.toString()) + router.push(`${pathname}?${params}`) } const toggleSelectedId = (id: number) => {