Added active flag to contacts.

This commit is contained in:
akwizgran
2016-02-17 18:10:52 +00:00
parent 6b76b75d08
commit a6baa5821e
14 changed files with 186 additions and 59 deletions

View File

@@ -8,11 +8,14 @@ public class Contact {
private final ContactId id;
private final Author author;
private final AuthorId localAuthorId;
private final boolean active;
public Contact(ContactId id, Author author, AuthorId localAuthorId) {
public Contact(ContactId id, Author author, AuthorId localAuthorId,
boolean active) {
this.id = id;
this.author = author;
this.localAuthorId = localAuthorId;
this.active = active;
}
public ContactId getId() {
@@ -27,6 +30,10 @@ public class Contact {
return localAuthorId;
}
public boolean isActive() {
return active;
}
@Override
public int hashCode() {
return id.hashCode();

View File

@@ -19,17 +19,21 @@ public interface ContactManager {
* Stores a contact associated with the given local and remote pseudonyms,
* and returns an ID for the contact.
*/
ContactId addContact(Author remote, AuthorId local) throws DbException;
ContactId addContact(Author remote, AuthorId local, boolean active)
throws DbException;
/** Returns the contact with the given ID. */
Contact getContact(ContactId c) throws DbException;
/** Returns all contacts. */
Collection<Contact> getContacts() throws DbException;
/** Returns all active contacts. */
Collection<Contact> getActiveContacts() throws DbException;
/** Removes a contact and all associated state. */
void removeContact(ContactId c) throws DbException;
/** Marks a contact as active or inactive. */
void setContactActive(ContactId c, boolean active) throws DbException;
interface AddContactHook {
void addingContact(Transaction txn, Contact c) throws DbException;
}

View File

@@ -59,8 +59,8 @@ public interface DatabaseComponent {
* Stores a contact associated with the given local and remote pseudonyms,
* and returns an ID for the contact.
*/
ContactId addContact(Transaction txn, Author remote, AuthorId local)
throws DbException;
ContactId addContact(Transaction txn, Author remote, AuthorId local,
boolean active) throws DbException;
/**
* Stores a group.
@@ -317,6 +317,12 @@ public interface DatabaseComponent {
*/
void removeTransport(Transaction txn, TransportId t) throws DbException;
/**
* Marks the given contact as active or inactive.
*/
void setContactActive(Transaction txn, ContactId c, boolean active)
throws DbException;
/**
* Marks the given message as shared or unshared.
*/

View File

@@ -0,0 +1,23 @@
package org.briarproject.api.event;
import org.briarproject.api.contact.ContactId;
/** An event that is broadcast when a contact is marked active or inactive. */
public class ContactStatusChangedEvent extends Event {
private final ContactId contactId;
private final boolean active;
public ContactStatusChangedEvent(ContactId contactId, boolean active) {
this.contactId = contactId;
this.active = active;
}
public ContactId getContactId() {
return contactId;
}
public boolean isActive() {
return active;
}
}