Comments on plays
- Anyone who can see a play can read its comments; the player and the people they follow can write. The author, the player and admins can delete; comments can be reported (admins see the text). - Notifications: "commented on" for the player, "replied on" for earlier commenters, each with its own setting. Reaction and comment notifications now open the play. - A 💬 chip with the count next to reactions on the feed and recent plays, opening the thread on the app (/play/[id]) and the website. Threads refresh every few seconds while open. - Blocking removes comments between the two people. Plays with comments survive history trimming. - Privacy page updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011Y2iUsKEWDuRGjK5FPmcUP
This commit is contained in:
@@ -53,7 +53,7 @@ export const updateMeSchema = z.object({
|
||||
.nullable()
|
||||
.optional(),
|
||||
notifyPrefs: z
|
||||
.object({ reaction: z.boolean(), follow: z.boolean(), share: z.boolean() })
|
||||
.object({ reaction: z.boolean(), comment: z.boolean(), reply: z.boolean(), follow: z.boolean(), share: z.boolean() })
|
||||
.partial()
|
||||
.optional(),
|
||||
/** Mark onboarding as finished. */
|
||||
@@ -112,6 +112,12 @@ export const REPORT_REASON_LABELS: Record<ReportReason, string> = {
|
||||
impersonation: 'Pretending to be someone else',
|
||||
other: 'Something else',
|
||||
};
|
||||
export const COMMENT_MAX_LENGTH = 500;
|
||||
export const commentSchema = z.object({
|
||||
body: z.string().trim().min(1, 'Write something first').max(COMMENT_MAX_LENGTH, `Keep it under ${COMMENT_MAX_LENGTH} characters`),
|
||||
});
|
||||
export type CommentInput = z.infer<typeof commentSchema>;
|
||||
|
||||
export const reportSchema = z.object({
|
||||
reason: z.enum(REPORT_REASONS),
|
||||
note: z.string().trim().max(500).nullish(),
|
||||
|
||||
Reference in New Issue
Block a user