Handle events that affect list of available forums.

This commit is contained in:
akwizgran
2016-02-04 17:35:31 +00:00
parent 18db17bf5b
commit 6e1ec41d21
2 changed files with 22 additions and 3 deletions

View File

@@ -14,11 +14,15 @@ import org.briarproject.api.contact.Contact;
import org.briarproject.api.contact.ContactId;
import org.briarproject.api.db.DbException;
import org.briarproject.api.db.NoSuchGroupException;
import org.briarproject.api.event.ContactRemovedEvent;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.EventListener;
import org.briarproject.api.event.GroupAddedEvent;
import org.briarproject.api.event.GroupRemovedEvent;
import org.briarproject.api.event.MessageValidatedEvent;
import org.briarproject.api.forum.Forum;
import org.briarproject.api.forum.ForumManager;
import org.briarproject.api.forum.ForumSharingManager;
import org.briarproject.api.sync.ClientId;
@@ -43,6 +47,7 @@ implements EventListener, OnItemClickListener {
private ListView list = null;
// Fields that are accessed from background threads must be volatile
@Inject private volatile ForumManager forumManager;
@Inject private volatile ForumSharingManager forumSharingManager;
@Inject private volatile EventBus eventBus;
@@ -120,7 +125,22 @@ implements EventListener, OnItemClickListener {
}
public void eventOccurred(Event e) {
if (e instanceof MessageValidatedEvent) {
if (e instanceof ContactRemovedEvent) {
LOG.info("Contact removed, reloading");
loadForums();
} else if (e instanceof GroupAddedEvent) {
GroupAddedEvent g = (GroupAddedEvent) e;
if (g.getGroup().getClientId().equals(forumManager.getClientId())) {
LOG.info("Forum added, reloading");
loadForums();
}
} else if (e instanceof GroupRemovedEvent) {
GroupRemovedEvent g = (GroupRemovedEvent) e;
if (g.getGroup().getClientId().equals(forumManager.getClientId())) {
LOG.info("Forum removed, reloading");
loadForums();
}
} else if (e instanceof MessageValidatedEvent) {
MessageValidatedEvent m = (MessageValidatedEvent) e;
ClientId c = m.getClientId();
if (m.isValid() && !m.isLocal()
@@ -139,7 +159,6 @@ implements EventListener, OnItemClickListener {
subscribe(item.getForum(), shared);
String subscribed = getString(R.string.subscribed_toast);
Toast.makeText(this, subscribed, LENGTH_SHORT).show();
loadForums();
}
private void subscribe(final Forum f, final Collection<ContactId> shared) {

View File

@@ -14,7 +14,7 @@ public interface SyncConstants {
int MAX_PACKET_PAYLOAD_LENGTH = 32 * 1024; // 32 KiB
/** The maximum length of a group descriptor in bytes. */
int MAX_GROUP_DESCRIPTOR_LENGTH = 1000; // TODO: Remove
int MAX_GROUP_DESCRIPTOR_LENGTH = 100; // TODO: Remove
/** The maximum length of a message in bytes. */
int MAX_MESSAGE_LENGTH = MAX_PACKET_PAYLOAD_LENGTH - PACKET_HEADER_LENGTH;