v3: code quality pass
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
import React, { useMemo, useRef, useState } from "react";
|
||||
import { Link } from "react-router";
|
||||
import { API_URL } from "../config/api.ts";
|
||||
import type { Comment, RawComment, User } from "../model.ts";
|
||||
import { deserializeComment } from "../model.ts";
|
||||
import type {
|
||||
Comment,
|
||||
CreateCommentRequest,
|
||||
RawComment,
|
||||
UpdateCommentRequest,
|
||||
User,
|
||||
} from "../model.ts";
|
||||
import { deserializeComment, parseAPIResponse } from "../model.ts";
|
||||
import { Avatar } from "./Avatar.tsx";
|
||||
import { Markdown } from "./Markdown.tsx";
|
||||
import { TextEditor, type TextEditorHandle } from "./TextEditor.tsx";
|
||||
@@ -69,7 +75,7 @@ function CommentNode({
|
||||
|
||||
const children = tree.get(comment.id) ?? [];
|
||||
|
||||
async function handleReply(e?: React.FormEvent) {
|
||||
async function handleReply(e?: React.SubmitEvent) {
|
||||
e?.preventDefault();
|
||||
if (!replyBody.trim() || !token) return;
|
||||
setSubmitting(true);
|
||||
@@ -81,15 +87,20 @@ function CommentNode({
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: JSON.stringify({ body: replyBody, parentId: comment.id }),
|
||||
body: JSON.stringify(
|
||||
{
|
||||
body: replyBody,
|
||||
parentId: comment.id,
|
||||
} satisfies CreateCommentRequest,
|
||||
),
|
||||
});
|
||||
const data = await res.json();
|
||||
const data = parseAPIResponse<RawComment>(await res.json());
|
||||
if (data.success) {
|
||||
onCommentCreated(deserializeComment(data.data as RawComment));
|
||||
onCommentCreated(deserializeComment(data.data));
|
||||
setReplyBody("");
|
||||
setReplyOpen(false);
|
||||
} else {
|
||||
setReplyError(data.error?.message ?? "Failed to post reply.");
|
||||
setReplyError(data.error.message);
|
||||
}
|
||||
} catch {
|
||||
setReplyError("Could not reach the server. Please try again.");
|
||||
@@ -109,7 +120,7 @@ function CommentNode({
|
||||
}
|
||||
}
|
||||
|
||||
async function handleEditSave(e?: React.FormEvent) {
|
||||
async function handleEditSave(e?: React.SubmitEvent) {
|
||||
e?.preventDefault();
|
||||
if (!editBody.trim() || !token) return;
|
||||
setEditSubmitting(true);
|
||||
@@ -121,14 +132,14 @@ function CommentNode({
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: JSON.stringify({ body: editBody }),
|
||||
body: JSON.stringify({ body: editBody } satisfies UpdateCommentRequest),
|
||||
});
|
||||
const data = await res.json();
|
||||
const data = parseAPIResponse<RawComment>(await res.json());
|
||||
if (data.success) {
|
||||
onCommentUpdated(deserializeComment(data.data as RawComment));
|
||||
onCommentUpdated(deserializeComment(data.data));
|
||||
setEditOpen(false);
|
||||
} else {
|
||||
setEditError(data.error?.message ?? "Failed to save edit.");
|
||||
setEditError(data.error.message);
|
||||
}
|
||||
} catch {
|
||||
setEditError("Could not reach the server. Please try again.");
|
||||
@@ -383,7 +394,7 @@ export function CommentThread({
|
||||
const tree = useMemo(() => buildTree(comments), [comments]);
|
||||
const roots = tree.get("root") ?? [];
|
||||
|
||||
async function handleTopLevelSubmit(e?: React.FormEvent) {
|
||||
async function handleTopLevelSubmit(e?: React.SubmitEvent) {
|
||||
e?.preventDefault();
|
||||
if (!topLevelBody.trim() || !token) return;
|
||||
setSubmitting(true);
|
||||
@@ -395,14 +406,16 @@ export function CommentThread({
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: JSON.stringify({ body: topLevelBody }),
|
||||
body: JSON.stringify(
|
||||
{ body: topLevelBody } satisfies CreateCommentRequest,
|
||||
),
|
||||
});
|
||||
const data = await res.json();
|
||||
const data = parseAPIResponse<RawComment>(await res.json());
|
||||
if (data.success) {
|
||||
onCommentCreated(deserializeComment(data.data as RawComment));
|
||||
onCommentCreated(deserializeComment(data.data));
|
||||
setTopLevelBody("");
|
||||
} else {
|
||||
setTopLevelError(data.error?.message ?? "Failed to post comment.");
|
||||
setTopLevelError(data.error.message);
|
||||
}
|
||||
} catch {
|
||||
setTopLevelError("Could not reach the server. Please try again.");
|
||||
|
||||
Reference in New Issue
Block a user