working sending and receiving of messages

reproducible
Zlatin Balevsky 2021-05-01 19:27:04 +01:00
parent 119107b400
commit 6a0a4dae12
No known key found for this signature in database
GPG Key ID: A72832072D525E41
5 changed files with 48 additions and 31 deletions

View File

@ -138,12 +138,12 @@ class Messenger {
synchronized void onUIMessageEvent(UIMessageEvent e) {
outboxMessages.add(e.message)
diskIO.execute({persist(e.message, outbox)})
diskIO.execute({persist(e.message, folders.get(OUTBOX))})
}
synchronized void onUIMessageReadEvent(UIMessageReadEvent e) {
diskIO.execute({
File unread = new File(inbox, deriveUnread(e.message))
File unread = new File(folders.get(INBOX), deriveUnread(e.message))
unread.delete()
})
}
@ -157,8 +157,8 @@ class Messenger {
private void moveToSent(MWMessage message) {
String name = deriveName(message)
File f = new File(outbox, name)
File target = new File(sent, name)
File f = new File(folders.get(OUTBOX), name)
File target = new File(folders.get(SENT), name)
Files.move(f.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING)
eventBus.publish(new MessageSentEvent(message : message))
log.fine("moved message to ${message.recipients} to sent folder")
@ -213,9 +213,9 @@ class Messenger {
public synchronized void onMessageReceivedEvent(MessageReceivedEvent e) {
if (inboxMessages.add(e.message)) {
diskIO.execute({
File unread = new File(inbox, deriveUnread(e.message))
File unread = new File(folders.get(INBOX), deriveUnread(e.message))
unread.createNewFile()
persist(e.message, inbox)
persist(e.message, folders.get(INBOX))
})
}
}
@ -247,9 +247,9 @@ class Messenger {
public synchronized void onUIMessageDeleteEvent(UIMessageDeleteEvent e) {
switch(e.folder) {
case INBOX : deleteFromFolder(e.message, inboxMessages, inbox); break;
case OUTBOX : deleteFromFolder(e.message, outboxMessages, outbox); break;
case SENT : deleteFromFolder(e.message, sentMessages, sent); break
case INBOX : deleteFromFolder(e.message, inboxMessages, folders.get(INBOX)); break;
case OUTBOX : deleteFromFolder(e.message, outboxMessages, folders.get(OUTBOX)); break;
case SENT : deleteFromFolder(e.message, sentMessages, folders.get(SENT)); break
}
}

View File

@ -69,7 +69,7 @@ class MessageFolderController {
void messageCompose() {
def params = [:]
params.recipients = new HashSet<>()
params.core = core
params.core = model.core
mvcGroup.createMVCGroup("new-message", UUID.randomUUID().toString(), params)
}
@ -108,7 +108,7 @@ class MessageFolderController {
}
}
application.mvcGroupManager.findGroup('main-frame').view.showDownloadsWindow.call()
application.mvcGroupManager.findGroup('MainFrame').view.showDownloadsWindow.call()
}
void markMessageRead(MWMessageStatus status) {

View File

@ -1,6 +1,10 @@
package com.muwire.gui
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonController
import javax.inject.Inject
import static com.muwire.gui.Translator.trans
import griffon.core.controller.ControllerAction
@ -22,6 +26,8 @@ class NewMessageController {
NewMessageModel model
@MVCMember @Nonnull
NewMessageView view
@Inject @Nonnull
GriffonApplication application
@ControllerAction
void send() {

View File

@ -823,12 +823,8 @@ class MainFrameModel {
}
void addToOutbox(MWMessage message) {
messageHeadersMap.get(Messenger.OUTBOX).add(new MWMessageStatus(message, false))
if (folderIdx == Messenger.OUTBOX) {
messageHeaders.clear()
messageHeaders.addAll(messageHeadersMap.get(Messenger.OUTBOX))
view.messageHeaderTable.model.fireTableDataChanged()
}
def status = new MWMessageStatus(message, false)
messageFoldersMap.get(Messenger.OUTBOX).model.add(status)
}
void onMessageLoadedEvent(MessageLoadedEvent e) {
@ -843,15 +839,10 @@ class MainFrameModel {
void onMessageReceivedEvent(MessageReceivedEvent e) {
runInsideUIAsync {
if (messageHeadersMap.get(Messenger.INBOX).add(new MWMessageStatus(e.message, true))) {
if (messageFoldersMap.get(Messenger.INBOX).model.processMessageReceivedEvent(e)) {
messages++
messageNotificator.newMessage(e.message.sender.getHumanReadableName())
messageNotificator.messages(messages)
if (folderIdx == Messenger.INBOX) {
messageHeaders.clear()
messageHeaders.addAll(messageHeadersMap.get(Messenger.INBOX))
view.messageHeaderTable.model.fireTableDataChanged()
}
}
}
}
@ -859,13 +850,8 @@ class MainFrameModel {
void onMessageSentEvent(MessageSentEvent e) {
runInsideUIAsync {
MWMessageStatus status = new MWMessageStatus(e.message, false)
messageHeadersMap.get(Messenger.OUTBOX).remove(status)
messageHeadersMap.get(Messenger.SENT).add(status)
if (folderIdx != Messenger.INBOX) {
messageHeaders.clear()
messageHeaders.addAll(messageHeadersMap.get(folderIdx))
view.messageHeaderTable.model.fireTableDataChanged()
}
messageFoldersMap.get(Messenger.OUTBOX).model.remove(status)
messageFoldersMap.get(Messenger.SENT).model.add(status)
}
}

View File

@ -3,6 +3,7 @@ package com.muwire.gui
import com.muwire.core.Core
import com.muwire.core.messenger.MWMessage
import com.muwire.core.messenger.MessageLoadedEvent
import com.muwire.core.messenger.MessageReceivedEvent
import griffon.core.artifact.GriffonModel
import griffon.inject.MVCMember
import griffon.transform.Observable
@ -39,7 +40,31 @@ class MessageFolderModel {
def status = new MWMessageStatus(e.message, e.unread)
if (messages.add(status)) {
messageHeaders.add(status)
view.messageHeaderTable.model.fireTableDataChanged()
}
}
boolean processMessageReceivedEvent(MessageReceivedEvent e) {
def status = new MWMessageStatus(e.message, true)
if (messages.add(status)) {
messageHeaders.add(status)
view.messageHeaderTable.model.fireTableDataChanged()
return true
}
false
}
void remove(MWMessageStatus status) {
if (messages.remove(status)) {
messageHeaders.remove(status)
view.messageHeaderTable.model.fireTableDataChanged()
}
}
void add(MWMessageStatus status) {
if (messages.add(status)) {
messageHeaders.add(status)
view.messageHeaderTable.model.fireTableDataChanged()
}
view.messageHeaderTable.model.fireTableDataChanged()
}
}