From 98d514d29cff73c772de992f15569dd9e850e4f4 Mon Sep 17 00:00:00 2001 From: Naoki Date: Sat, 13 Jan 2024 01:24:58 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E3=83=88=E3=83=83=E3=83=97=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/app/route.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/routes/app/route.tsx b/app/routes/app/route.tsx index 9eafddf..aed0f3c 100644 --- a/app/routes/app/route.tsx +++ b/app/routes/app/route.tsx @@ -7,7 +7,7 @@ import Header from "./components/header"; import Footer from "./components/footer"; /** - * トップページのメタ情報を取得する。 + * トップページのメタ情報を設定する。 * @returns トップページのメタ情報。 */ export const meta: MetaFunction = () => { From 4d51e04a320e04023c7de33451d7047f6debe99f Mon Sep 17 00:00:00 2001 From: Naoki Date: Sat, 13 Jan 2024 02:32:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=82=92=E6=8A=95=E7=A8=BF=E3=81=99=E3=82=8B=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app._index/components/post-entry.tsx | 2 +- app/routes/app._index/route.tsx | 10 +- app/routes/app.post-message/route.tsx | 94 +++++++++++++++++++ tests/routes/app._index/route.spec.ts | 17 +++- tests/routes/app.post-message/route.spec.ts | 53 +++++++++++ 5 files changed, 172 insertions(+), 4 deletions(-) create mode 100644 app/routes/app.post-message/route.tsx create mode 100644 tests/routes/app.post-message/route.spec.ts diff --git a/app/routes/app._index/components/post-entry.tsx b/app/routes/app._index/components/post-entry.tsx index abb9dfb..a58d702 100644 --- a/app/routes/app._index/components/post-entry.tsx +++ b/app/routes/app._index/components/post-entry.tsx @@ -9,7 +9,7 @@ export default function PostEntry() { const snsUser = useSnsUser(); return ( - +

{snsUser.name}

投稿

diff --git a/app/routes/app._index/route.tsx b/app/routes/app._index/route.tsx index fee839b..6ef2a94 100644 --- a/app/routes/app._index/route.tsx +++ b/app/routes/app._index/route.tsx @@ -21,7 +21,15 @@ export const loader = async ({ const cookieHeader = request.headers.get("Cookie"); const cookie = (await newlyPostedPostCookie.parse(cookieHeader)) || {}; const postContents: PostContent[] = await context.latestPostsLoader.getLatestPosts("0"); - if (Object.keys(cookie).length > 0 && cookie.isPosted) { + if (cookie.isPosted) { + const userPostContent: PostContent = { + id: "userPost", + createdAt: new Date(), + releaseVersion: cookie.releaseVersion, + tag: cookie.tag, + content: cookie.content, + }; + postContents.unshift(userPostContent); return json(postContents); } return json(postContents); diff --git a/app/routes/app.post-message/route.tsx b/app/routes/app.post-message/route.tsx new file mode 100644 index 0000000..37ec41e --- /dev/null +++ b/app/routes/app.post-message/route.tsx @@ -0,0 +1,94 @@ +import { ActionFunctionArgs, MetaFunction, redirect } from "@netlify/remix-runtime"; +import { Form } from "@remix-run/react"; +import { newlyPostedPostCookie } from "../../cookies.server"; + +/** + * メッセージ投稿ページのメタ情報を設定する。 + * @returns メッセージ投稿ページのメタ情報。 + */ +export const meta: MetaFunction = () => { + return [ + { title: "メッセージを投稿する" }, + { name: "description", content: "FF14SNSのメッセージ投稿ページです。" }, + ]; +} + +/** + * メッセージを投稿するアクション。 + * @param request リクエスト。 + * @param context コンテキスト。 + * @returns メッセージを投稿するアクション。 + */ +export const action = async ({ + request, + context, +}: ActionFunctionArgs) => { + // フォームデータを取得する。 + const formData = await request.formData(); + const releaseVersion = formData.get("releaseVersion"); + const tag = formData.get("tag"); + const content = formData.get("content"); + + // 投稿を保存する。 + const cookie = { + releaseVersion: releaseVersion, + tag: tag, + content: content, + isPosted: true, + }; + return redirect("/app", { + headers: { + "Set-Cookie": await newlyPostedPostCookie.serialize(cookie), + }, + }); +} + +/** + * メッセージ投稿ページ。 + * @returns メッセージ投稿ページ。 + */ +export default function PostMessage() { + const releaseVersions = [ + "パッチ5", + "パッチ4", + "パッチ3", + "パッチ2", + "パッチ1", + ]; + const getReleaseVersionOptions = () => { + return ; + } + + const tags = [ + "タグ1", + "タグ2", + "タグ3", + "タグ4", + ]; + const getTagOptions = () => { + return ; + } + + return ( +
+
+ {getReleaseVersionOptions()} + {getTagOptions()} +
+
+