Use UUIDs in group database schema
This commit is contained in:
parent
74fde10ff5
commit
63fcdbe787
79 changed files with 4530 additions and 3664 deletions
|
@ -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)
|
||||
);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue