]> Untitled Git - lemmy.git/commitdiff
Adding comment permalinks.
authorDessalines <tyhou13@gmx.com>
Fri, 5 Apr 2019 20:22:59 +0000 (13:22 -0700)
committerDessalines <tyhou13@gmx.com>
Fri, 5 Apr 2019 20:22:59 +0000 (13:22 -0700)
Fixes #18

ui/src/components/post-listings.tsx
ui/src/components/post.tsx

index fcc41cf5b1b58ef7897c74dc78db610e2dbd42e8..98fe8f21171695728667734fcab63e5473848496 100644 (file)
@@ -83,7 +83,7 @@ export class PostListings extends Component<PostListingsProps, PostListingsState
         {this.state.posts.length > 0 
           ? this.state.posts.map(post => 
             <PostListing post={post} showCommunity={!this.props.communityId}/>) 
-          : <div>No Listings</div>
+          : <div>No Listings. Subscribe to some <Link to="/communities">forums</Link>.</div>
         }
       </div>
     )
index 2a870c4dc077ea0da29406e760ea2228d615a5f1..e7c66e94b194b2fdeedd09c311deb11b66bb219b 100644 (file)
@@ -21,6 +21,7 @@ interface PostState {
   commentSort: CommentSortType;
   community: Community;
   moderators: Array<CommunityUser>;
+  scrolled: boolean;
 }
 
 export class Post extends Component<any, PostState> {
@@ -31,7 +32,8 @@ export class Post extends Component<any, PostState> {
     comments: [],
     commentSort: CommentSortType.Hot,
     community: null,
-    moderators: []
+    moderators: [],
+    scrolled: false
   }
 
   constructor(props, context) {
@@ -60,6 +62,15 @@ export class Post extends Component<any, PostState> {
     autosize(document.querySelectorAll('textarea'));
   }
 
+  componentDidUpdate(lastProps: any, lastState: PostState, snapshot: any) {
+    if (!this.state.scrolled && lastState.comments.length > 0 && window.location.href.includes('#comment-')) {
+      let id = window.location.hash.split("#")[2];
+      var elmnt = document.getElementById(`${id}`);
+      elmnt.scrollIntoView(); 
+      this.state.scrolled = true;
+    }
+  }
+
   render() {
     return (
       <div class="container">
@@ -294,7 +305,7 @@ export class CommentNode extends Component<CommentNodeProps, CommentNodeState> {
   render() {
     let node = this.props.node;
     return (
-      <div className={`comment ${node.comment.parent_id  && !this.props.noIndent ? 'ml-4' : ''}`}>
+      <div id={`comment-${node.comment.id}`} className={`comment ${node.comment.parent_id  && !this.props.noIndent ? 'ml-4' : ''}`}>
         <div className="float-left small text-center">
           <div className={`pointer upvote ${node.comment.my_vote == 1 ? 'text-info' : 'text-muted'}`} onClick={linkEvent(node, this.handleCommentLike)}>▲</div>
           <div>{node.comment.score}</div>
@@ -336,7 +347,7 @@ export class CommentNode extends Component<CommentNodeProps, CommentNodeState> {
                   </li>
                 }
                 <li className="list-inline-item">
-                  <a className="text-muted" href="test">link</a>
+                  <Link className="text-muted" to={`/post/${node.comment.post_id}#comment-${node.comment.id}`}>link</Link>
                 </li>
               </ul>
             </div>