From 11e2b1accd933eb9fcb4477a60dd0864d9f72a67 Mon Sep 17 00:00:00 2001 From: steckbrief Date: Mon, 31 Jul 2017 08:44:32 +0200 Subject: Implements FS#245: Implement FiletransferHttp (upload and delete), some minor bug fixes including to fail a JingleTransfer in case criterias are not met --- .../http/delete/DeletedIqPacketReceived.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/delete/DeletedIqPacketReceived.java (limited to 'src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/delete/DeletedIqPacketReceived.java') diff --git a/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/delete/DeletedIqPacketReceived.java b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/delete/DeletedIqPacketReceived.java new file mode 100644 index 00000000..470a6010 --- /dev/null +++ b/src/main/java/de/thedevstack/conversationsplus/services/filetransfer/http/delete/DeletedIqPacketReceived.java @@ -0,0 +1,47 @@ +package de.thedevstack.conversationsplus.services.filetransfer.http.delete; + +import android.widget.Toast; + +import de.thedevstack.android.logcat.Logging; +import de.thedevstack.conversationsplus.R; +import de.thedevstack.conversationsplus.entities.Account; +import de.thedevstack.conversationsplus.enums.FileStatus; +import de.thedevstack.conversationsplus.utils.MessageUtil; +import de.thedevstack.conversationsplus.utils.ui.ConversationsPlusToast; +import de.thedevstack.conversationsplus.xmpp.OnIqPacketReceived; +import de.thedevstack.conversationsplus.xmpp.exceptions.ServiceUnavailableException; +import de.thedevstack.conversationsplus.xmpp.exceptions.XmppException; +import de.thedevstack.conversationsplus.xmpp.filetransfer.http.delete.DeletedPacketParser; +import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; + +/** + * + */ +public class DeletedIqPacketReceived implements OnIqPacketReceived { + private final DeleteRemoteFile remoteFile; + + public DeletedIqPacketReceived(DeleteRemoteFile remoteFile) { + this.remoteFile = remoteFile; + } + + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + try { + boolean fileIsDeleted = DeletedPacketParser.parseDeleteToken(packet); + if (fileIsDeleted) { + MessageUtil.setAndSaveFileStatus(remoteFile.getMessage(), FileStatus.DELETED); + Logging.i("filetransfer.http.delete", "Remote file successfully deleted '" + remoteFile.getPath() + "'"); + } else { + Logging.e("filetransfer.http.delete", "Unexpectedly failed to delete remote file."); + } + } catch (XmppException e) { + Logging.e("filetransfer.http.delete", "Error while trying to delete remote file: " + e.getMessage()); + int messageResId = R.string.cplus_remote_file_delete_failed; + if (e instanceof ServiceUnavailableException) { + messageResId = R.string.cplus_remote_file_delete_service_unavailable; + } + ConversationsPlusToast.makeErrorToast(messageResId, Toast.LENGTH_LONG); + MessageUtil.setAndSaveFileStatus(remoteFile.getMessage(), FileStatus.DELETE_FAILED); + } + } +} -- cgit v1.2.3