package envoy.server.processors; import java.io.IOException; import java.time.Instant; import envoy.event.contact.AccountDeletion; import envoy.server.data.*; import envoy.server.net.ObjectWriteProxy; /** * @author Leon Hofmeister * @since Envoy Server v0.3-beta */ public class AccountDeletionProcessor implements ObjectProcessor { private static final PersistenceManager persistenceManager = PersistenceManager.getInstance(); @Override public void process(AccountDeletion input, long socketID, ObjectWriteProxy writeProxy) throws IOException { final var contact = persistenceManager.getContactByID(input.get()); contact.getContacts().forEach(c -> { persistenceManager.removeContactBidirectional(contact, c); if (c instanceof User) ((User) c).setLatestContactDeletion(Instant.now()); }); writeProxy.writeToOnlineContacts(contact.getContacts(), input); persistenceManager.deleteContact(contact); } }