Fix NPE in ContactListFragment

Closes #562
This commit is contained in:
Torsten Grote
2016-08-01 16:26:01 -03:00
parent a51d2f47af
commit 31cd6e8958
2 changed files with 16 additions and 8 deletions

View File

@@ -375,6 +375,7 @@ public class ContactListFragment extends BaseFragment implements EventListener {
}
// This needs to be called from the DB thread
// Do not call getActivty() here as it might return null
private Collection<ConversationItem> getMessages(ContactId id)
throws DbException {
@@ -406,13 +407,7 @@ public class ContactListFragment extends BaseFragment implements EventListener {
Collection<InvitationMessage> invitations =
forumSharingManager.getInvitationMessages(id);
for (InvitationMessage i : invitations) {
if (i instanceof ForumInvitationRequest) {
ForumInvitationRequest r = (ForumInvitationRequest) i;
messages.add(ConversationItem.from(r));
} else if (i instanceof ForumInvitationResponse) {
ForumInvitationResponse r = (ForumInvitationResponse) i;
messages.add(ConversationItem.from(getActivity(), "", r));
}
messages.add(ConversationItem.from(i));
}
duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))

View File

@@ -9,6 +9,7 @@ import org.briarproject.api.introduction.IntroductionMessage;
import org.briarproject.api.introduction.IntroductionRequest;
import org.briarproject.api.introduction.IntroductionResponse;
import org.briarproject.api.messaging.PrivateMessageHeader;
import org.briarproject.api.sharing.InvitationMessage;
import org.briarproject.api.sync.MessageId;
// This class is not thread-safe
@@ -138,7 +139,7 @@ public abstract class ConversationItem {
/**
* This method should not be used to get user-facing objects,
* Its purpose is to provider data for the contact list.
* Its purpose is only to provide data for the contact list.
*/
public static ConversationItem from(IntroductionMessage im) {
if (im.isLocal())
@@ -148,6 +149,18 @@ public abstract class ConversationItem {
im.getTimestamp(), im.isRead());
}
/**
* This method should not be used to get user-facing objects,
* Its purpose is only to provide data for the contact list.
*/
public static ConversationItem from(InvitationMessage im) {
if (im.isLocal())
return new ConversationNoticeOutItem(im.getId(), "",
im.getTimestamp(), false, false);
return new ConversationNoticeInItem(im.getId(), "",
im.getTimestamp(), im.isRead());
}
interface OutgoingItem {
MessageId getId();