Added the UserStatusChangeProcessor and its implementation
this commit serves as solution to the merge conflict between f/user_status_change_processor and develop
This commit is contained in:
		| @@ -14,9 +14,7 @@ import envoy.client.data.Config; | ||||
| import envoy.client.data.LocalDb; | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.data.*; | ||||
| import envoy.event.Event; | ||||
| import envoy.event.IdGeneratorRequest; | ||||
| import envoy.event.MessageStatusChangeEvent; | ||||
| import envoy.event.*; | ||||
| import envoy.util.SerializationUtils; | ||||
|  | ||||
| /** | ||||
| @@ -100,6 +98,8 @@ public class Client implements Closeable { | ||||
| 		receiver.removeAllProcessors(); | ||||
|  | ||||
| 		// Register processors for message and status handling | ||||
|  | ||||
| 		// Process incoming messages | ||||
| 		final ReceivedMessageProcessor receivedMessageProcessor = new ReceivedMessageProcessor(); | ||||
| 		receiver.registerProcessor(Message.class, receivedMessageProcessor); | ||||
|  | ||||
| @@ -109,6 +109,9 @@ public class Client implements Closeable { | ||||
| 		// Process message status changes | ||||
| 		receiver.registerProcessor(MessageStatusChangeEvent.class, new MessageStatusChangeEventProcessor()); | ||||
|  | ||||
| 		// Process user status changes | ||||
| 		receiver.registerProcessor(UserStatusChangeEvent.class, new UserStatusChangeProcessor(this)); | ||||
|  | ||||
| 		// Process message ID generation | ||||
| 		receiver.registerProcessor(IdGenerator.class, localDb::setIdGenerator); | ||||
|  | ||||
| @@ -207,4 +210,16 @@ public class Client implements Closeable { | ||||
| 	 * @since Envoy v0.2-alpha | ||||
| 	 */ | ||||
| 	public boolean isOnline() { return online; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return the contacts of this {@link Client} | ||||
| 	 * @since Envoy v0.3-alpha | ||||
| 	 */ | ||||
| 	public Contacts getContacts() { return contacts; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @param contacts the contacts to set | ||||
| 	 * @since Envoy v0.3-alpha | ||||
| 	 */ | ||||
| 	public void setContacts(Contacts contacts) { this.contacts = contacts; } | ||||
| } | ||||
| @@ -0,0 +1,40 @@ | ||||
| package envoy.client.net; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.function.Consumer; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| import envoy.client.util.EnvoyLog; | ||||
| import envoy.data.User; | ||||
| import envoy.event.EventBus; | ||||
| import envoy.event.UserStatusChangeEvent; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
|  * File: <strong>UserStatusChangeProcessor.java</strong><br> | ||||
|  * Created: <strong>2 Feb 2020</strong><br> | ||||
|  * | ||||
|  * @author Leon Hofmeister | ||||
|  * @since Envoy v0.3-alpha | ||||
|  */ | ||||
| public class UserStatusChangeProcessor implements Consumer<UserStatusChangeEvent> { | ||||
|  | ||||
| 	private static final Logger	logger	= EnvoyLog.getLogger(UserStatusChangeProcessor.class.getSimpleName()); | ||||
| 	private Client				client; | ||||
|  | ||||
| 	/** | ||||
| 	 * @param client the {@link Client} who receives an | ||||
| 	 *               {@link UserStatusChangeEvent} | ||||
| 	 * @since Envoy v0.3-alpha | ||||
| 	 */ | ||||
| 	public UserStatusChangeProcessor(Client client) { this.client = client; } | ||||
|  | ||||
| 	@Override | ||||
| 	public void accept(UserStatusChangeEvent evt) { | ||||
| 		logger.info("Received " + evt); | ||||
| 		List<User> contacts = client.getContacts().getContacts(); | ||||
| 		contacts.stream().filter((user) -> user.getId() == evt.getId()).findFirst().get().setStatus(evt.get()); | ||||
| 		EventBus.getInstance().dispatch(evt); | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -26,6 +26,7 @@ import envoy.data.MessageBuilder; | ||||
| import envoy.data.User; | ||||
| import envoy.event.EventBus; | ||||
| import envoy.event.MessageStatusChangeEvent; | ||||
| import envoy.event.UserStatusChangeEvent; | ||||
|  | ||||
| /** | ||||
|  * Project: <strong>envoy-client</strong><br> | ||||
| @@ -211,6 +212,9 @@ public class ChatWindow extends JFrame { | ||||
| 		// Listen to theme changes | ||||
| 		EventBus.getInstance().register(ThemeChangeEvent.class, (evt) -> applyTheme((Theme) evt.get())); | ||||
|  | ||||
| 		// Listen to UserStatus changes | ||||
| 		EventBus.getInstance().register(UserStatusChangeEvent.class, (evt) -> { userList.revalidate(); userList.repaint(); }); | ||||
|  | ||||
| 		// Listen to received messages | ||||
| 		EventBus.getInstance().register(MessageCreationEvent.class, (evt) -> { | ||||
| 			Message	message	= ((MessageCreationEvent) evt).get(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 delvh
					delvh