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