|
|
@@ -3,11 +3,14 @@
|
|
|
import './style.scss';
|
|
|
import { useState, useEffect } from 'react';
|
|
|
import Link from 'next/link';
|
|
|
-import { fetchApi, throwError, formatDate } from '@/lib/utils/client';
|
|
|
+import { fetchApi, throwError, getDateTime } from '@/lib/utils/client';
|
|
|
import type { MyPostsResponse } from '@/types/response/account/myPosts';
|
|
|
import Loading from '@/app/component/Loading';
|
|
|
import Pagination from '@/app/component/Pagination';
|
|
|
import NavTabs from '../navTabs';
|
|
|
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
+import { faThumbsUp, faEye } from '@fortawesome/free-regular-svg-icons';
|
|
|
+import { faLock, faReply, faFloppyDisk, faImage, faVideo } from '@fortawesome/free-solid-svg-icons';
|
|
|
|
|
|
export default function MyPosts()
|
|
|
{
|
|
|
@@ -46,66 +49,77 @@ export default function MyPosts()
|
|
|
{ loading && <Loading /> }
|
|
|
|
|
|
<h1>작성 게시글</h1>
|
|
|
- <table className="table-auto max-2xl:w-full 2xl:w-[1000px]">
|
|
|
- <caption>
|
|
|
- <div>
|
|
|
- 합계: {data.total}
|
|
|
- </div>
|
|
|
- </caption>
|
|
|
- <colgroup>
|
|
|
- <col width="8%"/>
|
|
|
- <col width="12%"/>
|
|
|
- <col />
|
|
|
- <col width="10%"/>
|
|
|
- <col width="10%"/>
|
|
|
- <col width="10%"/>
|
|
|
- <col width="15%"/>
|
|
|
- </colgroup>
|
|
|
- <thead>
|
|
|
- <tr>
|
|
|
- <th>번호</th>
|
|
|
- <th>게시판</th>
|
|
|
- <th>제목</th>
|
|
|
- <th>조회</th>
|
|
|
- <th>추천</th>
|
|
|
- <th>댓글</th>
|
|
|
- <th>작성일</th>
|
|
|
- </tr>
|
|
|
- </thead>
|
|
|
- <tbody>
|
|
|
+ <div className="summary">합계: {data.total}</div>
|
|
|
+
|
|
|
+ <section className="mypage-list">
|
|
|
+ <article>
|
|
|
+ <ul>
|
|
|
+ <li>번호</li>
|
|
|
+ <li>게시판</li>
|
|
|
+ <li>제목</li>
|
|
|
+ <li>조회</li>
|
|
|
+ <li>추천</li>
|
|
|
+ <li>댓글</li>
|
|
|
+ <li>작성일</li>
|
|
|
+ </ul>
|
|
|
+ </article>
|
|
|
+ <article>
|
|
|
{data.list.length > 0 ? (
|
|
|
data.list.map((row) => (
|
|
|
- <tr key={row.id} className="hover:bg-gray-100">
|
|
|
- <td>{row.num}</td>
|
|
|
- <td>{row.boardName}</td>
|
|
|
- <td className="text-left">
|
|
|
- <Link href={`/post/${row.id}`}>{row.subject}</Link>
|
|
|
- </td>
|
|
|
- <td>{row.views}</td>
|
|
|
- <td>{row.likes}</td>
|
|
|
- <td>{row.comments}</td>
|
|
|
- <td>{formatDate(row.createdAt)}</td>
|
|
|
- </tr>
|
|
|
+ <section key={row.id}>
|
|
|
+ {/* PC */}
|
|
|
+ <ol>
|
|
|
+ <li>{row.num}</li>
|
|
|
+ <li>{row.boardName}</li>
|
|
|
+ <li>
|
|
|
+ {row.isSecret && <FontAwesomeIcon icon={faLock} />}
|
|
|
+ {row.isReply && <FontAwesomeIcon icon={faReply} />}
|
|
|
+ <Link href={`/post/${row.id}`}>
|
|
|
+ <em>{row.subject} {row.comments > 0 && <span>[{row.comments}]</span>}</em>
|
|
|
+ {row.files > 0 && <FontAwesomeIcon icon={faFloppyDisk} />}
|
|
|
+ {row.images > 0 && <FontAwesomeIcon icon={faImage} />}
|
|
|
+ {row.medias > 0 && <FontAwesomeIcon icon={faVideo} />}
|
|
|
+ </Link>
|
|
|
+ </li>
|
|
|
+ <li>{row.views}</li>
|
|
|
+ <li>{row.likes}</li>
|
|
|
+ <li>{row.comments}</li>
|
|
|
+ <li>{getDateTime(row.createdAt)}</li>
|
|
|
+ </ol>
|
|
|
+
|
|
|
+ {/* Mobile */}
|
|
|
+ <dl hidden>
|
|
|
+ <dt>
|
|
|
+ {row.isSecret && <FontAwesomeIcon icon={faLock} />}
|
|
|
+ {row.isReply && <FontAwesomeIcon icon={faReply} />}
|
|
|
+ <Link href={`/post/${row.id}`}>
|
|
|
+ <em>{row.subject} {row.comments > 0 && <span>[{row.comments}]</span>}</em>
|
|
|
+ {row.files > 0 && <FontAwesomeIcon icon={faFloppyDisk} />}
|
|
|
+ {row.images > 0 && <FontAwesomeIcon icon={faImage} />}
|
|
|
+ {row.medias > 0 && <FontAwesomeIcon icon={faVideo} />}
|
|
|
+ </Link>
|
|
|
+ </dt>
|
|
|
+ <dd>
|
|
|
+ <ul>
|
|
|
+ <li>{row.boardName}</li>
|
|
|
+ <li><FontAwesomeIcon icon={faEye} /> {row.views}</li>
|
|
|
+ <li><FontAwesomeIcon icon={faThumbsUp} /> {row.likes}</li>
|
|
|
+ <li>{getDateTime(row.createdAt)}</li>
|
|
|
+ </ul>
|
|
|
+ </dd>
|
|
|
+ </dl>
|
|
|
+ </section>
|
|
|
))
|
|
|
) : (
|
|
|
- <tr>
|
|
|
- <td colSpan={7} className="border p-2 text-center text-gray-500">
|
|
|
- 작성한 게시글이 없습니다.
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
+ <p className="empty">작성한 게시글이 없습니다.</p>
|
|
|
)}
|
|
|
- </tbody>
|
|
|
- {data.list.length > 0 && (
|
|
|
- <tfoot>
|
|
|
- <tr>
|
|
|
- <td colSpan={7}>
|
|
|
- <Pagination total={data.total} page={page} perPage={20} onChange={setPage} />
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- </tfoot>
|
|
|
- )}
|
|
|
- </table>
|
|
|
+ </article>
|
|
|
+ </section>
|
|
|
+
|
|
|
+ {data.list.length > 0 && (
|
|
|
+ <Pagination total={data.total} page={page} perPage={20} onChange={setPage} />
|
|
|
+ )}
|
|
|
</div>
|
|
|
</>
|
|
|
);
|
|
|
-}
|
|
|
+}
|