proper error state for images

This commit is contained in:
iNPUTmice 2014-10-29 11:31:03 +01:00
parent 64209829f7
commit 03593ba56f
6 changed files with 17 additions and 20 deletions

View file

@ -281,5 +281,6 @@
<string name="message_text">Message text</string> <string name="message_text">Message text</string>
<string name="url_copied_to_clipboard">URL copied to clipboard</string> <string name="url_copied_to_clipboard">URL copied to clipboard</string>
<string name="message_copied_to_clipboard">Message copied to clipboard</string> <string name="message_copied_to_clipboard">Message copied to clipboard</string>
<string name="image_transmission_failed">Image transmission failed</string>
</resources> </resources>

View file

@ -16,7 +16,6 @@ public class Message extends AbstractEntity {
public static final int STATUS_UNSEND = 1; public static final int STATUS_UNSEND = 1;
public static final int STATUS_SEND = 2; public static final int STATUS_SEND = 2;
public static final int STATUS_SEND_FAILED = 3; public static final int STATUS_SEND_FAILED = 3;
public static final int STATUS_SEND_REJECTED = 4;
public static final int STATUS_WAITING = 5; public static final int STATUS_WAITING = 5;
public static final int STATUS_OFFERED = 6; public static final int STATUS_OFFERED = 6;
public static final int STATUS_SEND_RECEIVED = 7; public static final int STATUS_SEND_RECEIVED = 7;

View file

@ -11,7 +11,6 @@ import eu.siacs.conversations.crypto.PgpEngine;
import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Downloadable;
import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Message;
import eu.siacs.conversations.entities.MucOptions; import eu.siacs.conversations.entities.MucOptions;
import eu.siacs.conversations.entities.Presences; import eu.siacs.conversations.entities.Presences;

View file

@ -100,6 +100,9 @@ public class MessageAdapter extends ArrayAdapter<Message> {
if (params.size != 0) { if (params.size != 0) {
filesize = params.size / 1024 + " KB"; filesize = params.size / 1024 + " KB";
} }
if (message.getDownloadable() != null && message.getDownloadable().getStatus() == Downloadable.STATUS_FAILED) {
error = true;
}
} }
switch (message.getMergedStatus()) { switch (message.getMergedStatus()) {
case Message.STATUS_WAITING: case Message.STATUS_WAITING:
@ -125,10 +128,6 @@ public class MessageAdapter extends ArrayAdapter<Message> {
info = getContext().getString(R.string.send_failed); info = getContext().getString(R.string.send_failed);
error = true; error = true;
break; break;
case Message.STATUS_SEND_REJECTED:
info = getContext().getString(R.string.send_rejected);
error = true;
break;
default: default:
if (multiReceived) { if (multiReceived) {
Contact contact = message.getContact(); Contact contact = message.getContact();
@ -484,6 +483,8 @@ public class MessageAdapter extends ArrayAdapter<Message> {
&& d.getStatus() == Downloadable.STATUS_OFFER_CHECK_FILESIZE) { && d.getStatus() == Downloadable.STATUS_OFFER_CHECK_FILESIZE) {
displayDownloadableMessage(viewHolder, item, displayDownloadableMessage(viewHolder, item,
R.string.check_image_filesize); R.string.check_image_filesize);
} else if (d != null && d.getStatus() == Downloadable.STATUS_FAILED) {
displayInfoMessage(viewHolder, R.string.image_transmission_failed);
} else if ((item.getEncryption() == Message.ENCRYPTION_DECRYPTED) } else if ((item.getEncryption() == Message.ENCRYPTION_DECRYPTED)
|| (item.getEncryption() == Message.ENCRYPTION_NONE) || (item.getEncryption() == Message.ENCRYPTION_NONE)
|| (item.getEncryption() == Message.ENCRYPTION_OTR)) { || (item.getEncryption() == Message.ENCRYPTION_OTR)) {

View file

@ -73,11 +73,7 @@ public class JingleConnection implements Downloadable {
@Override @Override
public void onIqPacketReceived(Account account, IqPacket packet) { public void onIqPacketReceived(Account account, IqPacket packet) {
if (packet.getType() == IqPacket.TYPE_ERROR) { if (packet.getType() == IqPacket.TYPE_ERROR) {
if (initiator.equals(account.getFullJid())) { cancel();
mXmppConnectionService.markMessage(message,
Message.STATUS_SEND_FAILED);
}
mJingleStatus = JINGLE_STATUS_FAILED;
} }
} }
}; };
@ -354,6 +350,7 @@ public class JingleConnection implements Downloadable {
} }
private void sendInitRequest() { private void sendInitRequest() {
this.mXmppConnectionService.markMessage(this.message, Message.STATUS_OFFERED);
JinglePacket packet = this.bootstrapPacket("session-initiate"); JinglePacket packet = this.bootstrapPacket("session-initiate");
Content content = new Content(this.contentCreator, this.contentName); Content content = new Content(this.contentCreator, this.contentName);
if (message.getType() == Message.TYPE_IMAGE) { if (message.getType() == Message.TYPE_IMAGE) {
@ -715,16 +712,11 @@ public class JingleConnection implements Downloadable {
if (this.responder.equals(account.getFullJid())) { if (this.responder.equals(account.getFullJid())) {
this.mStatus = Downloadable.STATUS_FAILED; this.mStatus = Downloadable.STATUS_FAILED;
this.mXmppConnectionService.updateConversationUi(); this.mXmppConnectionService.updateConversationUi();
} else {
if (this.mJingleStatus == JINGLE_STATUS_INITIATED) {
this.mXmppConnectionService.markMessage(this.message,
Message.STATUS_SEND_REJECTED);
} else { } else {
this.mXmppConnectionService.markMessage(this.message, this.mXmppConnectionService.markMessage(this.message,
Message.STATUS_SEND_FAILED); Message.STATUS_SEND_FAILED);
} }
} }
}
this.mJingleConnectionManager.finishConnection(this); this.mJingleConnectionManager.finishConnection(this);
} }

View file

@ -44,8 +44,13 @@ public class JingleConnectionManager extends AbstractConnectionManager {
return; return;
} }
} }
account.getXmppConnection().sendIqPacket( IqPacket response = packet.generateRespone(IqPacket.TYPE_ERROR);
packet.generateRespone(IqPacket.TYPE_ERROR), null); Element error = response.addChild("error");
error.setAttribute("type", "cancel");
error.addChild("item-not-found",
"urn:ietf:params:xml:ns:xmpp-stanzas");
error.addChild("unknown-session", "urn:xmpp:jingle:errors:1");
account.getXmppConnection().sendIqPacket(response, null);
} }
} }