]> Untitled Git - lemmy.git/commitdiff
Now by default like your own comment.
authorDessalines <tyhou13@gmx.com>
Thu, 28 Mar 2019 19:53:29 +0000 (12:53 -0700)
committerDessalines <tyhou13@gmx.com>
Thu, 28 Mar 2019 19:53:29 +0000 (12:53 -0700)
server/src/actions/comment.rs
server/src/websocket_server/server.rs

index 7f2dace6c587cc35f3e598b9b3e7c3d2d7a2d915..6a1a4671e0efbb6ab803851a60d872bf3734c8ba 100644 (file)
@@ -145,7 +145,7 @@ pub struct CommentView {
 }
 
 impl CommentView {
-  fn from_comment(comment: &Comment, likes: &Vec<CommentLike>, fedi_user_id: &Option<String>) -> Self {
+  pub fn from_comment(comment: &Comment, likes: &Vec<CommentLike>, fedi_user_id: &Option<String>) -> Self {
     let mut upvotes: i32 = 0;
     let mut downvotes: i32 = 0;
     let mut my_vote: Option<i16> = Some(0);
@@ -182,10 +182,6 @@ impl CommentView {
     }
   }
 
-  pub fn from_new_comment(comment: &Comment) -> Self {
-    Self::from_comment(comment, &Vec::new(), &None)
-  }
-
   pub fn read(conn: &PgConnection, comment_id: i32, fedi_user_id: &Option<String>) -> Self {
     let comment = Comment::read(&conn, comment_id).unwrap();
     let likes = CommentLike::read(&conn, comment_id).unwrap();
index 78a71ec8e9242a91d3d8444583f09632d40abbee..cb2b619bf197f0b92f884fc2280620400108269d 100644 (file)
@@ -693,26 +693,45 @@ impl Perform for CreateComment {
 
     let user_id = claims.id;
     let iss = claims.iss;
+    let fedi_user_id = format!("{}/{}", iss, user_id);
 
     let comment_form = CommentForm {
       content: self.content.to_owned(),
       parent_id: self.parent_id.to_owned(),
       post_id: self.post_id,
-      attributed_to: format!("{}/{}", iss, user_id),
+      attributed_to: fedi_user_id.to_owned(),
       updated: None
     };
 
     let inserted_comment = match Comment::create(&conn, &comment_form) {
       Ok(comment) => comment,
       Err(e) => {
-        return self.error("Couldn't create Post");
+        return self.error("Couldn't create Comment");
+      }
+    };
+
+    // You like your own comment by default
+    let like_form = CommentLikeForm {
+      comment_id: inserted_comment.id,
+      post_id: self.post_id,
+      fedi_user_id: fedi_user_id.to_owned(),
+      score: 1
+    };
+
+    let inserted_like = match CommentLike::like(&conn, &like_form) {
+      Ok(like) => like,
+      Err(e) => {
+        return self.error("Couldn't like comment.");
       }
     };
 
-    // TODO You like your own comment by default
+    let likes: Vec<CommentLike> = vec![inserted_like];
 
-    // Simulate a comment view to get back blank score, no need to fetch anything
-    let comment_view = CommentView::from_new_comment(&inserted_comment);
+    let comment_view = CommentView::from_comment(&inserted_comment, &likes, &Some(fedi_user_id));
+
+
+    let mut comment_sent = comment_view.clone();
+    comment_sent.my_vote = None;
 
     let comment_out = serde_json::to_string(
       &CreateCommentResponse {
@@ -721,11 +740,17 @@ impl Perform for CreateComment {
       }
       )
       .unwrap();
-    
-    chat.send_room_message(self.post_id, &comment_out, addr);
 
-    // println!("{:?}", chat.rooms.keys());
-    // println!("{:?}", chat.rooms.get(&5i32).unwrap());
+
+    let comment_sent_out = serde_json::to_string(
+      &CreateCommentLikeResponse {
+        op: self.op_type().to_string(), 
+        comment: comment_sent
+      }
+      )
+      .unwrap();
+    
+    chat.send_room_message(self.post_id, &comment_sent_out, addr);
 
     comment_out
   }