mirror of https://github.com/zlatinb/muwire
working sending and receiving of messages
parent
119107b400
commit
6a0a4dae12
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue