diff options
3 files changed, 36 insertions, 16 deletions
diff --git a/juick-core/src/main/java/com/juick/Message.java b/juick-core/src/main/java/com/juick/Message.java index cb5fe92e..cc2381d8 100644 --- a/juick-core/src/main/java/com/juick/Message.java +++ b/juick-core/src/main/java/com/juick/Message.java @@ -58,6 +58,7 @@ public class Message implements Comparable { public List<Message> childs = new ArrayList<>(); private PM PM; private Recommendation Recommendation; + private String replyQuote; public Message() { } @@ -254,4 +255,11 @@ public class Message implements Comparable { public void setLiked(boolean liked) { this.liked = liked; } + + public String getReplyQuote() { + return replyQuote; + } + public void setReplyQuote(String quote) { + replyQuote = quote; + } } diff --git a/juick-core/src/main/java/com/juick/formatters/PlainTextFormatter.java b/juick-core/src/main/java/com/juick/formatters/PlainTextFormatter.java index 37b0c6d3..6c712d28 100644 --- a/juick-core/src/main/java/com/juick/formatters/PlainTextFormatter.java +++ b/juick-core/src/main/java/com/juick/formatters/PlainTextFormatter.java @@ -10,7 +10,7 @@ public class PlainTextFormatter { StringBuilder sb = new StringBuilder(); boolean isReply = jmsg.getRID() > 0; String title = isReply ? "Reply by @" : "@"; - String subtitle = isReply ? getReplyQuote(jmsg) : jmsg.getTagsString(); + String subtitle = isReply ? jmsg.getReplyQuote() : jmsg.getTagsString(); sb.append(title).append(jmsg.getUser().getUName()).append(":\n") .append(subtitle).append("\n").append(jmsg.getText()).append("\n"); if (jmsg.Photo != null) { @@ -25,14 +25,4 @@ public class PlainTextFormatter { } return "https://juick.com/" + jmsg.getMID(); } - - private static String getReplyQuote(Message msg) { - String quote = msg.getText(); - if (quote.length() > 50) { - quote = ">" + quote.substring(0, 47).replace('\n', ' ') + "...\n"; - } else if (quote.length() > 0) { - quote = ">" + quote.replace('\n', ' ') + "\n"; - } - return quote; - } } diff --git a/juick-core/src/main/java/com/juick/server/MessagesQueries.java b/juick-core/src/main/java/com/juick/server/MessagesQueries.java index fa8881f3..40449e75 100644 --- a/juick-core/src/main/java/com/juick/server/MessagesQueries.java +++ b/juick-core/src/main/java/com/juick/server/MessagesQueries.java @@ -75,6 +75,7 @@ public class MessagesQueries { } msg.RepliesBy = rs.getString(19); msg.setText(rs.getString(20)); + msg.setReplyQuote(formatQuote(rs.getString(21))); return msg; } } @@ -247,7 +248,7 @@ public class MessagesQueries { + "messages.readonly,messages.privacy,messages.replies," + "messages.attach,messages.place_id,messages.lat," + "messages.lon,messages.likes,messages.hidden," - + "txt.tags,txt.repliesby,txt.txt FROM messages " + + "txt.tags,txt.repliesby,txt.txt, '' as q FROM messages " + "INNER JOIN users ON messages.user_id=users.id " + "INNER JOIN messages_txt AS txt " + "ON messages.message_id=txt.message_id " @@ -262,8 +263,11 @@ public class MessagesQueries { try { return sql.queryForObject("SELECT replies.user_id,users.nick," + "replies.replyto,replies.ts," - + "replies.attach,replies.txt FROM replies INNER JOIN users " + + "replies.attach,replies.txt, IFNULL(q.txt,t.txt) as quote FROM replies INNER JOIN users " + "ON replies.user_id=users.id " + + "LEFT JOIN replies q " + + "ON replies.message_id=q.message_id and replies.replyto=q.reply_id " + + "LEFT JOIN messages_txt t ON replies.message_id=t.message_id " + "WHERE replies.message_id=? AND replies.reply_id=?", (rs, num) -> { Message msg = new Message(); @@ -276,6 +280,10 @@ public class MessagesQueries { msg.setDate(rs.getTimestamp(4)); msg.AttachmentType = rs.getString(5); msg.setText(rs.getString(6)); + String quote = rs.getString(7); + if (!StringUtils.isEmpty(quote)) { + msg.setReplyQuote(formatQuote(quote)); + } return msg; }, mid, rid); } catch (EmptyResultDataAccessException e) { @@ -584,7 +592,7 @@ public class MessagesQueries { + "messages.readonly,messages.privacy,messages.replies," + "messages.attach,messages.place_id,messages.lat," + "messages.lon,messages.likes,messages.hidden," - + "messages_txt.tags,messages_txt.repliesby, messages_txt.txt " + + "messages_txt.tags,messages_txt.repliesby, messages_txt.txt, '' as q " + "FROM (messages INNER JOIN messages_txt " + "ON messages.message_id=messages_txt.message_id) " + "INNER JOIN users ON messages.user_id=users.id " @@ -602,9 +610,14 @@ public class MessagesQueries { "0 as readonly, 0 as privacy, 0 as replies," + "replies.attach, 0 as place_id, 0 as lat," + "0 as lon, 0 as likes, 0 as hidden," + - "NULL as tags,NULL as repliesby, replies.txt " + + "NULL as tags,NULL as repliesby, replies.txt, " + + "IFNULL(qw.txt, t.txt) as q " + "FROM replies INNER JOIN users " + - "ON replies.user_id=users.id WHERE replies.message_id=? ORDER BY replies.reply_id ASC", + "ON replies.user_id=users.id " + + "LEFT JOIN replies qw ON replies.message_id=qw.message_id and replies.replyto=qw.reply_id " + + "LEFT JOIN messages_txt t on replies.message_id=t.message_id " + + "WHERE replies.message_id=? " + + "ORDER BY replies.reply_id ASC", new MessageMapper(), mid, mid); } @@ -642,4 +655,13 @@ public class MessagesQueries { return false; } + private static String formatQuote(String quote) { + if (quote.length() > 50) { + quote = ">" + quote.substring(0, 47).replace('\n', ' ') + "...\n"; + } else if (quote.length() > 0) { + quote = ">" + quote.replace('\n', ' ') + "\n"; + } + return quote; + } + } |