aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/Discussions.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/Discussions.tsx')
-rw-r--r--frontend/src/components/Discussions.tsx45
1 files changed, 27 insertions, 18 deletions
diff --git a/frontend/src/components/Discussions.tsx b/frontend/src/components/Discussions.tsx
index 787104b..c22de79 100644
--- a/frontend/src/components/Discussions.tsx
+++ b/frontend/src/components/Discussions.tsx
@@ -8,13 +8,14 @@ import "../css/Maps.css"
8import { Link } from 'react-router-dom'; 8import { Link } from 'react-router-dom';
9 9
10interface DiscussionsProps { 10interface DiscussionsProps {
11 token?: string
11 data?: MapDiscussions; 12 data?: MapDiscussions;
12 isModerator: boolean; 13 isModerator: boolean;
13 mapID: string; 14 mapID: string;
14 onRefresh: () => void; 15 onRefresh: () => void;
15} 16}
16 17
17const Discussions: React.FC<DiscussionsProps> = ({ data, isModerator, mapID, onRefresh }) => { 18const Discussions: React.FC<DiscussionsProps> = ({ token, data, isModerator, mapID, onRefresh }) => {
18 19
19 const [discussionThread, setDiscussionThread] = React.useState<MapDiscussion | undefined>(undefined); 20 const [discussionThread, setDiscussionThread] = React.useState<MapDiscussion | undefined>(undefined);
20 const [discussionSearch, setDiscussionSearch] = React.useState<string>(""); 21 const [discussionSearch, setDiscussionSearch] = React.useState<string>("");
@@ -24,9 +25,7 @@ const Discussions: React.FC<DiscussionsProps> = ({ data, isModerator, mapID, onR
24 title: "", 25 title: "",
25 content: "", 26 content: "",
26 }); 27 });
27 const [createDiscussionCommentContent, setCreateDiscussionCommentContent] = React.useState<MapDiscussionCommentContent>({ 28 const [createDiscussionCommentContent, setCreateDiscussionCommentContent] = React.useState<string>("");
28 comment: "",
29 });
30 29
31 const _open_map_discussion = async (discussion_id: number) => { 30 const _open_map_discussion = async (discussion_id: number) => {
32 const mapDiscussion = await API.get_map_discussion(mapID, discussion_id); 31 const mapDiscussion = await API.get_map_discussion(mapID, discussion_id);
@@ -34,20 +33,26 @@ const Discussions: React.FC<DiscussionsProps> = ({ data, isModerator, mapID, onR
34 }; 33 };
35 34
36 const _create_map_discussion = async () => { 35 const _create_map_discussion = async () => {
37 await API.post_map_discussion(mapID, createDiscussionContent); 36 if (token) {
38 setCreateDiscussion(false); 37 await API.post_map_discussion(token, mapID, createDiscussionContent);
39 onRefresh(); 38 setCreateDiscussion(false);
39 onRefresh();
40 }
40 }; 41 };
41 42
42 const _create_map_discussion_comment = async (discussion_id: number) => { 43 const _create_map_discussion_comment = async (discussion_id: number) => {
43 await API.post_map_discussion_comment(mapID, discussion_id, createDiscussionCommentContent); 44 if (token) {
44 await _open_map_discussion(discussion_id); 45 await API.post_map_discussion_comment(token, mapID, discussion_id, createDiscussionCommentContent);
46 await _open_map_discussion(discussion_id);
47 }
45 }; 48 };
46 49
47 const _delete_map_discussion = async (discussion: MapDiscussionsDetail) => { 50 const _delete_map_discussion = async (discussion: MapDiscussionsDetail) => {
48 if (window.confirm(`Are you sure you want to remove post: ${discussion.title}?`)) { 51 if (window.confirm(`Are you sure you want to remove post: ${discussion.title}?`)) {
49 await API.delete_map_discussion(mapID, discussion.id); 52 if (token) {
50 onRefresh(); 53 await API.delete_map_discussion(token, mapID, discussion.id);
54 onRefresh();
55 }
51 } 56 }
52 }; 57 };
53 58
@@ -69,9 +74,9 @@ const Discussions: React.FC<DiscussionsProps> = ({ data, isModerator, mapID, onR
69 ...createDiscussionContent, 74 ...createDiscussionContent,
70 title: e.target.value, 75 title: e.target.value,
71 })} /> 76 })} />
72 <input id='discussion-create-content' placeholder='Enter the comment...' onChange={(e) => setCreateDiscussionContent({ 77 <input id='discussion-create-content' placeholder='Enter the content...' onChange={(e) => setCreateDiscussionContent({
73 ...createDiscussionContent, 78 ...createDiscussionContent,
74 title: e.target.value, 79 content: e.target.value,
75 })} /> 80 })} />
76 </div> 81 </div>
77 <div style={{ placeItems: "end", gridColumn: "1 / span 2" }}> 82 <div style={{ placeItems: "end", gridColumn: "1 / span 2" }}>
@@ -114,11 +119,15 @@ const Discussions: React.FC<DiscussionsProps> = ({ data, isModerator, mapID, onR
114 } 119 }
115 </div> 120 </div>
116 <div id='discussion-send'> 121 <div id='discussion-send'>
117 <input type="text" placeholder={"Message"} onKeyDown={(e) => e.key === "Enter" && _create_map_discussion_comment(discussionThread.discussion.id)} onChange={(e) => setCreateDiscussionCommentContent({ 122 <input type="text" value={createDiscussionCommentContent} placeholder={"Message"}
118 ...createDiscussionContent, 123 onKeyDown={(e) => e.key === "Enter" && _create_map_discussion_comment(discussionThread.discussion.id)}
119 comment: e.target.value, 124 onChange={(e) => setCreateDiscussionCommentContent(e.target.value)} />
120 })} /> 125 <div><button onClick={() => {
121 <div><button onClick={() => _create_map_discussion_comment(discussionThread.discussion.id)}>Send</button></div> 126 if (createDiscussionCommentContent !== "") {
127 _create_map_discussion_comment(discussionThread.discussion.id);
128 setCreateDiscussionCommentContent("");
129 }
130 }}>Send</button></div>
122 </div> 131 </div>
123 132
124 </div> 133 </div>