diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index e89d2bcdd..4b1355740 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1567,9 +1567,9 @@ public final class ConversationItem extends RelativeLayout implements BindableCo RecipientId author = mmsMessageRecord.getQuote().getAuthor(); if (author.equals(Recipient.self().getId())) { - return context.getString(R.string.ConversationItem__s_dot_story, context.getString(R.string.QuoteView_you)); + return context.getString(R.string.ConversationItem__reacted_to_your_story); } else { - return context.getString(R.string.ConversationItem__s_dot_story, Recipient.resolved(author).getDisplayName(context)); + return context.getString(R.string.ConversationItem__you_reacted_to_s_story, Recipient.resolved(author).getShortDisplayName(context)); } } else { return context.getString(R.string.ConversationItem__reacted_to_a_story); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 5112f4f00..6202cb0fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -225,9 +225,10 @@ public class PushMediaSendJob extends PushSendJob { if (message.getParentStoryId() != null) { try { - MessageRecord storyRecord = SignalDatabase.mms().getMessageRecord(message.getParentStoryId().asMessageId().getId()); + MessageRecord storyRecord = SignalDatabase.mms().getMessageRecord(message.getParentStoryId().asMessageId().getId()); + Recipient storyRecipient = storyRecord.isOutgoing() ? Recipient.self() : storyRecord.getRecipient(); - SignalServiceDataMessage.StoryContext storyContext = new SignalServiceDataMessage.StoryContext(address.getServiceId(), storyRecord.getDateSent()); + SignalServiceDataMessage.StoryContext storyContext = new SignalServiceDataMessage.StoryContext(storyRecipient.requireServiceId(), storyRecord.getDateSent()); mediaMessageBuilder.withStoryContext(storyContext); Optional reaction = getStoryReactionFor(message, storyContext); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index 937aea115..2396fb7fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -1506,16 +1506,14 @@ public final class MessageContentProcessor { if (message.getGroupContext().isPresent()) { parentStoryId = new ParentStoryId.GroupReply(storyMessageId.getId()); - } else { + } else if (SignalDatabase.storySends().canReply(senderRecipient.getId(), storyContext.getSentTimestamp())) { MmsMessageRecord story = (MmsMessageRecord) database.getMessageRecord(storyMessageId.getId()); - if (!story.getStoryType().isStoryWithReplies()) { - warn(content.getTimestamp(), "Story has reactions disabled. Dropping reaction."); - return; - } - parentStoryId = new ParentStoryId.DirectReply(storyMessageId.getId()); quoteModel = new QuoteModel(storyContext.getSentTimestamp(), storyAuthorRecipient, "", false, story.getSlideDeck().asAttachments(), Collections.emptyList()); + } else { + warn(content.getTimestamp(), "Story has reactions disabled. Dropping reaction."); + return; } } catch (NoSuchMessageException e) { warn(content.getTimestamp(), "Couldn't find story for reaction.", e); @@ -1574,15 +1572,16 @@ public final class MessageContentProcessor { ParentStoryId parentStoryId; QuoteModel quoteModel = null; try { - MessageId storyMessageId = database.getStoryId(storyAuthorRecipient, storyContext.getSentTimestamp()); + MessageId storyMessageId = database.getStoryId(storyAuthorRecipient, storyContext.getSentTimestamp()); + MmsMessageRecord story = (MmsMessageRecord) database.getMessageRecord(storyMessageId.getId()); + Recipient threadRecipient = SignalDatabase.threads().getRecipientForThreadId(story.getThreadId()); + boolean groupStory = threadRecipient != null && threadRecipient.isActiveGroup(); - if (message.getGroupContext().isPresent()) { + if (message.getGroupContext().isPresent() ) { parentStoryId = new ParentStoryId.GroupReply(storyMessageId.getId()); - } else if (SignalDatabase.storySends().canReply(senderRecipient.getId(), storyContext.getSentTimestamp())) { - MmsMessageRecord story = (MmsMessageRecord) database.getMessageRecord(storyMessageId.getId()); - + } else if (groupStory || SignalDatabase.storySends().canReply(senderRecipient.getId(), storyContext.getSentTimestamp())) { parentStoryId = new ParentStoryId.DirectReply(storyMessageId.getId()); - quoteModel = new QuoteModel(storyContext.getSentTimestamp(), storyAuthorRecipient, message.getBody().orElse(""), false, story.getSlideDeck().asAttachments(), Collections.emptyList()); + quoteModel = new QuoteModel(storyContext.getSentTimestamp(), groupStory ? threadRecipient.getId() : storyAuthorRecipient, "", false, story.getSlideDeck().asAttachments(), Collections.emptyList()); } else { warn(content.getTimestamp(), "Story has replies disabled. Dropping reply."); return; diff --git a/app/src/main/res/layout/conversation_item_received_multimedia.xml b/app/src/main/res/layout/conversation_item_received_multimedia.xml index 36294393d..c49dc96ae 100644 --- a/app/src/main/res/layout/conversation_item_received_multimedia.xml +++ b/app/src/main/res/layout/conversation_item_received_multimedia.xml @@ -104,6 +104,31 @@ + + + + + + Turn off - - %1$s ยท Story + + You reacted to %1$s\'s story + + Reacted to your story Reacted to a story