From 9b3becff44e8d892e47b2879b3f02a9d94c6c753 Mon Sep 17 00:00:00 2001
From: jonathanchandra15 <jonathanjocan@gmail.com>
Date: Mon, 28 Dec 2020 17:21:45 +0700
Subject: [PATCH 1/3] add page Threads

---
 diskuy/.eslintcache                  |  2 +-
 diskuy/src/App.js                    |  6 ++--
 diskuy/src/Navbar.js                 |  9 ++----
 diskuy/src/{ => Profile}/Profile.css |  0
 diskuy/src/{ => Profile}/Profile.js  |  2 +-
 diskuy/src/{ => Threads}/Comment.css |  0
 diskuy/src/{ => Threads}/Comment.js  |  0
 diskuy/src/Threads/ListThreads.css   | 44 ++++++++++++++++++++++++++++
 diskuy/src/Threads/ListThreads.js    | 24 +++++++++++++++
 diskuy/src/{ => Threads}/Post.css    |  0
 diskuy/src/{ => Threads}/Post.js     |  0
 diskuy/src/{ => Threads}/Thread.css  |  0
 diskuy/src/{ => Threads}/Thread.js   |  2 +-
 diskuy/src/Topic.js                  |  2 +-
 14 files changed, 79 insertions(+), 12 deletions(-)
 rename diskuy/src/{ => Profile}/Profile.css (100%)
 rename diskuy/src/{ => Profile}/Profile.js (95%)
 rename diskuy/src/{ => Threads}/Comment.css (100%)
 rename diskuy/src/{ => Threads}/Comment.js (100%)
 create mode 100644 diskuy/src/Threads/ListThreads.css
 create mode 100644 diskuy/src/Threads/ListThreads.js
 rename diskuy/src/{ => Threads}/Post.css (100%)
 rename diskuy/src/{ => Threads}/Post.js (100%)
 rename diskuy/src/{ => Threads}/Thread.css (100%)
 rename diskuy/src/{ => Threads}/Thread.js (99%)

