diff --git a/core/src/main/groovy/com/muwire/core/messenger/Messenger.groovy b/core/src/main/groovy/com/muwire/core/messenger/Messenger.groovy index 7737c4d8..b254e995 100644 --- a/core/src/main/groovy/com/muwire/core/messenger/Messenger.groovy +++ b/core/src/main/groovy/com/muwire/core/messenger/Messenger.groovy @@ -180,12 +180,13 @@ class Messenger { } public synchronized void onMessageReceivedEvent(MessageReceivedEvent e) { - inboxMessages.add(e.message) - diskIO.execute({ - File unread = new File(inbox, deriveUnread(e.message)) - unread.createNewFile() - persist(e.message, inbox) - }) + if (inboxMessages.add(e.message)) { + diskIO.execute({ + File unread = new File(inbox, deriveUnread(e.message)) + unread.createNewFile() + persist(e.message, inbox) + }) + } } private boolean deliverTo(MWMessage message, Persona recipient) { diff --git a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy index 5f2a4834..09d39012 100644 --- a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy @@ -857,12 +857,13 @@ class MainFrameModel { void onMessageReceivedEvent(MessageReceivedEvent e) { runInsideUIAsync { - messages++ - messageHeadersMap.get(Messenger.INBOX).add(new MWMessageStatus(e.message, true)) - if (folderIdx == Messenger.INBOX) { - messageHeaders.clear() - messageHeaders.addAll(messageHeadersMap.get(Messenger.INBOX)) - view.messageHeaderTable.model.fireTableDataChanged() + if (messageHeadersMap.get(Messenger.INBOX).add(new MWMessageStatus(e.message, true))) { + messages++ + if (folderIdx == Messenger.INBOX) { + messageHeaders.clear() + messageHeaders.addAll(messageHeadersMap.get(Messenger.INBOX)) + view.messageHeaderTable.model.fireTableDataChanged() + } } } }