package de.thedevstack.conversationsplus.persistance.observers; import android.os.FileObserver; import de.thedevstack.conversationsplus.entities.Conversation; import de.thedevstack.conversationsplus.entities.Message; import de.thedevstack.conversationsplus.entities.Transferable; import de.thedevstack.conversationsplus.entities.TransferablePlaceholder; import de.thedevstack.conversationsplus.utils.MessageUtil; import de.thedevstack.conversationsplus.utils.UiUpdateHelper; import de.thedevstack.conversationsplus.utils.XmppConnectionServiceAccessor; /** * Observer to mark messages containing files which are deleted. */ public class FileDeletionObserver extends FileObserver { public FileDeletionObserver(String path) { super(path, FileObserver.DELETE); } @Override public void onEvent(int event, String path) { if (null != path) { markFileDeleted(path.split("\\.")[0]); } } private void markFileDeleted(String uuid) { if (null != XmppConnectionServiceAccessor.xmppConnectionService) { for (Conversation conversation : XmppConnectionServiceAccessor.xmppConnectionService.getConversations()) { Message message = conversation.findMessageWithFileAndUuid(uuid); if (message != null) { message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED)); final int s = message.getStatus(); if (s == Message.STATUS_WAITING || s == Message.STATUS_OFFERED || s == Message.STATUS_UNSEND) { MessageUtil.markMessage(message, Message.STATUS_SEND_FAILED); } else { UiUpdateHelper.updateConversationUi(); } return; } } } } }