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.enums.MessageDirection; import de.thedevstack.conversationsplus.enums.MessageStatus; 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) { MessageUtil.setAndSaveStatusForFileDeleted(message); if (MessageUtil.isIncomingMessage(message) || (MessageUtil.isOutgoingMessage(message) && !(MessageStatus.TRANSMITTING == message.getMessageStatus() || MessageStatus.WAITING == message.getMessageStatus()))) { UiUpdateHelper.updateConversationUi(); } return; } } } } }