From e00dc41afada45c9cc0cab882d5e67f8d0c980f2 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 26 Apr 2024 18:33:58 +0300 Subject: "Mark read" button --- src/main/java/com/juick/service/MessagesService.java | 3 +++ src/main/java/com/juick/service/MessagesServiceImpl.java | 9 +++++++++ src/main/java/com/juick/www/api/Messages.java | 6 ++++++ 3 files changed, 18 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/com/juick/service/MessagesService.java b/src/main/java/com/juick/service/MessagesService.java index f2321b2a..707a04c3 100644 --- a/src/main/java/com/juick/service/MessagesService.java +++ b/src/main/java/com/juick/service/MessagesService.java @@ -142,6 +142,9 @@ public interface MessagesService { @CacheEvict(value = { "discover", "discussions", "messages", "replies" }, allEntries = true, condition = "{ #user.uid != 0 }") void setLastReadComment(User user, Integer mid, Integer rid); + @CacheEvict(value = { "discover", "discussions", "messages", "replies" }, allEntries = true, condition = "{ #user.uid != 0 }") + void setAllRead(User user); + @CacheEvict(value = { "discover", "discussions", "messages", "replies" }, allEntries = true, condition = "{ #user.uid != 0 }") void setRead(User user, Integer mid); diff --git a/src/main/java/com/juick/service/MessagesServiceImpl.java b/src/main/java/com/juick/service/MessagesServiceImpl.java index 940cdaba..105b86cf 100644 --- a/src/main/java/com/juick/service/MessagesServiceImpl.java +++ b/src/main/java/com/juick/service/MessagesServiceImpl.java @@ -1084,6 +1084,15 @@ public class MessagesServiceImpl extends BaseJdbcService implements MessagesServ rid, mid, user.getUid()); } + @Override + public void setAllRead(User user) { + jdbcTemplate.update(""" + update subscr_messages set last_read_rid=total.replies FROM messages + INNER JOIN messages total on total.message_id=messages.message_id + WHERE messages.message_id=subscr_messages.message_id AND subscr_messages.suser_id=? + """, user.getUid()); + } + @Transactional @Override public void setRead(User user, Integer mid) { diff --git a/src/main/java/com/juick/www/api/Messages.java b/src/main/java/com/juick/www/api/Messages.java index 969bef4f..5a90bf0b 100644 --- a/src/main/java/com/juick/www/api/Messages.java +++ b/src/main/java/com/juick/www/api/Messages.java @@ -210,6 +210,12 @@ public class Messages { } throw new HttpBadRequestException(); } + @PostMapping("/api/messages/mark_read") + public void markRead(@Parameter(hidden = true) User visitor) { + if (!visitor.isAnonymous()) { + messagesService.setAllRead(visitor); + } + } @PostMapping("/api/messages/set_privacy") public void togglePrivacy(@Parameter(hidden = true) User visitor, @RequestParam Integer mid) { if (visitor.isPremium() || visitor.isAdmin()) { -- cgit v1.2.3