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) {
|
synchronized void onUIMessageEvent(UIMessageEvent e) {
|
||||||
outboxMessages.add(e.message)
|
outboxMessages.add(e.message)
|
||||||
diskIO.execute({persist(e.message, outbox)})
|
diskIO.execute({persist(e.message, folders.get(OUTBOX))})
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void onUIMessageReadEvent(UIMessageReadEvent e) {
|
synchronized void onUIMessageReadEvent(UIMessageReadEvent e) {
|
||||||
diskIO.execute({
|
diskIO.execute({
|
||||||
File unread = new File(inbox, deriveUnread(e.message))
|
File unread = new File(folders.get(INBOX), deriveUnread(e.message))
|
||||||
unread.delete()
|
unread.delete()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -157,8 +157,8 @@ class Messenger {
|
||||||
|
|
||||||
private void moveToSent(MWMessage message) {
|
private void moveToSent(MWMessage message) {
|
||||||
String name = deriveName(message)
|
String name = deriveName(message)
|
||||||
File f = new File(outbox, name)
|
File f = new File(folders.get(OUTBOX), name)
|
||||||
File target = new File(sent, name)
|
File target = new File(folders.get(SENT), name)
|
||||||
Files.move(f.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING)
|
Files.move(f.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING)
|
||||||
eventBus.publish(new MessageSentEvent(message : message))
|
eventBus.publish(new MessageSentEvent(message : message))
|
||||||
log.fine("moved message to ${message.recipients} to sent folder")
|
log.fine("moved message to ${message.recipients} to sent folder")
|
||||||
|
@ -213,9 +213,9 @@ class Messenger {
|
||||||
public synchronized void onMessageReceivedEvent(MessageReceivedEvent e) {
|
public synchronized void onMessageReceivedEvent(MessageReceivedEvent e) {
|
||||||
if (inboxMessages.add(e.message)) {
|
if (inboxMessages.add(e.message)) {
|
||||||
diskIO.execute({
|
diskIO.execute({
|
||||||
File unread = new File(inbox, deriveUnread(e.message))
|
File unread = new File(folders.get(INBOX), deriveUnread(e.message))
|
||||||
unread.createNewFile()
|
unread.createNewFile()
|
||||||
persist(e.message, inbox)
|
persist(e.message, folders.get(INBOX))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -247,9 +247,9 @@ class Messenger {
|
||||||
|
|
||||||
public synchronized void onUIMessageDeleteEvent(UIMessageDeleteEvent e) {
|
public synchronized void onUIMessageDeleteEvent(UIMessageDeleteEvent e) {
|
||||||
switch(e.folder) {
|
switch(e.folder) {
|
||||||
case INBOX : deleteFromFolder(e.message, inboxMessages, inbox); break;
|
case INBOX : deleteFromFolder(e.message, inboxMessages, folders.get(INBOX)); break;
|
||||||
case OUTBOX : deleteFromFolder(e.message, outboxMessages, outbox); break;
|
case OUTBOX : deleteFromFolder(e.message, outboxMessages, folders.get(OUTBOX)); break;
|
||||||
case SENT : deleteFromFolder(e.message, sentMessages, sent); break
|
case SENT : deleteFromFolder(e.message, sentMessages, folders.get(SENT)); break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ class MessageFolderController {
|
||||||
void messageCompose() {
|
void messageCompose() {
|
||||||
def params = [:]
|
def params = [:]
|
||||||
params.recipients = new HashSet<>()
|
params.recipients = new HashSet<>()
|
||||||
params.core = core
|
params.core = model.core
|
||||||
mvcGroup.createMVCGroup("new-message", UUID.randomUUID().toString(), params)
|
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) {
|
void markMessageRead(MWMessageStatus status) {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package com.muwire.gui
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import griffon.core.GriffonApplication
|
||||||
import griffon.core.artifact.GriffonController
|
import griffon.core.artifact.GriffonController
|
||||||
|
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
import static com.muwire.gui.Translator.trans
|
import static com.muwire.gui.Translator.trans
|
||||||
|
|
||||||
import griffon.core.controller.ControllerAction
|
import griffon.core.controller.ControllerAction
|
||||||
|
@ -22,6 +26,8 @@ class NewMessageController {
|
||||||
NewMessageModel model
|
NewMessageModel model
|
||||||
@MVCMember @Nonnull
|
@MVCMember @Nonnull
|
||||||
NewMessageView view
|
NewMessageView view
|
||||||
|
@Inject @Nonnull
|
||||||
|
GriffonApplication application
|
||||||
|
|
||||||
@ControllerAction
|
@ControllerAction
|
||||||
void send() {
|
void send() {
|
||||||
|
|
|
@ -823,12 +823,8 @@ class MainFrameModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
void addToOutbox(MWMessage message) {
|
void addToOutbox(MWMessage message) {
|
||||||
messageHeadersMap.get(Messenger.OUTBOX).add(new MWMessageStatus(message, false))
|
def status = new MWMessageStatus(message, false)
|
||||||
if (folderIdx == Messenger.OUTBOX) {
|
messageFoldersMap.get(Messenger.OUTBOX).model.add(status)
|
||||||
messageHeaders.clear()
|
|
||||||
messageHeaders.addAll(messageHeadersMap.get(Messenger.OUTBOX))
|
|
||||||
view.messageHeaderTable.model.fireTableDataChanged()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onMessageLoadedEvent(MessageLoadedEvent e) {
|
void onMessageLoadedEvent(MessageLoadedEvent e) {
|
||||||
|
@ -843,15 +839,10 @@ class MainFrameModel {
|
||||||
|
|
||||||
void onMessageReceivedEvent(MessageReceivedEvent e) {
|
void onMessageReceivedEvent(MessageReceivedEvent e) {
|
||||||
runInsideUIAsync {
|
runInsideUIAsync {
|
||||||
if (messageHeadersMap.get(Messenger.INBOX).add(new MWMessageStatus(e.message, true))) {
|
if (messageFoldersMap.get(Messenger.INBOX).model.processMessageReceivedEvent(e)) {
|
||||||
messages++
|
messages++
|
||||||
messageNotificator.newMessage(e.message.sender.getHumanReadableName())
|
messageNotificator.newMessage(e.message.sender.getHumanReadableName())
|
||||||
messageNotificator.messages(messages)
|
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) {
|
void onMessageSentEvent(MessageSentEvent e) {
|
||||||
runInsideUIAsync {
|
runInsideUIAsync {
|
||||||
MWMessageStatus status = new MWMessageStatus(e.message, false)
|
MWMessageStatus status = new MWMessageStatus(e.message, false)
|
||||||
messageHeadersMap.get(Messenger.OUTBOX).remove(status)
|
messageFoldersMap.get(Messenger.OUTBOX).model.remove(status)
|
||||||
messageHeadersMap.get(Messenger.SENT).add(status)
|
messageFoldersMap.get(Messenger.SENT).model.add(status)
|
||||||
if (folderIdx != Messenger.INBOX) {
|
|
||||||
messageHeaders.clear()
|
|
||||||
messageHeaders.addAll(messageHeadersMap.get(folderIdx))
|
|
||||||
view.messageHeaderTable.model.fireTableDataChanged()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.muwire.gui
|
||||||
import com.muwire.core.Core
|
import com.muwire.core.Core
|
||||||
import com.muwire.core.messenger.MWMessage
|
import com.muwire.core.messenger.MWMessage
|
||||||
import com.muwire.core.messenger.MessageLoadedEvent
|
import com.muwire.core.messenger.MessageLoadedEvent
|
||||||
|
import com.muwire.core.messenger.MessageReceivedEvent
|
||||||
import griffon.core.artifact.GriffonModel
|
import griffon.core.artifact.GriffonModel
|
||||||
import griffon.inject.MVCMember
|
import griffon.inject.MVCMember
|
||||||
import griffon.transform.Observable
|
import griffon.transform.Observable
|
||||||
|
@ -39,7 +40,31 @@ class MessageFolderModel {
|
||||||
def status = new MWMessageStatus(e.message, e.unread)
|
def status = new MWMessageStatus(e.message, e.unread)
|
||||||
if (messages.add(status)) {
|
if (messages.add(status)) {
|
||||||
messageHeaders.add(status)
|
messageHeaders.add(status)
|
||||||
}
|
|
||||||
view.messageHeaderTable.model.fireTableDataChanged()
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue