Use UUIDs in group database schema

This commit is contained in:
Fedor Indutny 2021-10-26 15:59:08 -07:00 committed by GitHub
parent 74fde10ff5
commit 63fcdbe787
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
79 changed files with 4530 additions and 3664 deletions

View file

@ -13,6 +13,7 @@ import type {
import { getIncomingCall as getIncomingCallHelper } from '../ducks/calling';
import { getUserUuid } from './user';
import { getOwn } from '../../util/getOwn';
import type { UUIDStringType } from '../../types/UUID';
export type CallStateType = DirectCallStateType | GroupCallStateType;
@ -61,7 +62,7 @@ export const getIncomingCall = createSelector(
getUserUuid,
(
callsByConversation: CallsByConversationType,
ourUuid: string
ourUuid: UUIDStringType
): undefined | DirectCallStateType | GroupCallStateType =>
getIncomingCallHelper(callsByConversation, ourUuid)
);

View file

@ -27,6 +27,7 @@ import { filterAndSortConversationsByTitle } from '../../util/filterAndSortConve
import type { ContactNameColorType } from '../../types/Colors';
import { ContactNameColors } from '../../types/Colors';
import type { AvatarDataType } from '../../types/Avatar';
import type { UUIDStringType } from '../../types/UUID';
import { isInSystemContacts } from '../../util/isInSystemContacts';
import { sortByTitle } from '../../util/sortByTitle';
import {
@ -668,6 +669,12 @@ export const getConversationByIdSelector = createSelector(
getOwn(conversationLookup, id)
);
export const getConversationByUuidSelector = createSelector(
getConversationsByUuid,
conversationsByUuid => (uuid: UUIDStringType): undefined | ConversationType =>
getOwn(conversationsByUuid, uuid)
);
// A little optimization to reset our selector cache whenever high-level application data
// changes: regionCode and userNumber.
export const getCachedSelectorForMessage = createSelector(
@ -766,7 +773,7 @@ export const getMessageSelector = createSelector(
conversationSelector: GetConversationByIdType,
regionCode: string,
ourNumber: string,
ourUuid: string,
ourUuid: UUIDStringType,
ourConversationId: string,
callSelector: CallSelectorType,
activeCall: undefined | CallStateType,
@ -903,16 +910,13 @@ export const getConversationMessagesSelector = createSelector(
);
export const getInvitedContactsForNewlyCreatedGroup = createSelector(
getConversationLookup,
getConversationsByUuid,
getConversations,
(
conversationLookup,
{ invitedConversationIdsForNewlyCreatedGroup = [] }
{ invitedUuidsForNewlyCreatedGroup = [] }
): Array<ConversationType> =>
deconstructLookup(
conversationLookup,
invitedConversationIdsForNewlyCreatedGroup
)
deconstructLookup(conversationLookup, invitedUuidsForNewlyCreatedGroup)
);
export const getConversationsWithCustomColorSelector = createSelector(
@ -962,7 +966,7 @@ export const getGroupAdminsSelector = createSelector(
const admins: Array<ConversationType> = [];
memberships.forEach(membership => {
if (membership.isAdmin) {
const admin = conversationSelector(membership.conversationId);
const admin = conversationSelector(membership.uuid);
admins.push(admin);
}
});

View file

@ -37,6 +37,7 @@ import type { PropsType as ProfileChangeNotificationPropsType } from '../../comp
import type { QuotedAttachmentType } from '../../components/conversation/Quote';
import { getDomain, isStickerPack } from '../../types/LinkPreview';
import type { UUIDStringType } from '../../types/UUID';
import type { EmbeddedContactType } from '../../types/EmbeddedContact';
import { embeddedContactSelector } from '../../types/EmbeddedContact';
@ -99,7 +100,7 @@ export type GetPropsForBubbleOptions = Readonly<{
conversationSelector: GetConversationByIdType;
ourConversationId: string;
ourNumber?: string;
ourUuid?: string;
ourUuid: UUIDStringType;
selectedMessageId?: string;
selectedMessageCounter?: number;
regionCode: string;
@ -772,7 +773,7 @@ export function isGroupV2Change(message: MessageAttributesType): boolean {
function getPropsForGroupV2Change(
message: MessageAttributesType,
{ conversationSelector, ourConversationId }: GetPropsForBubbleOptions
{ conversationSelector, ourUuid }: GetPropsForBubbleOptions
): GroupsV2Props {
const change = message.groupV2Change;
@ -784,7 +785,7 @@ function getPropsForGroupV2Change(
return {
groupName: conversation?.type === 'group' ? conversation?.name : undefined,
ourConversationId,
ourUuid,
change,
};
}
@ -806,7 +807,7 @@ function getPropsForGroupV1Migration(
const droppedGV2MemberIds = message.droppedGV2MemberIds || [];
const invitedMembers = invitedGV2Members.map(item =>
conversationSelector(item.conversationId)
conversationSelector(item.uuid)
);
const droppedMembers = droppedGV2MemberIds.map(conversationId =>
conversationSelector(conversationId)
@ -825,7 +826,7 @@ function getPropsForGroupV1Migration(
invitedMembers: rawInvitedMembers,
} = migration;
const invitedMembers = rawInvitedMembers.map(item =>
conversationSelector(item.conversationId)
conversationSelector(item.uuid)
);
const droppedMembers = droppedMemberIds.map(conversationId =>
conversationSelector(conversationId)

View file

@ -4,6 +4,7 @@
import { createSelector } from 'reselect';
import type { LocalizerType, ThemeType } from '../../types/Util';
import type { UUIDStringType } from '../../types/UUID';
import type { StateType } from '../reducer';
import type { UserStateType } from '../ducks/user';
@ -32,7 +33,7 @@ export const getUserConversationId = createSelector(
export const getUserUuid = createSelector(
getUser,
(state: UserStateType): string => state.ourUuid
(state: UserStateType): UUIDStringType => state.ourUuid
);
export const getIntl = createSelector(