|
1 | 1 | import React, { useState, useEffect } from 'react'; |
2 | 2 | import { useSelector } from 'react-redux'; |
| 3 | +import { useParams } from 'react-router'; |
3 | 4 | import R from 'ramda'; |
4 | 5 |
|
5 | 6 | import HorizontalHeader from '_organisms/HorizontalHeader'; |
6 | 7 | import HorizontalContent from '_organisms/HorizontalContent'; |
7 | 8 | import PromiseItemArray from '_utils/promiseArray'; |
8 | 9 | import { snakeToCamelCase } from 'json-style-converter/es5'; |
9 | 10 | import { getItemByItemId } from '_api/item'; |
| 11 | +import { object } from 'prop-types'; |
10 | 12 |
|
11 | | -export default function BookmarkPage() { |
| 13 | +export default function ItemListPage() { |
12 | 14 | const { user } = useSelector(R.pick(['user'])); |
13 | | - const [bookmarkObjects, setBookmarkObjects] = useState({ cabinet: [], document: [], card: [] }); |
| 15 | + const { userItem } = useSelector(R.pick(['userItem'])); |
| 16 | + const [title, setTitle] = useState(''); |
| 17 | + const [itemObjects, setItemObjects] = useState({ cabinet: [], document: [], card: [] }); |
14 | 18 | const [loading, setLoading] = useState(true); |
15 | | - const bookmarkArrays = user.bookmarks; |
| 19 | + const { path } = useParams(); |
16 | 20 |
|
17 | 21 | useEffect(() => { |
18 | | - Promise.all(bookmarkArrays.map((elem) => getItemByItemId(elem))).then((objectArray) => { |
| 22 | + let array; |
| 23 | + switch (path) { |
| 24 | + case 'bookmarks': |
| 25 | + setTitle('북마크'); |
| 26 | + array = user.bookmarks; |
| 27 | + break; |
| 28 | + case 'myitems': |
| 29 | + setTitle('내가 작성한 문서'); |
| 30 | + array = userItem; |
| 31 | + break; |
| 32 | + default: |
| 33 | + array = []; |
| 34 | + } |
| 35 | + Promise.all(array.map((elem) => { |
| 36 | + if (typeof elem === 'object') { |
| 37 | + return elem; |
| 38 | + } |
| 39 | + return getItemByItemId(elem); |
| 40 | + })).then((objectArray) => { |
19 | 41 | const camelObjectArray = snakeToCamelCase(objectArray); |
20 | | - setBookmarkObjects({ |
| 42 | + setItemObjects({ |
21 | 43 | cabinet: camelObjectArray.filter((elem) => elem.type === 'cabinet'), |
22 | 44 | document: camelObjectArray.filter((elem) => elem.type === 'document'), |
23 | 45 | card: camelObjectArray.filter((elem) => elem.type === 'card'), |
24 | 46 | }); |
25 | 47 | setLoading(false); |
26 | 48 | }); |
27 | | - }, []); |
| 49 | + }, [path, user]); |
28 | 50 |
|
29 | 51 | return !loading && ( |
30 | 52 | <div className="recommend-page"> |
31 | 53 | <div className="recommend-page-header"> |
32 | | - 북마크 |
| 54 | + {title} |
33 | 55 | </div> |
34 | 56 | <div className="recommend-container"> |
35 | 57 |
|
36 | 58 | { |
37 | | - (bookmarkObjects.cabinet === []) |
38 | | - ? '북마크가 없습니다.' |
| 59 | + (itemObjects.cabinet.length === 0) |
| 60 | + ? '' |
39 | 61 | : ( |
40 | 62 | <div className="recommend-block"> |
41 | 63 | <HorizontalHeader type="cabinet" /> |
42 | 64 | <hr /> |
43 | | - <HorizontalContent type="cabinet" cardArray={bookmarkObjects.cabinet} /> |
| 65 | + <HorizontalContent type="cabinet" cardArray={itemObjects.cabinet} /> |
44 | 66 | </div> |
45 | 67 | ) |
46 | 68 | } |
47 | 69 | { |
48 | | - (bookmarkObjects.document === []) |
49 | | - ? '북마크가 없습니다.' |
| 70 | + (itemObjects.document.length === 0) |
| 71 | + ? '' |
50 | 72 | : ( |
51 | 73 | <div className="recommend-block"> |
52 | 74 | <HorizontalHeader type="document" /> |
53 | 75 | <hr /> |
54 | | - <HorizontalContent type="document" cardArray={bookmarkObjects.document} /> |
| 76 | + <HorizontalContent type="document" cardArray={itemObjects.document} /> |
55 | 77 | </div> |
56 | 78 | ) |
57 | 79 | } |
58 | 80 | { |
59 | | - (bookmarkObjects.card === []) |
60 | | - ? '북마크가 없습니다.' |
| 81 | + (itemObjects.card.length === 0) |
| 82 | + ? '' |
61 | 83 | : ( |
62 | 84 | <div className="recommend-block"> |
63 | 85 | <HorizontalHeader type="card" /> |
64 | 86 | <hr /> |
65 | | - <HorizontalContent type="card" cardArray={bookmarkObjects.card} /> |
| 87 | + <HorizontalContent type="card" cardArray={itemObjects.card} /> |
66 | 88 | </div> |
67 | 89 | ) |
68 | 90 | } |
|
0 commit comments