diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java index fa79b0931..a3ca713b8 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java @@ -256,7 +256,7 @@ public class ContactListFragment extends BaseFragment implements EventListener { int position = adapter.findItemPosition(c); ContactListItem item = adapter.getItemAt(position); if (item != null) { - ConversationItem i = ConversationItem.from(getContext(), h); + ConversationItem i = ConversationItem.from(getContext(), "", h); item.addMessage(i); adapter.updateItemAt(position, item); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java index a086733b0..c8d74b707 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java @@ -65,7 +65,6 @@ import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.introduction.IntroductionManager; -import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.PrivateMessage; @@ -365,15 +364,8 @@ public class ConversationActivity extends BriarActivity List items = new ArrayList<>(headers.size()); for (PrivateMessageHeader h : headers) { ConversationItem item; - if (h instanceof IntroductionResponse) { - IntroductionResponse i = (IntroductionResponse) h; - item = ConversationItem.from(this, contactName.getValue(), i); - } else if (h instanceof PrivateRequest) { - PrivateRequest r = (PrivateRequest) h; - item = ConversationItem.from(this, contactName.getValue(), r); - } else if (h instanceof PrivateResponse) { - PrivateResponse r = (PrivateResponse) h; - item = ConversationItem.from(this, contactName.getValue(), r); + if (h instanceof PrivateRequest || h instanceof PrivateResponse) { + item = ConversationItem.from(this, contactName.getValue(), h); } else { item = ConversationItem.from(h); String body = bodyCache.get(h.getId()); @@ -703,7 +695,7 @@ public class ConversationActivity extends BriarActivity @UiThread @Override public void respondToRequest(ConversationRequestItem item, boolean accept) { - item.setAnswered(true); + item.setAnswered(); int position = adapter.findItemPosition(item); if (position != INVALID_POSITION) { adapter.notifyItemChanged(position, item); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java index ab17c158d..671f7c6d2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java @@ -2,34 +2,17 @@ package org.briarproject.briar.android.contact; import android.content.Context; import android.support.annotation.LayoutRes; -import android.support.annotation.StringRes; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; -import org.briarproject.briar.R; -import org.briarproject.briar.android.contact.ConversationRequestItem.RequestType; -import org.briarproject.briar.api.blog.BlogInvitationRequest; -import org.briarproject.briar.api.blog.BlogInvitationResponse; -import org.briarproject.briar.api.forum.ForumInvitationRequest; -import org.briarproject.briar.api.forum.ForumInvitationResponse; -import org.briarproject.briar.api.introduction.IntroductionRequest; -import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.messaging.PrivateResponse; -import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; -import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; -import org.briarproject.briar.api.sharing.Shareable; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; -import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.BLOG; -import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.FORUM; -import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.GROUP; -import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.INTRODUCTION; - @NotThreadSafe @NotNullByDefault abstract class ConversationItem { @@ -89,190 +72,37 @@ abstract class ConversationItem { } static ConversationItem from(Context ctx, String contactName, - PrivateRequest ir) { - if (ir.isLocal()) { - String text; - if (ir instanceof IntroductionRequest) { - text = ctx.getString(R.string.introduction_request_sent, - contactName, ir.getName()); - } else if (ir instanceof ForumInvitationRequest) { - text = ctx.getString(R.string.forum_invitation_sent, - ir.getName(), contactName); - } else if (ir instanceof BlogInvitationRequest) { - text = ctx.getString(R.string.blogs_sharing_invitation_sent, - ir.getName(), contactName); - } else if (ir instanceof GroupInvitationRequest) { - text = ctx.getString( - R.string.groups_invitations_invitation_sent, - contactName, ir.getName()); - } else { - throw new IllegalArgumentException("Unknown PrivateRequest"); - } - return new ConversationNoticeOutItem(ir.getId(), ir.getGroupId(), - text, ir.getMessage(), ir.getTimestamp(), ir.isSent(), - ir.isSeen()); + PrivateMessageHeader h) { + if (h.isLocal()) { + return fromLocal(ctx, contactName, h); } else { - String text; - RequestType type; - boolean canBeOpened; - if (ir instanceof IntroductionRequest) { - type = INTRODUCTION; - if (ir.wasAnswered()) { - text = ctx.getString( - R.string.introduction_request_answered_received, - contactName, ir.getName()); - } else if (((IntroductionRequest) ir).isContact()) { - text = ctx.getString( - R.string.introduction_request_exists_received, - contactName, ir.getName()); - } else { - text = ctx.getString(R.string.introduction_request_received, - contactName, ir.getName()); - } - return new ConversationRequestItem(ir.getId(), - ir.getGroupId(), type, ir.getSessionId(), text, - ir.getMessage(), ir.getTimestamp(), ir.isRead(), null, - ir.wasAnswered(), false); - } else if (ir instanceof ForumInvitationRequest) { - text = ctx.getString(R.string.forum_invitation_received, - contactName, ir.getName()); - type = FORUM; - canBeOpened = ((ForumInvitationRequest) ir).canBeOpened(); - } else if (ir instanceof BlogInvitationRequest) { - text = ctx.getString(R.string.blogs_sharing_invitation_received, - contactName, ir.getName()); - type = BLOG; - canBeOpened = ((BlogInvitationRequest) ir).canBeOpened(); - } else if (ir instanceof GroupInvitationRequest) { - text = ctx.getString( - R.string.groups_invitations_invitation_received, - contactName, ir.getName()); - type = GROUP; - canBeOpened = ((GroupInvitationRequest) ir).canBeOpened(); - } else { - throw new IllegalArgumentException("Unknown PrivateRequest"); - } - return new ConversationRequestItem(ir.getId(), - ir.getGroupId(), type, ir.getSessionId(), text, - ir.getMessage(), ir.getTimestamp(), ir.isRead(), - ((Shareable) ir.getNameable()).getId(), !ir.wasAnswered(), - canBeOpened); + return fromRemote(ctx, contactName, h); } } - static ConversationItem from(Context ctx, String contactName, - IntroductionResponse ir) { - if (ir.isLocal()) { - String text; - if (ir.wasAccepted()) { - text = ctx.getString( - R.string.introduction_response_accepted_sent, - ir.getIntroducedAuthor().getName()); - text += "\n\n" + ctx.getString( - R.string.introduction_response_accepted_sent_info, - ir.getIntroducedAuthor().getName()); - } else { - text = ctx.getString( - R.string.introduction_response_declined_sent, - ir.getIntroducedAuthor().getName()); - } - return new ConversationNoticeOutItem(ir.getId(), ir.getGroupId(), - text, null, ir.getTimestamp(), ir.isSent(), ir.isSeen()); - } else { - @StringRes int res; - if (ir.wasAccepted()) { - res = R.string.introduction_response_accepted_received; - } else { - if (ir.isIntroducer()) { - res = R.string.introduction_response_declined_received; - } else { - res = - R.string.introduction_response_declined_received_by_introducee; - } - } - String text = - ctx.getString(res, contactName, ir.getIntroducedAuthor().getName()); - return new ConversationNoticeInItem(ir.getId(), ir.getGroupId(), - text, null, ir.getTimestamp(), ir.isRead()); - } - } - - static ConversationItem from(Context ctx, String contactName, - PrivateResponse ir) { - @StringRes int res; - if (ir.isLocal()) { - if (ir.wasAccepted()) { - if (ir instanceof ForumInvitationResponse) { - res = R.string.forum_invitation_response_accepted_sent; - } else if (ir instanceof BlogInvitationResponse) { - res = R.string.blogs_sharing_response_accepted_sent; - } else if (ir instanceof GroupInvitationResponse) { - res = R.string.groups_invitations_response_accepted_sent; - } else { - throw new IllegalArgumentException( - "Unknown PrivateResponse"); - } - } else { - if (ir instanceof ForumInvitationResponse) { - res = R.string.forum_invitation_response_declined_sent; - } else if (ir instanceof BlogInvitationResponse) { - res = R.string.blogs_sharing_response_declined_sent; - } else if (ir instanceof GroupInvitationResponse) { - res = R.string.groups_invitations_response_declined_sent; - } else { - throw new IllegalArgumentException( - "Unknown PrivateResponse"); - } - } - String text = ctx.getString(res, contactName); - return new ConversationNoticeOutItem(ir.getId(), ir.getGroupId(), - text, null, ir.getTimestamp(), ir.isSent(), ir.isSeen()); - } else { - if (ir.wasAccepted()) { - if (ir instanceof ForumInvitationResponse) { - res = R.string.forum_invitation_response_accepted_received; - } else if (ir instanceof BlogInvitationResponse) { - res = R.string.blogs_sharing_response_accepted_received; - } else if (ir instanceof GroupInvitationResponse) { - res = - R.string.groups_invitations_response_accepted_received; - } else { - throw new IllegalArgumentException( - "Unknown PrivateResponse"); - } - } else { - if (ir instanceof ForumInvitationResponse) { - res = R.string.forum_invitation_response_declined_received; - } else if (ir instanceof BlogInvitationResponse) { - res = R.string.blogs_sharing_response_declined_received; - } else if (ir instanceof GroupInvitationResponse) { - res = - R.string.groups_invitations_response_declined_received; - } else { - throw new IllegalArgumentException( - "Unknown PrivateResponse"); - } - } - String text = ctx.getString(res, contactName); - return new ConversationNoticeInItem(ir.getId(), ir.getGroupId(), - text, null, ir.getTimestamp(), ir.isRead()); - } - } - - /** - * This method should not be used to display the resulting ConversationItem - * in the UI, but only to update list information based on the - * PrivateMessageHeader. - **/ - static ConversationItem from(Context ctx, PrivateMessageHeader h) { - if (h instanceof IntroductionResponse) { - return from(ctx, "", (IntroductionResponse) h); - } else if (h instanceof PrivateRequest) { - return from(ctx, "", (PrivateRequest) h); + private static ConversationItem fromLocal(Context ctx, String contactName, + PrivateMessageHeader h) { + if (h instanceof PrivateRequest) { + PrivateRequest r = (PrivateRequest) h; + return new ConversationNoticeOutItem(ctx, contactName, r); } else if (h instanceof PrivateResponse) { - return from(ctx, "", (PrivateResponse) h); + PrivateResponse r = (PrivateResponse) h; + return new ConversationNoticeOutItem(ctx, contactName, r); } else { - return from(h); + return new ConversationMessageOutItem(h); + } + } + + private static ConversationItem fromRemote(Context ctx, String contactName, + PrivateMessageHeader h) { + if (h instanceof PrivateRequest) { + PrivateRequest r = (PrivateRequest) h; + return new ConversationRequestItem(ctx, contactName, r); + } else if (h instanceof PrivateResponse) { + PrivateResponse r = (PrivateResponse) h; + return new ConversationNoticeInItem(ctx, contactName, r); + } else { + return new ConversationMessageInItem(h); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInItem.java index efbc6e4f7..2873ad64c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInItem.java @@ -1,11 +1,18 @@ package org.briarproject.briar.android.contact; +import android.content.Context; import android.support.annotation.LayoutRes; +import android.support.annotation.StringRes; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.briar.R; +import org.briarproject.briar.api.blog.BlogInvitationResponse; +import org.briarproject.briar.api.forum.ForumInvitationResponse; +import org.briarproject.briar.api.introduction.IntroductionResponse; +import org.briarproject.briar.api.messaging.PrivateResponse; +import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; @@ -24,6 +31,13 @@ class ConversationNoticeInItem extends ConversationItem { this.msgText = msgText; } + public ConversationNoticeInItem(Context ctx, String contactName, + PrivateResponse r) { + super(r.getId(), r.getGroupId(), getText(ctx, contactName, r), + r.getTimestamp(), r.isRead()); + this.msgText = null; + } + @Nullable String getMsgText() { return msgText; @@ -40,4 +54,54 @@ class ConversationNoticeInItem extends ConversationItem { return R.layout.list_item_conversation_notice_in; } + private static String getText(Context ctx, String contactName, + PrivateResponse r) { + if (r.wasAccepted()) { + if (r instanceof IntroductionResponse) { + IntroductionResponse ir = (IntroductionResponse) r; + return ctx.getString( + R.string.introduction_response_accepted_received, + contactName, ir.getIntroducedAuthor().getName()); + } else if (r instanceof ForumInvitationResponse) { + return ctx.getString( + R.string.forum_invitation_response_accepted_received, + contactName); + } else if (r instanceof BlogInvitationResponse) { + return ctx.getString( + R.string.blogs_sharing_response_accepted_received, + contactName); + } else if (r instanceof GroupInvitationResponse) { + return ctx.getString( + R.string.groups_invitations_response_accepted_received, + contactName); + } + } else { + if (r instanceof IntroductionResponse) { + IntroductionResponse ir = (IntroductionResponse) r; + @StringRes int res; + if (ir.isIntroducer()) { + res = R.string.introduction_response_declined_received; + } else { + res = + R.string.introduction_response_declined_received_by_introducee; + } + return ctx.getString(res, contactName, + ir.getIntroducedAuthor().getName()); + } else if (r instanceof ForumInvitationResponse) { + return ctx.getString( + R.string.forum_invitation_response_declined_received, + contactName); + } else if (r instanceof BlogInvitationResponse) { + return ctx.getString( + R.string.blogs_sharing_response_declined_received, + contactName); + } else if (r instanceof GroupInvitationResponse) { + return ctx.getString( + R.string.groups_invitations_response_declined_received, + contactName); + } + } + throw new IllegalArgumentException("Unknown PrivateResponse"); + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java index 637c928b9..6831671af 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java @@ -1,11 +1,20 @@ package org.briarproject.briar.android.contact; +import android.content.Context; import android.support.annotation.LayoutRes; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.bramble.api.sync.GroupId; -import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.briar.R; +import org.briarproject.briar.api.blog.BlogInvitationRequest; +import org.briarproject.briar.api.blog.BlogInvitationResponse; +import org.briarproject.briar.api.forum.ForumInvitationRequest; +import org.briarproject.briar.api.forum.ForumInvitationResponse; +import org.briarproject.briar.api.introduction.IntroductionRequest; +import org.briarproject.briar.api.introduction.IntroductionResponse; +import org.briarproject.briar.api.messaging.PrivateRequest; +import org.briarproject.briar.api.messaging.PrivateResponse; +import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; +import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; @@ -17,11 +26,18 @@ class ConversationNoticeOutItem extends ConversationOutItem { @Nullable private final String msgText; - ConversationNoticeOutItem(MessageId id, GroupId groupId, - String text, @Nullable String msgText, long time, - boolean sent, boolean seen) { - super(id, groupId, text, time, sent, seen); - this.msgText = msgText; + ConversationNoticeOutItem(Context ctx, String contactName, + PrivateRequest r) { + super(r.getId(), r.getGroupId(), getText(ctx, contactName, r), + r.getTimestamp(), r.isSent(), r.isSeen()); + this.msgText = r.getMessage(); + } + + ConversationNoticeOutItem(Context ctx, String contactName, + PrivateResponse r) { + super(r.getId(), r.getGroupId(), getText(ctx, contactName, r), + r.getTimestamp(), r.isSent(), r.isSeen()); + this.msgText = null; } @Nullable @@ -35,4 +51,57 @@ class ConversationNoticeOutItem extends ConversationOutItem { return R.layout.list_item_conversation_notice_out; } + private static String getText(Context ctx, String contactName, + PrivateRequest r) { + if (r instanceof IntroductionRequest) { + return ctx.getString(R.string.introduction_request_sent, + contactName, r.getName()); + } else if (r instanceof ForumInvitationRequest) { + return ctx.getString(R.string.forum_invitation_sent, + r.getName(), contactName); + } else if (r instanceof BlogInvitationRequest) { + return ctx.getString(R.string.blogs_sharing_invitation_sent, + r.getName(), contactName); + } else if (r instanceof GroupInvitationRequest) { + return ctx.getString(R.string.groups_invitations_invitation_sent, + contactName, r.getName()); + } + throw new IllegalArgumentException("Unknown PrivateRequest"); + } + + private static String getText(Context ctx, String contactName, + PrivateResponse ir) { + if (ir.wasAccepted()) { + if (ir instanceof IntroductionResponse) { + String name = ((IntroductionResponse) ir).getIntroducedAuthor() + .getName(); + return ctx.getString( + R.string.introduction_response_accepted_sent, + name) + "\n\n" + ctx.getString( + R.string.introduction_response_accepted_sent_info, + name); + } else if (ir instanceof ForumInvitationResponse) { + return ctx.getString(R.string.forum_invitation_response_accepted_sent, contactName); + } else if (ir instanceof BlogInvitationResponse) { + return ctx.getString(R.string.blogs_sharing_response_accepted_sent, contactName); + } else if (ir instanceof GroupInvitationResponse) { + return ctx.getString(R.string.groups_invitations_response_accepted_sent, contactName); + } + } else { + if (ir instanceof IntroductionResponse) { + String name = ((IntroductionResponse) ir).getIntroducedAuthor() + .getName(); + return ctx.getString( + R.string.introduction_response_declined_sent, name); + } else if (ir instanceof ForumInvitationResponse) { + return ctx.getString(R.string.forum_invitation_response_declined_sent, contactName); + } else if (ir instanceof BlogInvitationResponse) { + return ctx.getString(R.string.blogs_sharing_response_declined_sent, contactName); + } else if (ir instanceof GroupInvitationResponse) { + return ctx.getString(R.string.groups_invitations_response_declined_sent, contactName); + } + } + throw new IllegalArgumentException("Unknown PrivateResponse"); + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java index b11a00c60..e61ebec22 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java @@ -1,16 +1,28 @@ package org.briarproject.briar.android.contact; +import android.content.Context; import android.support.annotation.LayoutRes; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; -import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.briar.R; +import org.briarproject.briar.api.blog.BlogInvitationRequest; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.forum.ForumInvitationRequest; +import org.briarproject.briar.api.introduction.IntroductionRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; +import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; +import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.sharing.Shareable; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; +import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.BLOG; +import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.FORUM; +import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.GROUP; +import static org.briarproject.briar.android.contact.ConversationRequestItem.RequestType.INTRODUCTION; + @NotThreadSafe @NotNullByDefault class ConversationRequestItem extends ConversationNoticeInItem { @@ -24,17 +36,20 @@ class ConversationRequestItem extends ConversationNoticeInItem { private final boolean canBeOpened; private boolean answered; - ConversationRequestItem(MessageId id, GroupId groupId, - RequestType requestType, SessionId sessionId, String text, - @Nullable String msgText, long time, boolean read, - @Nullable GroupId requestedGroupId, boolean answered, - boolean canBeOpened) { - super(id, groupId, text, msgText, time, read); - this.requestType = requestType; - this.sessionId = sessionId; - this.requestedGroupId = requestedGroupId; - this.answered = answered; - this.canBeOpened = canBeOpened; + ConversationRequestItem(Context ctx, String contactName, + PrivateRequest r) { + super(r.getId(), r.getGroupId(), getText(ctx, contactName, r), + r.getMessage(), r.getTimestamp(), r.isRead()); + this.requestType = getType(r); + this.sessionId = r.getSessionId(); + this.answered = r.wasAnswered(); + if (r instanceof InvitationRequest) { + this.requestedGroupId = ((Shareable) r.getNameable()).getId(); + this.canBeOpened = ((InvitationRequest) r).canBeOpened(); + } else { + this.requestedGroupId = null; + this.canBeOpened = false; + } } RequestType getRequestType() { @@ -54,8 +69,8 @@ class ConversationRequestItem extends ConversationNoticeInItem { return answered; } - void setAnswered(boolean answered) { - this.answered = answered; + void setAnswered() { + this.answered = true; } public boolean canBeOpened() { @@ -68,4 +83,46 @@ class ConversationRequestItem extends ConversationNoticeInItem { return R.layout.list_item_conversation_request; } + private static String getText(Context ctx, String contactName, + PrivateRequest r) { + if (r instanceof IntroductionRequest) { + if (r.wasAnswered()) { + return ctx.getString( + R.string.introduction_request_answered_received, + contactName, r.getName()); + } else if (((IntroductionRequest) r).isContact()) { + return ctx.getString( + R.string.introduction_request_exists_received, + contactName, r.getName()); + } else { + return ctx.getString(R.string.introduction_request_received, + contactName, r.getName()); + } + } else if (r instanceof ForumInvitationRequest) { + return ctx.getString(R.string.forum_invitation_received, + contactName, r.getName()); + } else if (r instanceof BlogInvitationRequest) { + return ctx.getString(R.string.blogs_sharing_invitation_received, + contactName, r.getName()); + } else if (r instanceof GroupInvitationRequest) { + return ctx.getString( + R.string.groups_invitations_invitation_received, + contactName, r.getName()); + } + throw new IllegalArgumentException("Unknown PrivateRequest"); + } + + private static RequestType getType(PrivateRequest r) { + if (r instanceof IntroductionRequest) { + return INTRODUCTION; + } else if (r instanceof ForumInvitationRequest) { + return FORUM; + } else if (r instanceof BlogInvitationRequest) { + return BLOG; + } else if (r instanceof GroupInvitationRequest) { + return GROUP; + } + throw new IllegalArgumentException("Unknown PrivateRequest"); + } + }