From 474f958159ffaa445d114b7af8681987cd748815 Mon Sep 17 00:00:00 2001 From: BFlat Date: Sun, 19 Mar 2023 02:58:36 +0700 Subject: [PATCH] comment section profile --- .../v2/view/_common/comments/CommentList.tsx | 29 +++++++---- .../comments/CreateCommentComponent.tsx | 50 +++++++++++++++---- .../profile/profile_view/ProfilePage.tsx | 21 ++++---- 3 files changed, 70 insertions(+), 30 deletions(-) diff --git a/packages/fakeyou.com/src/v2/view/_common/comments/CommentList.tsx b/packages/fakeyou.com/src/v2/view/_common/comments/CommentList.tsx index a9faec1024..4835507c51 100644 --- a/packages/fakeyou.com/src/v2/view/_common/comments/CommentList.tsx +++ b/packages/fakeyou.com/src/v2/view/_common/comments/CommentList.tsx @@ -31,8 +31,8 @@ function CommentList(props: Props) { getComments(); }, [getComments]); - // NB: It's more convenient to show recent data first - var reversedComments = comments.slice().reverse(); + // NB: It's more convenient to show recent data first {.reverse()} + var reversedComments = comments.slice(); const now = new Date(); @@ -47,16 +47,23 @@ function CommentList(props: Props) { rows.push( - {/* It's okay to set "dangerous" html here as the server safely created it. */} -
+
+
+ + {comment.user_display_name} + + ยท + {relativeCreateTime} +
+ {/* It's okay to set "dangerous" html here as the server safely created it. */} +
+
- {relativeCreateTime} - {comment.user_display_name} link ); }); diff --git a/packages/fakeyou.com/src/v2/view/_common/comments/CreateCommentComponent.tsx b/packages/fakeyou.com/src/v2/view/_common/comments/CreateCommentComponent.tsx index 7ab7c51221..4a496f26b4 100644 --- a/packages/fakeyou.com/src/v2/view/_common/comments/CreateCommentComponent.tsx +++ b/packages/fakeyou.com/src/v2/view/_common/comments/CreateCommentComponent.tsx @@ -1,13 +1,15 @@ -import React, { useState, useCallback } from "react"; +import React, { useState, useEffect, useCallback } from "react"; import { CreateComment, CreateCommentIsOk, } from "@storyteller/components/src/api/comments/CreateComment"; import { v4 as uuidv4 } from "uuid"; +import { SessionWrapper } from "@storyteller/components/src/session/SessionWrapper"; interface Props { entity_type: string; entity_token: string; + sessionWrapper: SessionWrapper; } /** @@ -23,6 +25,7 @@ function CreateCommentComponent(props: Props) { const [uuidIdempotencyToken, setUuidIdempotencyToken] = useState( uuidv4() ); + const [buttonVisible, setButtonVisible] = useState(false); const postComment = useCallback(async () => { const request = { @@ -43,17 +46,18 @@ function CreateCommentComponent(props: Props) { commentMarkdown, ]); - const handleCommentChange = (ev: React.FormEvent) => { + const handleCommentChange = (ev: React.ChangeEvent) => { ev.preventDefault(); const textValue = (ev.target as HTMLTextAreaElement).value.trim(); if (textValue !== commentMarkdown) { setUuidIdempotencyToken(uuidv4()); // Regenerate on any change. } setCommentMarkdown(textValue); + setButtonVisible(textValue.length > 0); return false; }; - const handleFormSubmit = (ev: React.FormEvent) => { + const handleFormSubmit = (ev: React.ChangeEvent) => { ev.preventDefault(); if (commentMarkdown.trim() === "") { @@ -64,8 +68,33 @@ function CreateCommentComponent(props: Props) { return false; }; - return ( -
+ const handleKeyDown = (event: React.KeyboardEvent) => { + if (event.key === "Enter") { + event.preventDefault(); + } + }; + + let commentButton = <>; + if (buttonVisible) { + commentButton = ( + + ); + } + + let createCommentComponent = ( + + ); + if (props.sessionWrapper.isLoggedIn()) { + createCommentComponent = (
@@ -74,17 +103,18 @@ function CreateCommentComponent(props: Props) { className="form-control textarea-comment" rows={1} onChange={handleCommentChange} + onKeyDown={handleKeyDown} > {commentMarkdown}
- + {commentButton}
-
- ); + ); + } + + return
{createCommentComponent}
; } export { CreateCommentComponent }; diff --git a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx index 626f6bceaf..467069d144 100644 --- a/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/profile/profile_view/ProfilePage.tsx @@ -51,7 +51,7 @@ interface Props { // navigator.clipboard.writeText(username); // } -function ProfilePage(props: Props) { +function ProfilePage(this: any, props: Props) { const { username }: { username: string } = useParams(); const [userData, setUserData] = useState(undefined); @@ -536,14 +536,17 @@ function ProfilePage(props: Props) { role="tabpanel" aria-labelledby="comments-tab" > - - +
+ + +