Migrate schema to service ids

This commit is contained in:
Fedor Indutny 2023-08-16 22:54:39 +02:00 committed by Jamie Kyle
parent 71958f8a01
commit 8b0da36caa
258 changed files with 4795 additions and 2613 deletions

View file

@ -17,6 +17,7 @@ import type {
ActiveCallType,
GroupCallRemoteParticipantType,
} from '../../types/Calling';
import { isAciString } from '../../types/ServiceId';
import type { AciString } from '../../types/ServiceId';
import { CallMode, CallState } from '../../types/Calling';
import type { StateType } from '../reducer';
@ -131,7 +132,7 @@ const mapStateToActiveCallProp = (
(aci: AciString) => undefined | ConversationType
>(aci => {
const convoForAci = window.ConversationController.lookupOrCreate({
uuid: aci,
serviceId: aci,
reason: 'CallManager.mapStateToActiveCallProp',
});
return convoForAci ? conversationSelector(convoForAci.id) : undefined;
@ -165,6 +166,11 @@ const mapStateToActiveCallProp = (
return;
}
strictAssert(
isAciString(conversation.serviceId),
'Conversation must have aci'
);
return {
...baseResult,
callEndedReason: call.callEndedReason,
@ -176,7 +182,7 @@ const mapStateToActiveCallProp = (
hasRemoteVideo: Boolean(call.hasRemoteVideo),
presenting: Boolean(call.isSharingScreen),
title: conversation.title,
uuid: conversation.uuid,
serviceId: conversation.serviceId,
},
],
};
@ -199,9 +205,9 @@ const mapStateToActiveCallProp = (
} = call;
for (let i = 0; i < memberships.length; i += 1) {
const { uuid } = memberships[i];
const { aci } = memberships[i];
const member = conversationSelector(uuid);
const member = conversationSelector(aci);
if (!member) {
log.error('Group member has no corresponding conversation');
continue;

View file

@ -171,7 +171,7 @@ const mapStateToProps = (state: StateType, props: ExternalProps) => {
ourConversationId: getUserConversationId(state),
})
: undefined,
quotedMessageAuthorUuid: quotedMessage?.quote?.authorUuid,
quotedMessageAuthorAci: quotedMessage?.quote?.authorAci,
quotedMessageSentAt: quotedMessage?.quote?.id,
// Emojis
recentEmojis,
@ -201,7 +201,7 @@ const mapStateToProps = (state: StateType, props: ExternalProps) => {
draftText: dropNull(draftText),
draftBodyRanges: draftBodyRanges?.map(bodyRange => {
if (BodyRange.isMention(bodyRange)) {
const mentionConvo = conversationSelector(bodyRange.mentionUuid);
const mentionConvo = conversationSelector(bodyRange.mentionAci);
return {
...bodyRange,

View file

@ -29,7 +29,7 @@ const mapStateToProps = (state: StateType): PropsDataType => {
let isAdmin = false;
if (contact && currentConversation && currentConversation.memberships) {
currentConversation.memberships.forEach(membership => {
if (membership.uuid === contact.uuid) {
if (membership.aci === contact.serviceId) {
isMember = true;
isAdmin = membership.isAdmin;
}

View file

@ -11,7 +11,7 @@ import type { StateProps } from '../../components/conversation/conversation-deta
import { ConversationDetails } from '../../components/conversation/conversation-details/ConversationDetails';
import {
getConversationByIdSelector,
getConversationByUuidSelector,
getConversationByServiceIdSelector,
getAllComposableConversations,
} from '../selectors/conversations';
import { getGroupMemberships } from '../../util/getGroupMemberships';
@ -74,10 +74,11 @@ const mapStateToProps = (
Boolean(conversation.groupLink) &&
conversation.accessControlAddFromInviteLink !== ACCESS_ENUM.UNSATISFIABLE;
const conversationByUuidSelector = getConversationByUuidSelector(state);
const conversationByServiceIdSelector =
getConversationByServiceIdSelector(state);
const groupMemberships = getGroupMemberships(
conversation,
conversationByUuidSelector
conversationByServiceIdSelector
);
const badges = getBadgesSelector(state)(conversation.badges);
@ -88,7 +89,7 @@ const mapStateToProps = (
c =>
c.type === 'group' &&
(c.memberships ?? []).some(
member => member.uuid === conversation.uuid
member => member.aci === conversation.serviceId
)
)
: [];

View file

@ -12,7 +12,7 @@ import {
} from '../../components/conversation/ConversationHeader';
import { getPreferredBadgeSelector } from '../selectors/badges';
import {
getConversationByUuidSelector,
getConversationByServiceIdSelector,
getConversationSelector,
getHasPanelOpen,
isMissingRequiredProfileSharing,
@ -113,10 +113,12 @@ export function SmartConversationHeader({ id }: OwnProps): JSX.Element {
const { searchInConversation } = useSearchActions();
const { viewUserStories } = useStoriesActions();
const conversationByUuidSelector = useSelector(getConversationByUuidSelector);
const conversationByServiceIdSelector = useSelector(
getConversationByServiceIdSelector
);
const groupMemberships = getGroupMemberships(
conversation,
conversationByUuidSelector
conversationByServiceIdSelector
);
const cannotLeaveBecauseYouAreLastAdmin =
getCannotLeaveBecauseYouAreLastAdmin(groupMemberships.memberships, isAdmin);

View file

@ -318,7 +318,10 @@ function PanelElement({
i18n={i18n}
onSendMessage={() => {
if (signalAccount) {
startConversation(signalAccount.phoneNumber, signalAccount.uuid);
startConversation(
signalAccount.phoneNumber,
signalAccount.serviceId
);
}
}}
/>

View file

@ -9,7 +9,7 @@ import { assertDev } from '../../util/assert';
import { getGroupMemberships } from '../../util/getGroupMemberships';
import {
getConversationByIdSelector,
getConversationByUuidSelector,
getConversationByServiceIdSelector,
} from '../selectors/conversations';
import { getIntl, getTheme } from '../selectors/user';
import { getPreferredBadgeSelector } from '../selectors/badges';
@ -26,7 +26,9 @@ export function SmartGV1Members({ conversationId }: PropsType): JSX.Element {
const { showContactModal } = useGlobalModalActions();
const conversationSelector = useSelector(getConversationByIdSelector);
const conversationByUuidSelector = useSelector(getConversationByUuidSelector);
const conversationByServiceIdSelector = useSelector(
getConversationByServiceIdSelector
);
const conversation = conversationSelector(conversationId);
assertDev(
@ -36,7 +38,7 @@ export function SmartGV1Members({ conversationId }: PropsType): JSX.Element {
const { memberships } = getGroupMemberships(
conversation,
conversationByUuidSelector
conversationByServiceIdSelector
);
return (

View file

@ -11,7 +11,7 @@ import { getIntl, getTheme } from '../selectors/user';
import { getPreferredBadgeSelector } from '../selectors/badges';
import {
getConversationByIdSelector,
getConversationByUuidSelector,
getConversationByServiceIdSelector,
} from '../selectors/conversations';
import { getGroupMemberships } from '../../util/getGroupMemberships';
import { assertDev } from '../../util/assert';
@ -27,7 +27,8 @@ const mapStateToProps = (
props: SmartPendingInvitesProps
): PropsDataType => {
const conversationSelector = getConversationByIdSelector(state);
const conversationByUuidSelector = getConversationByUuidSelector(state);
const conversationByServiceIdSelector =
getConversationByServiceIdSelector(state);
const conversation = conversationSelector(props.conversationId);
assertDev(
@ -37,7 +38,7 @@ const mapStateToProps = (
return {
...props,
...getGroupMemberships(conversation, conversationByUuidSelector),
...getGroupMemberships(conversation, conversationByServiceIdSelector),
conversation,
getPreferredBadge: getPreferredBadgeSelector(state),
i18n: getIntl(state),

View file

@ -10,7 +10,7 @@ import { StoriesSettingsModal } from '../../components/StoriesSettingsModal';
import {
getAllSignalConnections,
getCandidateContactsForNewGroup,
getConversationByUuidSelector,
getConversationByServiceIdSelector,
getGroupStories,
getMe,
} from '../selectors/conversations';
@ -48,7 +48,9 @@ export function SmartStoriesSettingsModal(): JSX.Element | null {
const distributionLists = useSelector(getDistributionListsWithMembers);
const groupStories = useSelector(getGroupStories);
const getConversationByUuid = useSelector(getConversationByUuidSelector);
const getConversationByServiceId = useSelector(
getConversationByServiceIdSelector
);
const theme = useSelector(getTheme);
return (
@ -61,7 +63,7 @@ export function SmartStoriesSettingsModal(): JSX.Element | null {
getPreferredBadge={getPreferredBadge}
i18n={i18n}
me={me}
getConversationByUuid={getConversationByUuid}
getConversationByServiceId={getConversationByServiceId}
onDeleteList={deleteDistributionList}
toggleGroupsForStorySend={toggleGroupsForStorySend}
onDistributionListCreated={createDistributionList}

View file

@ -19,7 +19,7 @@ import type { ConversationType } from '../ducks/conversations';
import { getIntl, getTheme } from '../selectors/user';
import {
getMessages,
getConversationByUuidSelector,
getConversationByServiceIdSelector,
getConversationMessagesSelector,
getConversationSelector,
getConversationsByTitleSelector,
@ -139,11 +139,12 @@ const getWarning = (
return undefined;
}
const getConversationByUuid = getConversationByUuidSelector(state);
const getConversationByServiceId =
getConversationByServiceIdSelector(state);
const { memberships } = getGroupMemberships(
conversation,
getConversationByUuid
getConversationByServiceId
);
const groupNameCollisions = getCollisionsFromMemberships(memberships);
const hasGroupMembersWithSameName = !isEmpty(groupNameCollisions);
@ -174,7 +175,7 @@ const getContactSpoofingReview = (
}
const conversationSelector = getConversationSelector(state);
const getConversationByUuid = getConversationByUuidSelector(state);
const getConversationByServiceId = getConversationByServiceIdSelector(state);
const currentConversation = conversationSelector(selectedConversationId);
@ -194,7 +195,7 @@ const getContactSpoofingReview = (
);
const { memberships } = getGroupMemberships(
currentConversation,
getConversationByUuid
getConversationByServiceId
);
const groupNameCollisions = getCollisionsFromMemberships(memberships);