1- import { Container , Stack } from '@mui/material' ;
2- import R from 'ramda' ;
3- import React , { useEffect , useState } from 'react' ;
4- import { useDispatch , useSelector } from 'react-redux' ;
5- import { useLocation } from 'react-router' ;
6- import TypeIcon from '_atoms/TypeIcon' ;
7- import Item from '_molecules/Item' ;
8- import { attemptGetItem } from '_thunks/item' ;
9-
10- const ItemList = ( { items, title, iconType } ) => (
11- < div className = "item-list" >
12- < div className = "item-list-header" >
13- < TypeIcon type = { iconType } size = { 1.5 } opacity = { 0.7 } />
14- < div className = "item-list-title" > { title } </ div >
15- </ div >
16- < Stack direction = "row" className = "item-list-content" spacing = { 2 } >
17- { items != null ? (
18- items . length > 0 ? (
19- items . map ( ( item ) => < Item key = { item . _id } item = { item } /> )
20- ) : (
21- < div > 표시할 항목이 없습니다.</ div >
22- )
23- ) : (
24- < div > Loading...</ div >
25- ) }
26- </ Stack >
27- </ div >
28- ) ;
1+ import R from "ramda" ;
2+ import React , { useEffect , useState } from "react" ;
3+ import { useDispatch , useSelector } from "react-redux" ;
4+ import { useLocation } from "react-router" ;
5+ import ItemListSection from "_frontend/components/templates/ItemListSection" ;
6+ import { attemptGetItem } from "_thunks/item" ;
297
308export default function ItemListPage ( ) {
31- const { user } = useSelector ( R . pick ( [ ' user' ] ) ) ;
32- const { itemCache } = useSelector ( R . pick ( [ ' itemCache' ] ) ) ;
9+ const { user } = useSelector ( R . pick ( [ " user" ] ) ) ;
10+ const { itemCache } = useSelector ( R . pick ( [ " itemCache" ] ) ) ;
3311
3412 const dispatch = useDispatch ( ) ;
3513
36- const [ title , setTitle ] = useState ( '' ) ;
14+ const [ title , setTitle ] = useState ( "" ) ;
3715 const [ items , setItems ] = useState ( null ) ;
3816 const { pathname } = useLocation ( ) ;
3917
4018 const addItem = ( item ) => {
41- console . log ( ' adding item' , item , ' previous item' , items ) ;
19+ console . log ( " adding item" , item , " previous item" , items ) ;
4220 const currentItems = items != null ? items : [ ] ;
4321 setItems ( [ ...currentItems , item ] ) ;
4422 } ;
4523
4624 useEffect ( ( ) => {
4725 let array = [ ] ;
4826 switch ( pathname ) {
49- case ' /bookmarks' :
50- setTitle ( ' 북마크' ) ;
27+ case " /bookmarks" :
28+ setTitle ( " 북마크" ) ;
5129 array = user . bookmarks ;
5230 break ;
53- case ' /recents' :
54- setTitle ( ' 최근에 본 문서' ) ;
55- const localStorageRecents = JSON . parse ( localStorage . getItem ( ' recents' ) ) ;
31+ case " /recents" :
32+ setTitle ( " 최근에 본 문서" ) ;
33+ const localStorageRecents = JSON . parse ( localStorage . getItem ( " recents" ) ) ;
5634 array = localStorageRecents != null ? localStorageRecents : [ ] ;
5735 break ;
58- case '/drafts' :
59- setTitle ( '임시저장한 문서' ) ;
60- array = Object . keys ( itemCache ) . map ( ( itemId ) => itemCache [ itemId ] ) . filter (
61- ( item ) => item . owner . _id === user . _id && item . status === 'draft' ,
62- ) ;
36+ case "/drafts" :
37+ setTitle ( "임시저장한 문서" ) ;
38+ array = Object . keys ( itemCache )
39+ . map ( ( itemId ) => itemCache [ itemId ] )
40+ . filter (
41+ ( item ) => item . owner . _id === user . _id && item . status === "draft"
42+ ) ;
6343 break ;
6444 default :
6545 array = [ ] ;
@@ -78,20 +58,5 @@ export default function ItemListPage() {
7858 setItems ( cachedItems ) ;
7959 } , [ pathname , user ] ) ;
8060
81- const cabinetItems = items != null ? items . filter ( ( item ) => item . type === 'cabinet' ) : null ;
82- const documentItems = items != null ? items . filter ( ( item ) => item . type === 'document' ) : null ;
83- const cardItems = items != null ? items . filter ( ( item ) => item . type === 'card' ) : null ;
84-
85- return items != null ? (
86- < Container maxWidth = "md" >
87- < Stack spacing = { 1 } className = "item-list-page" sx = { { py : 4 } } >
88- < div className = "item-list-page-title" > { title } </ div >
89- < ItemList items = { cabinetItems } title = "서랍" iconType = "cabinet" />
90- < ItemList items = { documentItems } title = "문서" iconType = "document" />
91- < ItemList items = { cardItems } title = "카드" iconType = "card" />
92- </ Stack >
93- </ Container >
94- ) : (
95- < div > Loading...</ div >
96- ) ;
61+ return < ItemListSection title = { title } items = { items } /> ;
9762}
0 commit comments