Do not send messages twice
git-svn-id: https://svn.apache.org/repos/asf/james/hupa/trunk@1671549 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java b/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
index 316dd77..8bcf3b5 100644
--- a/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
+++ b/client/src/main/java/org/apache/hupa/client/activity/ComposeActivity.java
@@ -83,6 +83,7 @@
private List<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
protected ComposePlace place;
private User user;
+ private boolean sending;
public Activity with(ComposePlace place) {
this.place = place;
@@ -223,7 +224,7 @@
return ret;
}
protected void bindTo(EventBus eventBus) {
- eventBus.addHandler(AddressClickEvent.TYPE, new AddressClickEventHandler() {
+ registerHandler(eventBus.addHandler(AddressClickEvent.TYPE, new AddressClickEventHandler() {
@Override
public void onClick(AddressClickEvent event) {
String to = display.getTo().getText();
@@ -233,23 +234,23 @@
display.getTo().setText(event.getEmail());
}
}
- });
- eventBus.addHandler(SendClickEvent.TYPE, new SendClickEventHandler() {
+ }));
+ registerHandler(eventBus.addHandler(SendClickEvent.TYPE, new SendClickEventHandler() {
public void onSendClick(SendClickEvent event) {
send();
}
- });
- eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
+ }));
+ registerHandler(eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() {
public void onLogin(LoginEvent event) {
user = event.getUser();
}
- });
- eventBus.addHandler(AttachClickEvent.TYPE, new AttachClickEventHandler() {
+ }));
+ registerHandler(eventBus.addHandler(AttachClickEvent.TYPE, new AttachClickEventHandler() {
public void onAttachClick(AttachClickEvent event) {
display.getAttachButton().fireEvent(new ClickEvent() {
});
}
- });
+ }));
registerHandler(display.getSendClick().addClickHandler(sendClickHandler));
registerHandler(display.getCancelClick().addClickHandler(cancelClickHandler));
@@ -305,12 +306,12 @@
registerHandler(display.getUploader().addOnFinishUploadHandler(onFinishUploadHandler));
registerHandler(display.getUploader().addOnCancelUploadHandler(onCancelUploadHandler));
- eventBus.addHandler(MailToEvent.TYPE, new MailToEventHandler() {
+ registerHandler(eventBus.addHandler(MailToEvent.TYPE, new MailToEventHandler() {
@Override
public void onMailTo(MailToEvent event) {
display.getTo().setText(event.getMailto());
}
- });
+ }));
fillSuggestList();
@@ -378,6 +379,7 @@
protected void send() {
if (!validate())
return;
+ sending = true;
hupaController.showTopLoading("Sending...");
MessageDetails oldDetails = place.getParameters().getOldDetails();
@@ -429,7 +431,8 @@
}
private boolean validate() {
// Don't trust only in view validation
- return display.validate() && display.getTo().getText().trim().length() > 0
+ return !sending
+ && display.validate() && display.getTo().getText().trim().length() > 0
&& EmailListValidator.isValidAddressList(display.getTo().getText())
&& EmailListValidator.isValidAddressList(display.getCc().getText())
&& EmailListValidator.isValidAddressList(display.getBcc().getText());
@@ -467,6 +470,7 @@
}
private void afterSend(GenericResult response) {
+ sending = false;
hupaController.hideTopLoading();
hupaController.showNotice("Your mail has been sent.", 10000);
History.back();