diff --git a/diskuy/.eslintcache b/diskuy/.eslintcache
index a0ce846..281e835 100644
--- a/diskuy/.eslintcache
+++ b/diskuy/.eslintcache
@@ -1 +1 @@
-[{"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js":"1","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js":"2","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js":"3","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js":"4","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js":"5","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Thread.js":"6","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Post.js":"7","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Comment.js":"8","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js":"9","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile.js":"10"},{"size":517,"mtime":1608489407339,"results":"11","hashOfConfig":"12"},{"size":375,"mtime":1608489407340,"results":"13","hashOfConfig":"12"},{"size":515,"mtime":1609102161227,"results":"14","hashOfConfig":"12"},{"size":1101,"mtime":1609102018048,"results":"15","hashOfConfig":"12"},{"size":574,"mtime":1608499407034,"results":"16","hashOfConfig":"12"},{"size":2440,"mtime":1608526249684,"results":"17","hashOfConfig":"12"},{"size":514,"mtime":1608499407022,"results":"18","hashOfConfig":"12"},{"size":477,"mtime":1608499407004,"results":"19","hashOfConfig":"12"},{"size":310,"mtime":1609099703616,"results":"20","hashOfConfig":"12"},{"size":724,"mtime":1609103487236,"results":"21","hashOfConfig":"12"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},"dzubz0",{"filePath":"25","messages":"26","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29","messages":"30","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"31","messages":"32","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"33","usedDeprecatedRules":"24"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"36","usedDeprecatedRules":"24"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js",[],["45","46"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js",["47"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js",["48","49"],"import React, { useState } from \"react\";\r\nimport Thread from './Thread'\r\n\r\nimport { Link } from \"react-router-dom\"\r\n\r\nconst threads = [\r\n    {\r\n        id: 'thread1'\r\n    },\r\n    {\r\n        id: 'thread2'\r\n    }\r\n]\r\n\r\nexport default function Topic(props){\r\n    const [thread, setThread] = useState(threads)\r\n\r\n    return (\r\n        <div>\r\n            <ul>\r\n                {thread.map((value) => (\r\n                <li>\r\n                    <Link to={`/topic/${value.id}`}>{value.id}</Link>\r\n                </li>\r\n            ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n}","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Thread.js",["50"],"import React, { useState } from \"react\";\r\nimport './Thread.css';\r\nimport Comment from './Comment';\r\nimport Post from './Post';\r\n\r\nconst placeholder = [\r\n    {\r\n        id:\"1\",\r\n        user: \"abcd\",\r\n        text: \"Halohalohalohalo\",\r\n        points: 10\r\n    }, \r\n    {\r\n        id:\"2\",\r\n        user: \"test123\",\r\n        text: \"SONOIHIGREGOEHOAI;HASD\",\r\n        points: 20\r\n    }, \r\n    {\r\n        id:\"3\",\r\n        user: \"heiehe\",\r\n        text: \"IJCSIFHIFHIU\",\r\n        points: 30\r\n    },\r\n];\r\n\r\n\r\nexport default function Thread(props){\r\n    const [idGenerator, setIdGenerator] = useState(4);\r\n    const [comment, setComment] = useState(placeholder);\r\n    const [textArea, setTextArea] = useState('');\r\n\r\n    function fillComment(event) {\r\n        setTextArea(event.currentTarget.value);\r\n    }\r\n\r\n    function addComment() {\r\n        let commentList = [...comment]\r\n        commentList.push({\r\n            id: idGenerator,\r\n            user:\"tester\",\r\n            text:textArea,\r\n            points:0\r\n        });\r\n        const newId = idGenerator + 1\r\n        setIdGenerator(newId);\r\n        console.log(idGenerator);\r\n        setComment(commentList);\r\n        setTextArea('');\r\n    }\r\n\r\n    function deleteComment(id) {\r\n        const newCommentList = comment.filter((value) => value.id != id);\r\n        setComment(newCommentList);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <div>\r\n                <Post text=\"asdasfdgg\" header=\"Berita Gembira\" user=\"Hello guys David disini\" points=\"100\"/>\r\n                <h2 className='commentText'>Comment</h2>\r\n            </div>\r\n                {comment.map((value) => (\r\n                    <div id=\"threadComment\">\r\n                        <Comment text={value.text} user={value.user} points={value.points}/>\r\n                        <button type=\"button\" className=\"btn btn-outline-danger deleteButton\" onClick={() => deleteComment(value.id)}>Delete</button>\r\n                    </div>\r\n                ))}\r\n\r\n            <div id=\"addCommentSection\">\r\n                <h3>Add New Comment</h3>\r\n                <textarea className=\"form-control commentBox\" cols=\"70\" rows=\"5\" \r\n                    onChange={(event) => fillComment(event)}\r\n                    value={textArea}>  \r\n                </textarea>\r\n                <button className=\"btn btn-primary btn_cancel\" id=\"addCommentButton\" onClick={addComment}>Add Comment</button>\r\n            </div>\r\n        </div>\r\n    )\r\n}","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Post.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Comment.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile.js",[],{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","replacedBy":"54"},{"ruleId":"55","severity":1,"message":"56","line":11,"column":13,"nodeType":"57","endLine":11,"endColumn":49},{"ruleId":"58","severity":1,"message":"59","line":2,"column":8,"nodeType":"60","messageId":"61","endLine":2,"endColumn":14},{"ruleId":"58","severity":1,"message":"62","line":16,"column":20,"nodeType":"60","messageId":"61","endLine":16,"endColumn":29},{"ruleId":"63","severity":1,"message":"64","line":53,"column":67,"nodeType":"65","messageId":"66","endLine":53,"endColumn":69},"no-native-reassign",["67"],"no-negated-in-lhs",["68"],"jsx-a11y/anchor-is-valid","The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md","JSXOpeningElement","no-unused-vars","'Thread' is defined but never used.","Identifier","unusedVar","'setThread' is assigned a value but never used.","eqeqeq","Expected '!==' and instead saw '!='.","BinaryExpression","unexpected","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
+[{"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js":"1","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js":"2","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js":"3","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js":"4","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js":"5","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js":"6","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js":"7","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js":"8","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js":"9","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js":"10","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js":"11"},{"size":517,"mtime":1608489407339,"results":"12","hashOfConfig":"13"},{"size":375,"mtime":1608489407340,"results":"14","hashOfConfig":"13"},{"size":637,"mtime":1609148160244,"results":"15","hashOfConfig":"13"},{"size":943,"mtime":1609148601770,"results":"16","hashOfConfig":"13"},{"size":582,"mtime":1609146276259,"results":"17","hashOfConfig":"13"},{"size":310,"mtime":1609103626391,"results":"18","hashOfConfig":"13"},{"size":725,"mtime":1609145816382,"results":"19","hashOfConfig":"13"},{"size":2441,"mtime":1609148441694,"results":"20","hashOfConfig":"13"},{"size":477,"mtime":1609146203278,"results":"21","hashOfConfig":"13"},{"size":514,"mtime":1609146174642,"results":"22","hashOfConfig":"13"},{"size":708,"mtime":1609150207131,"results":"23","hashOfConfig":"13"},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},"dzubz0",{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33","messages":"34","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"45","messages":"46","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js",[],["47","48"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js",["49","50"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js",[],{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","replacedBy":"54"},{"ruleId":"55","severity":1,"message":"56","line":2,"column":8,"nodeType":"57","messageId":"58","endLine":2,"endColumn":14},{"ruleId":"55","severity":1,"message":"59","line":16,"column":20,"nodeType":"57","messageId":"58","endLine":16,"endColumn":29},"no-native-reassign",["60"],"no-negated-in-lhs",["61"],"no-unused-vars","'Thread' is defined but never used.","Identifier","unusedVar","'setThread' is assigned a value but never used.","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
diff --git a/diskuy/src/App.js b/diskuy/src/App.js
index d60035b..378f576 100644
--- a/diskuy/src/App.js
+++ b/diskuy/src/App.js
@@ -1,8 +1,9 @@
 import './App.css';
-import Thread from './Thread';
+import Thread from './Threads/Thread';
 import Topic from './Topic';
 import Navbar from './Navbar';
-import Profile from './Profile';
+import Profile from './Profile/Profile';
+import ListThreads from './Threads/ListThreads';
 import {
   BrowserRouter as Router,
   Route,
@@ -13,6 +14,7 @@ function App() {
   return (
     <Router>
       <Navbar />
+      <Route exact path='/' component={ListThreads} />
       <Route exact path='/topic/:thread' component={Thread} />
       <Route exact path='/topic' component={Topic} />
       <Route exact path='/profile' component={Profile} />
diff --git a/diskuy/src/Navbar.js b/diskuy/src/Navbar.js
index 9737663..1dcb814 100644
--- a/diskuy/src/Navbar.js
+++ b/diskuy/src/Navbar.js
@@ -8,17 +8,14 @@ import {
 const Navbar = () => {
     return (
         <nav id = "navbar" className='navbar navbar-expand-lg navbar-light position-sticky fixed-top'>
-            <a className="navbar-brand" href="">
+            <div className="navbar-brand">
                 <div className="d-flex align-items-center">
                     <Link to="/"><DiskuyLogo /></Link>
                 </div>
-            </a>
+            </div>
             <ul className="navbar-nav ml-auto">
                 <li className="nav-item ml-auto">
-                    <Link to="/topic" className="nav-link"><b>Home</b></Link>
-                </li>
-                <li className="nav-item ml-auto">
-                    <Link to="/thread" className="nav-link"><b>Threads</b></Link>
+                    <Link to="/topic" className="nav-link"><b>Threads</b></Link>
                 </li>
                 <li className="nav-item ml-auto">
                     <Link to="/profile" className="nav-link"><b>Profile</b></Link>
diff --git a/diskuy/src/Profile.css b/diskuy/src/Profile/Profile.css
similarity index 100%
rename from diskuy/src/Profile.css
rename to diskuy/src/Profile/Profile.css
diff --git a/diskuy/src/Profile.js b/diskuy/src/Profile/Profile.js
similarity index 95%
rename from diskuy/src/Profile.js
rename to diskuy/src/Profile/Profile.js
index 3c4c9a1..b093ad6 100644
--- a/diskuy/src/Profile.js
+++ b/diskuy/src/Profile/Profile.js
@@ -1,6 +1,6 @@
 import React from "react";
 import './Profile.css';
-import Button from './Button';
+import Button from '../Button';
 
 const Profile = () => {
     return (
diff --git a/diskuy/src/Comment.css b/diskuy/src/Threads/Comment.css
similarity index 100%
rename from diskuy/src/Comment.css
rename to diskuy/src/Threads/Comment.css
diff --git a/diskuy/src/Comment.js b/diskuy/src/Threads/Comment.js
similarity index 100%
rename from diskuy/src/Comment.js
rename to diskuy/src/Threads/Comment.js
diff --git a/diskuy/src/Threads/ListThreads.css b/diskuy/src/Threads/ListThreads.css
new file mode 100644
index 0000000..ad0932a
--- /dev/null
+++ b/diskuy/src/Threads/ListThreads.css
@@ -0,0 +1,44 @@
+.header {
+    margin-top: 36px;
+    margin-left: 72px;
+}
+
+.header h1 {
+    font-family: "DM Sans";
+    font-size: 36px;
+    color: #007A7A;
+}
+
+.list_threads_section {
+    display: flex;
+    flex-direction: column;
+    margin-top: 56px;
+    margin-left: 72px;
+    margin-right: 72px;
+}
+
+.sub_header_list_threads {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+}
+
+.tab {
+    display: flex;
+    align-items: center;
+}
+
+.tab h3 {
+    font-family: "DM Sans";
+    font-size: 18px;
+    color: #000000;
+    margin-right: 24px;
+    margin-top: 4px;
+    opacity: 0.5;
+}
+
+.tab .active {
+    color: #DE6600 !important;
+    font-weight: bold;
+    opacity: 1!important;
+}
\ No newline at end of file
diff --git a/diskuy/src/Threads/ListThreads.js b/diskuy/src/Threads/ListThreads.js
new file mode 100644
index 0000000..de055df
--- /dev/null
+++ b/diskuy/src/Threads/ListThreads.js
@@ -0,0 +1,24 @@
+import React from "react";
+import './ListThreads.css';
+import Button from '../Button';
+
+function ListThreads(props) {
+    return (
+        <div>
+            <div className="header">
+                <h1><b>Threads</b></h1>
+            </div>
+            <div className="list_threads_section">
+                <div className="sub_header_list_threads">
+                    <div className="tab">
+                        <h3 className="active">Recent</h3>
+                        <h3>Top</h3>
+                    </div>
+                    <Button text="Create Thread" color="orange" url="aaa" />
+                </div>
+            </div>
+        </div>
+    )
+}
+
+export default ListThreads;
\ No newline at end of file
diff --git a/diskuy/src/Post.css b/diskuy/src/Threads/Post.css
similarity index 100%
rename from diskuy/src/Post.css
rename to diskuy/src/Threads/Post.css
diff --git a/diskuy/src/Post.js b/diskuy/src/Threads/Post.js
similarity index 100%
rename from diskuy/src/Post.js
rename to diskuy/src/Threads/Post.js
diff --git a/diskuy/src/Thread.css b/diskuy/src/Threads/Thread.css
similarity index 100%
rename from diskuy/src/Thread.css
rename to diskuy/src/Threads/Thread.css
diff --git a/diskuy/src/Thread.js b/diskuy/src/Threads/Thread.js
similarity index 99%
rename from diskuy/src/Thread.js
rename to diskuy/src/Threads/Thread.js
index 4e37e35..6e74e6c 100644
--- a/diskuy/src/Thread.js
+++ b/diskuy/src/Threads/Thread.js
@@ -50,7 +50,7 @@ export default function Thread(props){
     }
 
     function deleteComment(id) {
-        const newCommentList = comment.filter((value) => value.id != id);
+        const newCommentList = comment.filter((value) => value.id !== id);
         setComment(newCommentList);
     }
 
diff --git a/diskuy/src/Topic.js b/diskuy/src/Topic.js
index b8b818c..748b93f 100644
--- a/diskuy/src/Topic.js
+++ b/diskuy/src/Topic.js
@@ -1,5 +1,5 @@
 import React, { useState } from "react";
-import Thread from './Thread'
+import Thread from './Threads/Thread'
 
 import { Link } from "react-router-dom"
 
-- 
GitLab


From 2189635feaff99553d1dd83662ec535cdd84aea9 Mon Sep 17 00:00:00 2001
From: jonathanchandra15 <jonathanjocan@gmail.com>
Date: Sat, 2 Jan 2021 23:52:30 +0700
Subject: [PATCH 2/3] edit app.js

---
 diskuy/.eslintcache                     |  2 +-
 diskuy/src/App.js                       |  2 ++
 diskuy/src/Button.js                    |  6 +++++-
 diskuy/src/Threads/CreateThread.css     | 28 +++++++++++++++++++++++++
 diskuy/src/Threads/CreateThread.js      | 22 +++++++++++++++++++
 diskuy/src/Threads/FormCreateThread.css |  6 ++++++
 diskuy/src/Threads/FormCreateThread.js  | 26 +++++++++++++++++++++++
 diskuy/src/Threads/ListThreads.js       |  2 +-
 diskuy_back/config/dev.exs              |  4 ++--
 9 files changed, 93 insertions(+), 5 deletions(-)
 create mode 100644 diskuy/src/Threads/CreateThread.css
 create mode 100644 diskuy/src/Threads/CreateThread.js
 create mode 100644 diskuy/src/Threads/FormCreateThread.css
 create mode 100644 diskuy/src/Threads/FormCreateThread.js

diff --git a/diskuy/.eslintcache b/diskuy/.eslintcache
index 281e835..4e0eb57 100644
--- a/diskuy/.eslintcache
+++ b/diskuy/.eslintcache
@@ -1 +1 @@
-[{"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js":"1","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js":"2","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js":"3","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js":"4","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js":"5","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js":"6","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js":"7","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js":"8","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js":"9","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js":"10","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js":"11"},{"size":517,"mtime":1608489407339,"results":"12","hashOfConfig":"13"},{"size":375,"mtime":1608489407340,"results":"14","hashOfConfig":"13"},{"size":637,"mtime":1609148160244,"results":"15","hashOfConfig":"13"},{"size":943,"mtime":1609148601770,"results":"16","hashOfConfig":"13"},{"size":582,"mtime":1609146276259,"results":"17","hashOfConfig":"13"},{"size":310,"mtime":1609103626391,"results":"18","hashOfConfig":"13"},{"size":725,"mtime":1609145816382,"results":"19","hashOfConfig":"13"},{"size":2441,"mtime":1609148441694,"results":"20","hashOfConfig":"13"},{"size":477,"mtime":1609146203278,"results":"21","hashOfConfig":"13"},{"size":514,"mtime":1609146174642,"results":"22","hashOfConfig":"13"},{"size":708,"mtime":1609150207131,"results":"23","hashOfConfig":"13"},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},"dzubz0",{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33","messages":"34","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"45","messages":"46","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js",[],["47","48"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js",["49","50"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js",[],{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","replacedBy":"54"},{"ruleId":"55","severity":1,"message":"56","line":2,"column":8,"nodeType":"57","messageId":"58","endLine":2,"endColumn":14},{"ruleId":"55","severity":1,"message":"59","line":16,"column":20,"nodeType":"57","messageId":"58","endLine":16,"endColumn":29},"no-native-reassign",["60"],"no-negated-in-lhs",["61"],"no-unused-vars","'Thread' is defined but never used.","Identifier","unusedVar","'setThread' is assigned a value but never used.","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
+[{"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js":"1","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js":"2","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js":"3","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js":"4","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js":"5","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js":"6","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js":"7","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js":"8","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js":"9","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js":"10","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js":"11","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\FormCreateThread.js":"12","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\CreateThread.js":"13"},{"size":517,"mtime":1608489407339,"results":"14","hashOfConfig":"15"},{"size":375,"mtime":1608489407340,"results":"16","hashOfConfig":"15"},{"size":759,"mtime":1609172445960,"results":"17","hashOfConfig":"15"},{"size":943,"mtime":1609148601770,"results":"18","hashOfConfig":"15"},{"size":582,"mtime":1609146276259,"results":"19","hashOfConfig":"15"},{"size":310,"mtime":1609103626391,"results":"20","hashOfConfig":"15"},{"size":725,"mtime":1609145816382,"results":"21","hashOfConfig":"15"},{"size":2441,"mtime":1609148441694,"results":"22","hashOfConfig":"15"},{"size":477,"mtime":1609146203278,"results":"23","hashOfConfig":"15"},{"size":514,"mtime":1609146174642,"results":"24","hashOfConfig":"15"},{"size":708,"mtime":1609150207131,"results":"25","hashOfConfig":"15"},{"size":789,"mtime":1609173549944,"results":"26","hashOfConfig":"15"},{"size":525,"mtime":1609172653602,"results":"27","hashOfConfig":"15"},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},"dzubz0",{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"33","messages":"34","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"39","usedDeprecatedRules":"30"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"48","messages":"49","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js",[],["56","57"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js",["58","59"],"import React, { useState } from \"react\";\r\nimport Thread from './Threads/Thread'\r\n\r\nimport { Link } from \"react-router-dom\"\r\n\r\nconst threads = [\r\n    {\r\n        id: 'thread1'\r\n    },\r\n    {\r\n        id: 'thread2'\r\n    }\r\n]\r\n\r\nexport default function Topic(props){\r\n    const [thread, setThread] = useState(threads)\r\n\r\n    return (\r\n        <div>\r\n            <ul>\r\n                {thread.map((value) => (\r\n                <li>\r\n                    <Link to={`/topic/${value.id}`}>{value.id}</Link>\r\n                </li>\r\n            ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n}","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\FormCreateThread.js",["60","61","62","63"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\CreateThread.js",[],{"ruleId":"64","replacedBy":"65"},{"ruleId":"66","replacedBy":"67"},{"ruleId":"68","severity":1,"message":"69","line":2,"column":8,"nodeType":"70","messageId":"71","endLine":2,"endColumn":14},{"ruleId":"68","severity":1,"message":"72","line":16,"column":20,"nodeType":"70","messageId":"71","endLine":16,"endColumn":29},{"ruleId":"68","severity":1,"message":"73","line":6,"column":12,"nodeType":"70","messageId":"71","endLine":6,"endColumn":17},{"ruleId":"68","severity":1,"message":"74","line":6,"column":19,"nodeType":"70","messageId":"71","endLine":6,"endColumn":27},{"ruleId":"68","severity":1,"message":"75","line":7,"column":12,"nodeType":"70","messageId":"71","endLine":7,"endColumn":16},{"ruleId":"68","severity":1,"message":"76","line":7,"column":18,"nodeType":"70","messageId":"71","endLine":7,"endColumn":25},"no-native-reassign",["77"],"no-negated-in-lhs",["78"],"no-unused-vars","'Thread' is defined but never used.","Identifier","unusedVar","'setThread' is assigned a value but never used.","'title' is assigned a value but never used.","'setTitle' is assigned a value but never used.","'body' is assigned a value but never used.","'setBody' is assigned a value but never used.","no-global-assign","no-unsafe-negation"]
\ No newline at end of file
diff --git a/diskuy/src/App.js b/diskuy/src/App.js
index 378f576..88371db 100644
--- a/diskuy/src/App.js
+++ b/diskuy/src/App.js
@@ -4,6 +4,7 @@ import Topic from './Topic';
 import Navbar from './Navbar';
 import Profile from './Profile/Profile';
 import ListThreads from './Threads/ListThreads';
+import CreateThread from './Threads/CreateThread';
 import {
   BrowserRouter as Router,
   Route,
@@ -18,6 +19,7 @@ function App() {
       <Route exact path='/topic/:thread' component={Thread} />
       <Route exact path='/topic' component={Topic} />
       <Route exact path='/profile' component={Profile} />
+      <Route exact path='/thread/create' component={CreateThread} />
     </Router>
   );
 }
diff --git a/diskuy/src/Button.js b/diskuy/src/Button.js
index e7402bb..4510826 100644
--- a/diskuy/src/Button.js
+++ b/diskuy/src/Button.js
@@ -5,11 +5,15 @@ import {
   } from "react-router-dom"
 
 function Button(props) {
+    if(props.type=="button"){
     return (
         <Link to={`/${props.url}`}>
             <button className={`button ${props.color}`}>{props.text}</button>
         </Link>
-    )
+    )}
+    else if(props.type=="input"){
+        <input type="submit" value={props.text} className={`button ${props.color}`} />
+    }
 }
 
 export default Button;
\ No newline at end of file
diff --git a/diskuy/src/Threads/CreateThread.css b/diskuy/src/Threads/CreateThread.css
new file mode 100644
index 0000000..8b0d7fe
--- /dev/null
+++ b/diskuy/src/Threads/CreateThread.css
@@ -0,0 +1,28 @@
+.back {
+    margin-top: 32px;
+    margin-left: 72px;
+    color: #007A7A;
+}
+
+.back h5 {
+    font-family: 'DM Sans';
+    font-size: 18px;
+}
+
+.header {
+    margin-top: 36px;
+    margin-left: 72px;
+}
+
+.header h1 {
+    font-family: "DM Sans";
+    font-size: 36px;
+    color: #003F5A;
+}
+
+.form_section {
+    margin-top: 60px;
+    margin-left: 72px;
+    margin-right: 72px;
+}
+
diff --git a/diskuy/src/Threads/CreateThread.js b/diskuy/src/Threads/CreateThread.js
new file mode 100644
index 0000000..15d94f2
--- /dev/null
+++ b/diskuy/src/Threads/CreateThread.js
@@ -0,0 +1,22 @@
+import React from "react";
+import './CreateThread.css';
+import FormCreateThread from './FormCreateThread'
+
+
+function ListThreads() {
+    return (
+        <div>
+            <div className="back">
+                <h5>Back</h5> 
+            </div>
+            <div className="header">
+                <h1><b>Create a Thread</b></h1>
+            </div>
+            <div className="form_section">
+                <FormCreateThread />
+            </div>
+        </div>
+    )
+}
+
+export default ListThreads;
\ No newline at end of file
diff --git a/diskuy/src/Threads/FormCreateThread.css b/diskuy/src/Threads/FormCreateThread.css
new file mode 100644
index 0000000..473e01f
--- /dev/null
+++ b/diskuy/src/Threads/FormCreateThread.css
@@ -0,0 +1,6 @@
+.form_container {
+    display: flex;
+    flex-direction: column; 
+}
+
+
diff --git a/diskuy/src/Threads/FormCreateThread.js b/diskuy/src/Threads/FormCreateThread.js
new file mode 100644
index 0000000..4031191
--- /dev/null
+++ b/diskuy/src/Threads/FormCreateThread.js
@@ -0,0 +1,26 @@
+import React, { useState } from "react";
+import './FormCreateThread.css';
+
+function FormCreateThread() {
+
+    const {title, setTitle} = useState('');
+    const {body, setBody} = useState('');
+
+    const sendForm = (e) => {
+        e.preventDefault();
+    }
+
+    return (
+        <form onSubmit={sendForm}>
+            <div className="form_container">
+                <label for="title">Title</label>
+                <input type="text" name="title" placeholder="Your threads title" required="false" />
+                <label for="body">Body</label>
+                <textarea name="body" placeholder="Tulis" required="false" />
+                <input type="submit" value="Create Thread" />
+            </div>
+        </form>
+    )
+}
+
+export default FormCreateThread;
\ No newline at end of file
diff --git a/diskuy/src/Threads/ListThreads.js b/diskuy/src/Threads/ListThreads.js
index de055df..5b69d61 100644
--- a/diskuy/src/Threads/ListThreads.js
+++ b/diskuy/src/Threads/ListThreads.js
@@ -2,7 +2,7 @@ import React from "react";
 import './ListThreads.css';
 import Button from '../Button';
 
-function ListThreads(props) {
+function ListThreads() {
     return (
         <div>
             <div className="header">
diff --git a/diskuy_back/config/dev.exs b/diskuy_back/config/dev.exs
index 517b630..9431975 100644
--- a/diskuy_back/config/dev.exs
+++ b/diskuy_back/config/dev.exs
@@ -2,8 +2,8 @@ use Mix.Config
 
 # Configure your database
 config :diskuy, Diskuy.Repo,
-  username: "rafif",
-  password: "rafif123",
+  username: "postgres",
+  password: "animalkaiser15",
   database: "diskuy_dev",
   hostname: "localhost",
   show_sensitive_data_on_connection_error: true,
-- 
GitLab


From 03cca57c97f5191a5e5f737f8d1731446756c1c9 Mon Sep 17 00:00:00 2001
From: jonathanchandra15 <jonathanjocan@gmail.com>
Date: Sun, 3 Jan 2021 00:12:14 +0700
Subject: [PATCH 3/3] edit app.js

---
 diskuy/.eslintcache | 4 ----
 diskuy/src/App.js   | 4 +++-
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/diskuy/.eslintcache b/diskuy/.eslintcache
index 94a7610..78bb6f8 100644
--- a/diskuy/.eslintcache
+++ b/diskuy/.eslintcache
@@ -1,5 +1 @@
-<<<<<<< HEAD
-[{"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js":"1","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js":"2","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js":"3","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js":"4","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js":"5","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js":"6","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js":"7","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js":"8","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js":"9","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js":"10","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js":"11","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\FormCreateThread.js":"12","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\CreateThread.js":"13"},{"size":517,"mtime":1608489407339,"results":"14","hashOfConfig":"15"},{"size":375,"mtime":1608489407340,"results":"16","hashOfConfig":"15"},{"size":759,"mtime":1609172445960,"results":"17","hashOfConfig":"15"},{"size":943,"mtime":1609148601770,"results":"18","hashOfConfig":"15"},{"size":582,"mtime":1609146276259,"results":"19","hashOfConfig":"15"},{"size":310,"mtime":1609103626391,"results":"20","hashOfConfig":"15"},{"size":725,"mtime":1609145816382,"results":"21","hashOfConfig":"15"},{"size":2441,"mtime":1609148441694,"results":"22","hashOfConfig":"15"},{"size":477,"mtime":1609146203278,"results":"23","hashOfConfig":"15"},{"size":514,"mtime":1609146174642,"results":"24","hashOfConfig":"15"},{"size":708,"mtime":1609150207131,"results":"25","hashOfConfig":"15"},{"size":789,"mtime":1609173549944,"results":"26","hashOfConfig":"15"},{"size":525,"mtime":1609172653602,"results":"27","hashOfConfig":"15"},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},"dzubz0",{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"33","messages":"34","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"37","messages":"38","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"39","usedDeprecatedRules":"30"},{"filePath":"40","messages":"41","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"48","messages":"49","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"50","messages":"51","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"30"},{"filePath":"52","messages":"53","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"54","messages":"55","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\index.js",[],["56","57"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\reportWebVitals.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\App.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Navbar.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Topic.js",["58","59"],"import React, { useState } from \"react\";\r\nimport Thread from './Threads/Thread'\r\n\r\nimport { Link } from \"react-router-dom\"\r\n\r\nconst threads = [\r\n    {\r\n        id: 'thread1'\r\n    },\r\n    {\r\n        id: 'thread2'\r\n    }\r\n]\r\n\r\nexport default function Topic(props){\r\n    const [thread, setThread] = useState(threads)\r\n\r\n    return (\r\n        <div>\r\n            <ul>\r\n                {thread.map((value) => (\r\n                <li>\r\n                    <Link to={`/topic/${value.id}`}>{value.id}</Link>\r\n                </li>\r\n            ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n}","F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Button.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Profile\\Profile.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Thread.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Comment.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\Post.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\ListThreads.js",[],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\FormCreateThread.js",["60","61","62","63"],"F:\\Jonathan\\Kuliah\\Pemfung\\diskuy\\diskuy\\src\\Threads\\CreateThread.js",[],{"ruleId":"64","replacedBy":"65"},{"ruleId":"66","replacedBy":"67"},{"ruleId":"68","severity":1,"message":"69","line":2,"column":8,"nodeType":"70","messageId":"71","endLine":2,"endColumn":14},{"ruleId":"68","severity":1,"message":"72","line":16,"column":20,"nodeType":"70","messageId":"71","endLine":16,"endColumn":29},{"ruleId":"68","severity":1,"message":"73","line":6,"column":12,"nodeType":"70","messageId":"71","endLine":6,"endColumn":17},{"ruleId":"68","severity":1,"message":"74","line":6,"column":19,"nodeType":"70","messageId":"71","endLine":6,"endColumn":27},{"ruleId":"68","severity":1,"message":"75","line":7,"column":12,"nodeType":"70","messageId":"71","endLine":7,"endColumn":16},{"ruleId":"68","severity":1,"message":"76","line":7,"column":18,"nodeType":"70","messageId":"71","endLine":7,"endColumn":25},"no-native-reassign",["77"],"no-negated-in-lhs",["78"],"no-unused-vars","'Thread' is defined but never used.","Identifier","unusedVar","'setThread' is assigned a value but never used.","'title' is assigned a value but never used.","'setTitle' is assigned a value but never used.","'body' is assigned a value but never used.","'setBody' is assigned a value but never used.","no-global-assign","no-unsafe-negation"]
-=======
 [{"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\index.js":"1","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\reportWebVitals.js":"2","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\App.js":"3","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Topic.js":"4","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Thread.js":"5","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Profile.js":"6","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Navbar.js":"7","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Comment.js":"8","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Button.js":"9","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Post.js":"10"},{"size":500,"mtime":1608226437106,"results":"11","hashOfConfig":"12"},{"size":362,"mtime":1608226437230,"results":"13","hashOfConfig":"12"},{"size":515,"mtime":1609338774890,"results":"14","hashOfConfig":"12"},{"size":734,"mtime":1609487474112,"results":"15","hashOfConfig":"12"},{"size":2440,"mtime":1609338774894,"results":"16","hashOfConfig":"12"},{"size":724,"mtime":1609338774893,"results":"17","hashOfConfig":"12"},{"size":1101,"mtime":1609338774892,"results":"18","hashOfConfig":"12"},{"size":477,"mtime":1608492472838,"results":"19","hashOfConfig":"12"},{"size":310,"mtime":1609338774891,"results":"20","hashOfConfig":"12"},{"size":514,"mtime":1608492472844,"results":"21","hashOfConfig":"12"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},"jinzal",{"filePath":"25","messages":"26","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"31","messages":"32","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"33","usedDeprecatedRules":"24"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"36","messages":"37","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"38","usedDeprecatedRules":"24"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"24"},"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\index.js",[],["45","46"],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\reportWebVitals.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\App.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Topic.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Thread.js",["47"],"import React, { useState } from \"react\";\r\nimport './Thread.css';\r\nimport Comment from './Comment';\r\nimport Post from './Post';\r\n\r\nconst placeholder = [\r\n    {\r\n        id:\"1\",\r\n        user: \"abcd\",\r\n        text: \"Halohalohalohalo\",\r\n        points: 10\r\n    }, \r\n    {\r\n        id:\"2\",\r\n        user: \"test123\",\r\n        text: \"SONOIHIGREGOEHOAI;HASD\",\r\n        points: 20\r\n    }, \r\n    {\r\n        id:\"3\",\r\n        user: \"heiehe\",\r\n        text: \"IJCSIFHIFHIU\",\r\n        points: 30\r\n    },\r\n];\r\n\r\n\r\nexport default function Thread(props){\r\n    const [idGenerator, setIdGenerator] = useState(4);\r\n    const [comment, setComment] = useState(placeholder);\r\n    const [textArea, setTextArea] = useState('');\r\n\r\n    function fillComment(event) {\r\n        setTextArea(event.currentTarget.value);\r\n    }\r\n\r\n    function addComment() {\r\n        let commentList = [...comment]\r\n        commentList.push({\r\n            id: idGenerator,\r\n            user:\"tester\",\r\n            text:textArea,\r\n            points:0\r\n        });\r\n        const newId = idGenerator + 1\r\n        setIdGenerator(newId);\r\n        console.log(idGenerator);\r\n        setComment(commentList);\r\n        setTextArea('');\r\n    }\r\n\r\n    function deleteComment(id) {\r\n        const newCommentList = comment.filter((value) => value.id != id);\r\n        setComment(newCommentList);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <div>\r\n                <Post text=\"asdasfdgg\" header=\"Berita Gembira\" user=\"Hello guys David disini\" points=\"100\"/>\r\n                <h2 className='commentText'>Comment</h2>\r\n            </div>\r\n                {comment.map((value) => (\r\n                    <div id=\"threadComment\">\r\n                        <Comment text={value.text} user={value.user} points={value.points}/>\r\n                        <button type=\"button\" className=\"btn btn-outline-danger deleteButton\" onClick={() => deleteComment(value.id)}>Delete</button>\r\n                    </div>\r\n                ))}\r\n\r\n            <div id=\"addCommentSection\">\r\n                <h3>Add New Comment</h3>\r\n                <textarea className=\"form-control commentBox\" cols=\"70\" rows=\"5\" \r\n                    onChange={(event) => fillComment(event)}\r\n                    value={textArea}>  \r\n                </textarea>\r\n                <button className=\"btn btn-primary btn_cancel\" id=\"addCommentButton\" onClick={addComment}>Add Comment</button>\r\n            </div>\r\n        </div>\r\n    )\r\n}","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Profile.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Navbar.js",["48"],"import React from \"react\";\r\nimport {ReactComponent as DiskuyLogo} from './Logo.svg';\r\nimport './Navbar.css';\r\nimport {\r\n    Link\r\n  } from \"react-router-dom\"\r\n\r\nconst Navbar = () => {\r\n    return (\r\n        <nav id = \"navbar\" className='navbar navbar-expand-lg navbar-light position-sticky fixed-top'>\r\n            <a className=\"navbar-brand\" href=\"\">\r\n                <div className=\"d-flex align-items-center\">\r\n                    <Link to=\"/\"><DiskuyLogo /></Link>\r\n                </div>\r\n            </a>\r\n            <ul className=\"navbar-nav ml-auto\">\r\n                <li className=\"nav-item ml-auto\">\r\n                    <Link to=\"/topic\" className=\"nav-link\"><b>Home</b></Link>\r\n                </li>\r\n                <li className=\"nav-item ml-auto\">\r\n                    <Link to=\"/thread\" className=\"nav-link\"><b>Threads</b></Link>\r\n                </li>\r\n                <li className=\"nav-item ml-auto\">\r\n                    <Link to=\"/profile\" className=\"nav-link\"><b>Profile</b></Link>\r\n                </li>\r\n            </ul>\r\n        </nav>\r\n    );\r\n}\r\n\r\nexport default Navbar;\r\n","C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Comment.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Button.js",[],"C:\\Users\\ASUS\\Documents\\pemfung\\diskuy\\src\\Post.js",[],{"ruleId":"49","replacedBy":"50"},{"ruleId":"51","replacedBy":"52"},{"ruleId":"53","severity":1,"message":"54","line":53,"column":67,"nodeType":"55","messageId":"56","endLine":53,"endColumn":69},{"ruleId":"57","severity":1,"message":"58","line":11,"column":13,"nodeType":"59","endLine":11,"endColumn":49},"no-native-reassign",["60"],"no-negated-in-lhs",["61"],"eqeqeq","Expected '!==' and instead saw '!='.","BinaryExpression","unexpected","jsx-a11y/anchor-is-valid","The href attribute requires a valid value to be accessible. Provide a valid, navigable address as the href value. If you cannot provide a valid href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md","JSXOpeningElement","no-global-assign","no-unsafe-negation"]
->>>>>>> b787d09a38745fb5844d313f83e7237b86318391
diff --git a/diskuy/src/App.js b/diskuy/src/App.js
index 3e5067c..a513f2c 100644
--- a/diskuy/src/App.js
+++ b/diskuy/src/App.js
@@ -2,7 +2,8 @@ import './App.css';
 import Thread from './Threads/Thread';
 import Topic from './Topic';
 import Navbar from './Navbar';
-import Profile from './Profile';
+import Profile from './Profile/Profile';
+import ListThreads from './Threads/ListThreads';
 import Form from './Form';
 import TopicList from './TopicList';
 import {
@@ -21,6 +22,7 @@ function App() {
       <Route exact path='/:topic/thread/create' component={Form} />
       <Route exact path='/:topic/:thread' component={Thread} />
       <Route exact path='/:topic' component={Topic} />
+      <Route exact path='/threads' component={ListThreads} />
     </Router>
   );
 }
-- 
GitLab