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 = (
+
+ Post Comment
+
+ );
+ }
+
+ let createCommentComponent = (
+
+ );
+ if (props.sessionWrapper.isLoggedIn()) {
+ createCommentComponent = (
-
- );
+ );
+ }
+
+ 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"
>
-
-
+
+
+
+