From 8904cd9dba55ec1593e0e422273335e629df41fd Mon Sep 17 00:00:00 2001
From: aster <137767097+aster-void@users.noreply.github.com>
Date: Sun, 6 Apr 2025 00:53:10 +0900
Subject: [PATCH 1/6] wip
---
server/prisma/schema.prisma | 1 +
1 file changed, 1 insertion(+)
diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma
index 2f5779fb..0602ff13 100644
--- a/server/prisma/schema.prisma
+++ b/server/prisma/schema.prisma
@@ -17,6 +17,7 @@ model User {
grade Grade
hobby String
introduction String
+ wantToMatch Boolean @default(true)
// universityId String
// university University @relation(fields: [universityId], references: [university])
divisionId String
From 89aac232011e2c5a9e380136b2d3be1bd0cc2509 Mon Sep 17 00:00:00 2001
From: aster <137767097+aster-void@users.noreply.github.com>
Date: Tue, 8 Apr 2025 22:15:45 +0900
Subject: [PATCH 2/6] done?
---
common/zod/schema.ts | 2 ++
server/routes/community.ts | 8 +++++++-
web/messages/en.json | 1 +
web/src/app/[locale]/(auth)/settings/basic/page.tsx | 10 ++++++++++
web/src/app/[locale]/(auth)/settings/shared-class.ts | 1 +
web/src/app/[locale]/registration/page.tsx | 9 ++++++++-
web/src/features/format.ts | 1 +
web/src/features/settings/UserFormController.tsx | 2 ++
8 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/common/zod/schema.ts b/common/zod/schema.ts
index 96b99264..6b9c1aa7 100644
--- a/common/zod/schema.ts
+++ b/common/zod/schema.ts
@@ -47,6 +47,8 @@ const BaseUserSchema = z.object({
isForeignStudent: z.boolean().default(false),
grade: GradeSchema,
+ wantToMatch: z.boolean(),
+
hobby: HobbySchema,
introduction: IntroductionSchema,
});
diff --git a/server/routes/community.ts b/server/routes/community.ts
index 1416ad16..4c1b8903 100644
--- a/server/routes/community.ts
+++ b/server/routes/community.ts
@@ -16,17 +16,22 @@ const router = new Hono().get(
exchangeQuery: z.enum(["exchange", "japanese", "all"]).default("all"),
searchQuery: z.string().default(""),
marker: z.union([MarkerSchema, z.literal("notBlocked")]).optional(),
+ select: z.enum(["all"]).optional(),
}),
),
zValidator("header", z.object({ Authorization: z.string() })),
async (c) => {
const requester = await getUserID(c);
- const { except, page, exchangeQuery, searchQuery, marker: markerQuery } = c.req.valid("query");
+ const { except, page, exchangeQuery, searchQuery, marker: markerQuery, select } = c.req.valid("query");
const take = 15; //TODO: web側で指定できるようにする
const skip = (page - 1) * take;
const whereCondition: Prisma.UserWhereInput = {};
+ if (select !== "all") {
+ whereCondition.wantToMatch = true;
+ }
+
// 言語交換フィルター
if (exchangeQuery === "exchange") {
whereCondition.isForeignStudent = true;
@@ -111,6 +116,7 @@ const router = new Hono().get(
gender: true,
isForeignStudent: true,
imageUrl: true,
+ wantToMatch: true,
campus: {
select: { university: true, id: true, jaName: true, enName: true },
},
diff --git a/web/messages/en.json b/web/messages/en.json
index e9e80052..b9bc9197 100644
--- a/web/messages/en.json
+++ b/web/messages/en.json
@@ -69,6 +69,7 @@
"male": "Male",
"female": "Female",
"other": "Other",
+ "want-to-match": "Want to match",
"photo": "Photo",
"photoUpload": "Upload"
},
diff --git a/web/src/app/[locale]/(auth)/settings/basic/page.tsx b/web/src/app/[locale]/(auth)/settings/basic/page.tsx
index 4409d07a..b388cd6c 100644
--- a/web/src/app/[locale]/(auth)/settings/basic/page.tsx
+++ b/web/src/app/[locale]/(auth)/settings/basic/page.tsx
@@ -32,6 +32,16 @@ export default function Page() {
+
(null);
+ // biome-ignore lint: we don't need it
+ useEffect(() => {
+ ctx.setFormData((prev) => ({
+ ...prev,
+ wantToMatch: true,
+ }));
+ }, []);
return (
<>
diff --git a/web/src/features/format.ts b/web/src/features/format.ts
index d765e5e0..d9356c7e 100644
--- a/web/src/features/format.ts
+++ b/web/src/features/format.ts
@@ -35,6 +35,7 @@ export function formatCardUser(user: StructuredCardUser, locale: string): FlatCa
imageUrl: user.imageUrl ?? undefined,
grade: user.grade,
isForeignStudent: user.isForeignStudent,
+ wantToMatch: user.wantToMatch,
campus: getName(user.campus),
diff --git a/web/src/features/settings/UserFormController.tsx b/web/src/features/settings/UserFormController.tsx
index d3f71ac0..934d8d41 100644
--- a/web/src/features/settings/UserFormController.tsx
+++ b/web/src/features/settings/UserFormController.tsx
@@ -206,6 +206,7 @@ export const UserFormProvider = ({
query: {
except: me.id,
marker: "favorite",
+ select: "all",
},
});
@@ -228,6 +229,7 @@ export const UserFormProvider = ({
query: {
except: me.id,
marker: "blocked",
+ select: "all",
},
});
From 51255b5c65c0829f1515e25df9522d1213b531ba Mon Sep 17 00:00:00 2001
From: Yuki Kobayashi <137767097+aster-void@users.noreply.github.com>
Date: Tue, 8 Apr 2025 23:35:10 +0900
Subject: [PATCH 3/6] fix build
---
.gitignore | 2 ++
server/routes/users/index.ts | 1 +
web/src/features/format.ts | 1 +
3 files changed, 4 insertions(+)
diff --git a/.gitignore b/.gitignore
index b8e912b4..c82ddd58 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,5 @@ tsconfig.tsbuildinfo
/.direnv
/.envrc
/shell.nix
+
+server/node_modules/.cache
\ No newline at end of file
diff --git a/server/routes/users/index.ts b/server/routes/users/index.ts
index 40d8b3a6..9849491f 100644
--- a/server/routes/users/index.ts
+++ b/server/routes/users/index.ts
@@ -35,6 +35,7 @@ const router = new Hono()
imageUrl: true,
isForeignStudent: true,
grade: true,
+ wantToMatch: true,
hobby: true,
introduction: true,
diff --git a/web/src/features/format.ts b/web/src/features/format.ts
index d9356c7e..58101ab8 100644
--- a/web/src/features/format.ts
+++ b/web/src/features/format.ts
@@ -12,6 +12,7 @@ export function formatUser(user: StructuredUser, locale: string): FlatUser {
hobby: user.hobby,
introduction: user.introduction,
isForeignStudent: user.isForeignStudent,
+ wantToMatch: user.wantToMatch,
university: getName(user.campus.university),
division: getName(user.division),
From 3eb8da100f7e397f0ebf2dcbb0b9ad3c7f6fa0e9 Mon Sep 17 00:00:00 2001
From: Yuki Kobayashi <137767097+aster-void@users.noreply.github.com>
Date: Tue, 8 Apr 2025 23:39:48 +0900
Subject: [PATCH 4/6] update translations
---
web/messages/en.json | 2 +-
web/messages/ja.json | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/web/messages/en.json b/web/messages/en.json
index dcb1afc6..985a9014 100644
--- a/web/messages/en.json
+++ b/web/messages/en.json
@@ -74,7 +74,7 @@
"male": "Male",
"female": "Female",
"other": "Other",
- "want-to-match": "Want to match",
+ "want-to-match": "Want to match more?",
"photo": "Photo",
"photoUpload": "Upload"
},
diff --git a/web/messages/ja.json b/web/messages/ja.json
index 02ef7068..4ea4d95c 100644
--- a/web/messages/ja.json
+++ b/web/messages/ja.json
@@ -74,6 +74,7 @@
"male": "男性",
"female": "女性",
"other": "その他",
+ "want-to-match": "新規にマッチングしたいですか?",
"photo": "写真",
"photoUpload": "アップロード"
},
From 51e065cabb7f07d0330a01df736ff78765efece8 Mon Sep 17 00:00:00 2001
From: aster <137767097+aster-void@users.noreply.github.com>
Date: Thu, 10 Apr 2025 20:40:09 +0900
Subject: [PATCH 5/6] rename variable
---
server/routes/community.ts | 8 ++++----
web/src/app/[locale]/(auth)/community/page.tsx | 1 +
web/src/features/settings/UserFormController.tsx | 3 +--
web/src/hooks/useNormalizedPath.ts | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/server/routes/community.ts b/server/routes/community.ts
index 4c1b8903..6665b39e 100644
--- a/server/routes/community.ts
+++ b/server/routes/community.ts
@@ -16,20 +16,20 @@ const router = new Hono().get(
exchangeQuery: z.enum(["exchange", "japanese", "all"]).default("all"),
searchQuery: z.string().default(""),
marker: z.union([MarkerSchema, z.literal("notBlocked")]).optional(),
- select: z.enum(["all"]).optional(),
+ wantsToMatch: z.enum(["true"]).optional(),
}),
),
zValidator("header", z.object({ Authorization: z.string() })),
async (c) => {
const requester = await getUserID(c);
- const { except, page, exchangeQuery, searchQuery, marker: markerQuery, select } = c.req.valid("query");
+ const { except, page, exchangeQuery, searchQuery, marker: markerQuery, wantsToMatch } = c.req.valid("query");
const take = 15; //TODO: web側で指定できるようにする
const skip = (page - 1) * take;
const whereCondition: Prisma.UserWhereInput = {};
- if (select !== "all") {
- whereCondition.wantToMatch = true;
+ if (wantsToMatch) {
+ whereCondition.wantToMatch = wantsToMatch === "true";
}
// 言語交換フィルター
diff --git a/web/src/app/[locale]/(auth)/community/page.tsx b/web/src/app/[locale]/(auth)/community/page.tsx
index f5ef1e77..836dd146 100644
--- a/web/src/app/[locale]/(auth)/community/page.tsx
+++ b/web/src/app/[locale]/(auth)/community/page.tsx
@@ -101,6 +101,7 @@ export default function Page() {
exchangeQuery: query.exchange,
searchQuery: query.search,
marker: query.marker === "favorite" ? "favorite" : "notBlocked",
+ wantsToMatch: "true",
},
header: { Authorization },
},
diff --git a/web/src/features/settings/UserFormController.tsx b/web/src/features/settings/UserFormController.tsx
index 3b800a77..81fb7b2d 100644
--- a/web/src/features/settings/UserFormController.tsx
+++ b/web/src/features/settings/UserFormController.tsx
@@ -227,7 +227,7 @@ export const UserFormProvider = ({
query: {
except: me.id,
marker: "favorite",
- select: "all",
+ wantsToMatch: "ignore",
},
});
@@ -250,7 +250,6 @@ export const UserFormProvider = ({
query: {
except: me.id,
marker: "blocked",
- select: "all",
},
});
diff --git a/web/src/hooks/useNormalizedPath.ts b/web/src/hooks/useNormalizedPath.ts
index 00a9bb49..defa9fbe 100644
--- a/web/src/hooks/useNormalizedPath.ts
+++ b/web/src/hooks/useNormalizedPath.ts
@@ -1,4 +1,4 @@
-import { PATHNAME_LANG_PREFIX_PATTERN } from "@/consts";
+import { PATHNAME_LANG_PREFIX_PATTERN } from "@/consts.ts";
import { usePathname } from "next/navigation";
/**
From acd6dfebe99e9d29384377af84439f8e30734eb7 Mon Sep 17 00:00:00 2001
From: aster <137767097+aster-void@users.noreply.github.com>
Date: Thu, 10 Apr 2025 21:49:48 +0900
Subject: [PATCH 6/6] fix reg style and use schema default
---
common/zod/schema.ts | 2 +-
.../settings/components/SubmitButton.tsx | 41 +++++++++++--------
web/src/app/[locale]/registration/page.tsx | 11 +----
.../app/[locale]/registration/step2/page.tsx | 8 ++--
4 files changed, 30 insertions(+), 32 deletions(-)
diff --git a/common/zod/schema.ts b/common/zod/schema.ts
index d79718f1..626f0a6c 100644
--- a/common/zod/schema.ts
+++ b/common/zod/schema.ts
@@ -49,7 +49,7 @@ const BaseUserSchema = z.object({
isForeignStudent: z.boolean().default(false),
grade: GradeSchema,
- wantToMatch: z.boolean(),
+ wantToMatch: z.boolean().default(true),
hobby: HobbySchema,
introduction: IntroductionSchema,
diff --git a/web/src/app/[locale]/(auth)/settings/components/SubmitButton.tsx b/web/src/app/[locale]/(auth)/settings/components/SubmitButton.tsx
index 847e20c1..862f5724 100644
--- a/web/src/app/[locale]/(auth)/settings/components/SubmitButton.tsx
+++ b/web/src/app/[locale]/(auth)/settings/components/SubmitButton.tsx
@@ -4,26 +4,31 @@ import { useTranslations } from "next-intl";
import { styles } from "../shared-class.ts";
export function SubmitButton({ status }: { status: Status }) {
- const t = useTranslations("settings");
return (
-
+
);
}
+export function SubmitButtonItem({ status }: { status: Status }) {
+ const t = useTranslations("settings");
+ return (
+
+ );
+}
diff --git a/web/src/app/[locale]/registration/page.tsx b/web/src/app/[locale]/registration/page.tsx
index 9b9ab48b..f01b5cec 100644
--- a/web/src/app/[locale]/registration/page.tsx
+++ b/web/src/app/[locale]/registration/page.tsx
@@ -9,7 +9,7 @@ import { NAME_MAX_LENGTH, Part1RegistrationSchema } from "common/zod/schema";
import { useTranslations } from "next-intl";
import { useLocale } from "next-intl";
import { useRouter } from "next/navigation";
-import { useEffect, useState } from "react";
+import { useState } from "react";
export default function Page() {
const router = useRouter();
@@ -19,13 +19,6 @@ export default function Page() {
const [isSubmitting, setIsSubmitting] = useState(false);
const [errors, setErrors] = useState
(null);
const toast = useToast();
- // biome-ignore lint: we don't need it
- useEffect(() => {
- ctx.setFormData((prev) => ({
- ...prev,
- wantToMatch: true,
- }));
- }, []);
return (
<>
@@ -121,7 +114,7 @@ export default function Page() {
tabIndex={0}
onKeyDown={(e) => {
console.log(e.key);
- if (e.key === "Enter") {
+ if (e.key === "Enter" || e.key === "Space") {
document.getElementById("image-upload")?.click();
}
}}
diff --git a/web/src/app/[locale]/registration/step2/page.tsx b/web/src/app/[locale]/registration/step2/page.tsx
index 60769416..8121144f 100644
--- a/web/src/app/[locale]/registration/step2/page.tsx
+++ b/web/src/app/[locale]/registration/step2/page.tsx
@@ -11,7 +11,7 @@ import { CreateUserSchema, HOBBY_MAX_LENGTH, INTRO_MAX_LENGTH } from "common/zod
import { useTranslations } from "next-intl";
import { useLocale } from "next-intl";
import { useEffect, useState } from "react";
-import { SubmitButton } from "../../(auth)/settings/components/SubmitButton.tsx";
+import { SubmitButtonItem } from "../../(auth)/settings/components/SubmitButton.tsx";
export default function Page() {
const t = useTranslations();
@@ -205,12 +205,12 @@ export default function Page() {
/>
-