From 77ae6a544470df53863d39f24a1115c173af182d Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 28 Apr 2017 10:56:44 +0200 Subject: [PATCH] OO-2724: update number of new messages in the thread list (if any are marked as seen) --- .../olat/modules/fo/ui/ForumController.java | 2 ++ .../modules/fo/ui/MessageListController.java | 28 +++++++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/olat/modules/fo/ui/ForumController.java b/src/main/java/org/olat/modules/fo/ui/ForumController.java index 867f17f5ef0..b6bc42177f1 100644 --- a/src/main/java/org/olat/modules/fo/ui/ForumController.java +++ b/src/main/java/org/olat/modules/fo/ui/ForumController.java @@ -208,6 +208,7 @@ public class ForumController extends BasicController implements GenericEventList } } else if(viewCtrl == source) { if(event == Event.BACK_EVENT) { + reloadThreadList |= viewCtrl.hasMarkedNewMessages(); doThreadList(ureq); } else if(event instanceof DeleteThreadEvent) { reloadThreadList = true; @@ -219,6 +220,7 @@ public class ForumController extends BasicController implements GenericEventList } } else if(userViewCtrl == source) { if(event == Event.BACK_EVENT) { + reloadThreadList |= userViewCtrl.hasMarkedNewMessages(); cleanUpMessageViews(); doUserList(ureq); } else if(event instanceof SelectMessageEvent) { diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java index 4ddd179269a..fec754d4dbf 100644 --- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java +++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java @@ -148,6 +148,7 @@ public class MessageListController extends BasicController implements GenericEve private Message thread; private boolean reloadList; + private boolean hasMarkedNewMessages; private final Forum forum; private final boolean guestOnly; @@ -211,6 +212,13 @@ public class MessageListController extends BasicController implements GenericEve CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, getIdentity(), forum); } + /** + * @return true if the controller has marked some new messages as seen + */ + public boolean hasMarkedNewMessages() { + return hasMarkedNewMessages; + } + @Override protected void doDispose() { CoordinatorManager.getInstance().getCoordinator().getEventBus().deregisterFor(this, forum); @@ -495,24 +503,7 @@ public class MessageListController extends BasicController implements GenericEve */ private void orderMessagesThreaded(List<MessageLight> messages, List<MessageLight> orderedList, MessageLight startMessage) { if (messages == null || orderedList == null || startMessage == null) return; - /* - Iterator<MessageLight> iterMsg = messages.iterator(); - while (iterMsg.hasNext()) { - MessageLight msg = iterMsg.next(); - if (msg.getParentKey() == null) { - orderedList.add(msg); - List<MessageLight> copiedMessages = new ArrayList<>(messages); - copiedMessages.remove(msg); - messages = copiedMessages; - continue; - } - if ((msg.getParentKey() != null) && (msg.getParentKey().equals(startMessage.getKey()))) { - orderedList.add(msg); - orderMessagesThreaded(messages, orderedList, msg); - } - } - */ - + Map<Long, MessageNode> messagesMap = new HashMap<>(); if(startMessage != null) { messagesMap.put(startMessage.getKey(), new MessageNode(startMessage)); @@ -563,6 +554,7 @@ public class MessageListController extends BasicController implements GenericEve private void markRead(MessageLight message) { if(!guestOnly) { forumManager.markAsRead(getIdentity(), forum, message); + hasMarkedNewMessages = true; } } -- GitLab