Skip to content

Commit

Permalink
[lib] Return mediaID updates from useSendMultimediaMessage
Browse files Browse the repository at this point in the history
Summary:
Follow up https://phab.comm.dev/D13501?id=44638#inline-77322
Modified hook return type to also return media ID updates

Depends on D13501

Test Plan: Flow

Reviewers: kamil, ashoat

Reviewed By: ashoat

Subscribers: tomek

Differential Revision: https://phab.comm.dev/D13555
  • Loading branch information
barthap committed Oct 1, 2024
1 parent d4c44a2 commit 79ee7cb
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 32 deletions.
70 changes: 42 additions & 28 deletions lib/hooks/input-state-container-hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@ import {
} from '../utils/blob-service.js';
import { useSelector, useDispatch } from '../utils/redux-utils.js';

type MediaIDUpdatePayload = { +id: string, +thumbnailID?: string };
type MediaIDUpdates = { +[string]: MediaIDUpdatePayload };
export type SendMultimediaMessagePayload = {
+result: SendMessagePayload,
+mediaIDUpdates?: MediaIDUpdates,
};

function useInputStateContainerSendTextMessage(): (
messageInfo: RawTextMessageInfo,
threadInfo: ThreadInfo,
Expand Down Expand Up @@ -134,7 +141,7 @@ function useInputStateContainerSendMultimediaMessage(): (
messageInfo: RawMultimediaMessageInfo,
sidebarCreation: boolean,
isLegacy: boolean,
) => Promise<SendMessagePayload> {
) => Promise<SendMultimediaMessagePayload> {
const sendMultimediaMessage = useSendMultimediaMessage();
const legacySendMultimediaMessage = useLegacySendMultimediaMessage();
const sendComposableDMOperation = useSendComposableDMOperation();
Expand All @@ -160,12 +167,13 @@ function useInputStateContainerSendMultimediaMessage(): (
const isThickThread = threadInfo && threadTypeIsThick(threadInfo.type);

if (!isThickThread && isLegacy) {
const { messageMedia } = await migrateMessageMediaToKeyserver(
messageInfo,
reassignThickThreadMedia,
dispatch,
processHolders,
);
const { messageMedia, mediaIDUpdates } =
await migrateMessageMediaToKeyserver(
messageInfo,
reassignThickThreadMedia,
dispatch,
processHolders,
);
const mediaIDs = [];
for (const { id } of messageMedia) {
mediaIDs.push(id);
Expand All @@ -177,20 +185,24 @@ function useInputStateContainerSendMultimediaMessage(): (
sidebarCreation,
});
return {
localID,
serverID: result.id,
threadID: messageInfo.threadID,
time: result.time,
result: {
localID,
serverID: result.id,
threadID: messageInfo.threadID,
time: result.time,
},
mediaIDUpdates,
};
}

if (!isThickThread && !isLegacy) {
const { messageMedia } = await migrateMessageMediaToKeyserver(
messageInfo,
reassignThickThreadMedia,
dispatch,
processHolders,
);
const { messageMedia, mediaIDUpdates } =
await migrateMessageMediaToKeyserver(
messageInfo,
reassignThickThreadMedia,
dispatch,
processHolders,
);
const mediaMessageContents =
getMediaMessageServerDBContentsFromMedia(messageMedia);
const result = await sendMultimediaMessage({
Expand All @@ -200,10 +212,13 @@ function useInputStateContainerSendMultimediaMessage(): (
sidebarCreation,
});
return {
localID,
serverID: result.id,
threadID: messageInfo.threadID,
time: result.time,
result: {
localID,
serverID: result.id,
threadID: messageInfo.threadID,
time: result.time,
},
mediaIDUpdates,
};
}

Expand Down Expand Up @@ -238,10 +253,12 @@ function useInputStateContainerSendMultimediaMessage(): (
throw e;
}
return {
localID,
serverID: messageID,
threadID: messageInfo.threadID,
time,
result: {
localID,
serverID: messageID,
threadID: messageInfo.threadID,
time,
},
};
},
[
Expand All @@ -260,9 +277,6 @@ function mediaIDIsKeyserverID(mediaID: string): boolean {
return mediaID.indexOf('|') !== -1;
}

type MediaIDUpdatePayload = { +id: string, +thumbnailID?: string };
type MediaIDUpdates = { +[string]: MediaIDUpdatePayload };

async function migrateMessageMediaToKeyserver(
messageInfo: RawMultimediaMessageInfo,
reassignMediaMetadata: MediaMetadataReassignmentAction,
Expand Down
5 changes: 3 additions & 2 deletions native/input/input-state-container.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
} from 'lib/actions/upload-actions.js';
import commStaffCommunity from 'lib/facts/comm-staff-community.js';
import {
type SendMultimediaMessagePayload,
useInputStateContainerSendMultimediaMessage,
useInputStateContainerSendTextMessage,
} from 'lib/hooks/input-state-container-hooks.js';
Expand Down Expand Up @@ -157,7 +158,7 @@ type Props = {
messageInfo: RawMultimediaMessageInfo,
sidebarCreation: boolean,
isLegacy: boolean,
) => Promise<SendMessagePayload>,
) => Promise<SendMultimediaMessagePayload>,
+sendTextMessage: (
messageInfo: RawTextMessageInfo,
threadInfo: ThreadInfo,
Expand Down Expand Up @@ -394,7 +395,7 @@ class InputStateContainer extends React.PureComponent<Props, State> {
const sidebarCreation =
this.pendingSidebarCreationMessageLocalIDs.has(localID);
try {
const result = await this.props.sendMultimediaMessage(
const { result } = await this.props.sendMultimediaMessage(
messageInfo,
sidebarCreation,
false,
Expand Down
5 changes: 3 additions & 2 deletions web/input/input-state-container.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
import blobService from 'lib/facts/blob-service.js';
import commStaffCommunity from 'lib/facts/comm-staff-community.js';
import {
type SendMultimediaMessagePayload,
useInputStateContainerSendMultimediaMessage,
useInputStateContainerSendTextMessage,
} from 'lib/hooks/input-state-container-hooks.js';
Expand Down Expand Up @@ -152,7 +153,7 @@ type Props = {
messageInfo: RawMultimediaMessageInfo,
sidebarCreation: boolean,
isLegacy: boolean,
) => Promise<SendMessagePayload>,
) => Promise<SendMultimediaMessagePayload>,
+sendTextMessage: (
messageInfo: RawTextMessageInfo,
threadInfo: ThreadInfo,
Expand Down Expand Up @@ -549,7 +550,7 @@ class InputStateContainer extends React.PureComponent<Props, State> {
const sidebarCreation =
this.pendingSidebarCreationMessageLocalIDs.has(localID);
try {
const result = await this.props.sendMultimediaMessage(
const { result } = await this.props.sendMultimediaMessage(
messageInfo,
sidebarCreation,
true,
Expand Down

0 comments on commit 79ee7cb

Please sign in to comment.