Sync stories sent to a group

This commit is contained in:
Josh Perez 2022-08-04 21:13:26 -04:00 committed by GitHub
parent 808118d1e4
commit dca848389c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 25 deletions

View file

@ -68,12 +68,12 @@ export const MyStories = ({
</div> </div>
<div className="Stories__pane__list"> <div className="Stories__pane__list">
{myStories.map(list => ( {myStories.map(list => (
<div className="MyStories__distribution" key={list.distributionId}> <div className="MyStories__distribution" key={list.id}>
<div className="MyStories__distribution__title"> <div className="MyStories__distribution__title">
<StoryDistributionListName <StoryDistributionListName
i18n={i18n} i18n={i18n}
id={list.distributionId} id={list.id}
name={list.distributionName} name={list.name}
/> />
</div> </div>
{list.stories.map(story => ( {list.stories.map(story => (

View file

@ -283,7 +283,16 @@ export const getStories = createSelector(
return; return;
} }
if (story.sendStateByConversationId && story.storyDistributionListId) { const conversationStory = getConversationStory(
conversationSelector,
story
);
if (story.sendStateByConversationId) {
let sentId = story.conversationId;
let sentName = conversationStory.group?.title;
if (story.storyDistributionListId) {
const list = const list =
story.storyDistributionListId === MY_STORIES_ID story.storyDistributionListId === MY_STORIES_ID
? { id: MY_STORIES_ID, name: MY_STORIES_ID } ? { id: MY_STORIES_ID, name: MY_STORIES_ID }
@ -295,24 +304,27 @@ export const getStories = createSelector(
return; return;
} }
sentId = list.id;
sentName = list.name;
}
if (!sentName) {
return;
}
const storyView = getStoryView(conversationSelector, story); const storyView = getStoryView(conversationSelector, story);
const existingMyStory = myStoriesById.get(list.id) || { stories: [] }; const existingMyStory = myStoriesById.get(sentId) || { stories: [] };
myStoriesById.set(list.id, { myStoriesById.set(sentId, {
distributionId: list.id, id: sentId,
distributionName: list.name, name: sentName,
stories: [...existingMyStory.stories, storyView], stories: [...existingMyStory.stories, storyView],
}); });
return; return;
} }
const conversationStory = getConversationStory(
conversationSelector,
story
);
let storiesMap: Map<string, ConversationStoryType>; let storiesMap: Map<string, ConversationStoryType>;
if (conversationStory.isHidden) { if (conversationStory.isHidden) {

View file

@ -27,9 +27,8 @@ export function getFakeMyStory(id?: string, name?: string): MyStoryType {
const storyCount = casual.integer(2, 6); const storyCount = casual.integer(2, 6);
return { return {
distributionId: id || UUID.generate().toString(), id: id || UUID.generate().toString(),
distributionName: name: name || id === MY_STORIES_ID ? 'My Stories' : casual.catch_phrase,
name || id === MY_STORIES_ID ? 'My Stories' : casual.catch_phrase,
stories: Array.from(Array(storyCount), () => ({ stories: Array.from(Array(storyCount), () => ({
...getFakeStoryView(), ...getFakeStoryView(),
sendState: [], sendState: [],

View file

@ -1932,6 +1932,24 @@ export default class MessageReceiver
timestamp: envelope.timestamp, timestamp: envelope.timestamp,
}; };
if (sentMessage && message.groupV2) {
const ev = new SentEvent(
{
destinationUuid: envelope.destinationUuid.toString(),
isRecipientUpdate: Boolean(sentMessage.isRecipientUpdate),
message,
receivedAtCounter: envelope.receivedAtCounter,
receivedAtDate: envelope.receivedAtDate,
serverTimestamp: envelope.serverTimestamp,
timestamp: envelope.timestamp,
unidentifiedStatus: sentMessage.unidentifiedStatus,
},
this.removeFromCache.bind(this, envelope)
);
this.dispatchAndWait(ev);
return;
}
if (sentMessage) { if (sentMessage) {
const { storyMessageRecipients } = sentMessage; const { storyMessageRecipients } = sentMessage;
const recipients = storyMessageRecipients ?? []; const recipients = storyMessageRecipients ?? [];

View file

@ -85,8 +85,8 @@ export type StoryViewType = {
}; };
export type MyStoryType = { export type MyStoryType = {
distributionId: string; id: string;
distributionName: string; name: string;
stories: Array<StoryViewType>; stories: Array<StoryViewType>;
}; };