Skip to content

Commit

Permalink
[lib] Update all-but-one instance of RelativeMemberInfo with `Relat…
Browse files Browse the repository at this point in the history
…iveMemberInfo|MinimallyEncodedRelativeMemberInfo`

Summary:
Replace almost all instances of `RelativeMemberInfo` with `RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo`.

We still need to update `getRelativeMember`, but breaking that into a separate diff since that's more than just updating signature.

Test Plan: Trusting `flow`.

Reviewers: ashoat, ginsu, tomek, rohan

Reviewed By: ashoat

Differential Revision: https://phab.comm.dev/D9927
  • Loading branch information
atulsmadhugiri committed Nov 20, 2023
1 parent 88b7974 commit 320f2a6
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 23 deletions.
9 changes: 7 additions & 2 deletions lib/selectors/thread-selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ import {
import type { ClientEmojiAvatar } from '../types/avatar-types';
import type { EntryInfo } from '../types/entry-types.js';
import type { MessageStore, RawMessageInfo } from '../types/message-types.js';
import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js';
import type {
MinimallyEncodedRelativeMemberInfo,
MinimallyEncodedThreadInfo,
} from '../types/minimally-encoded-thread-permissions-types.js';
import type { BaseAppState } from '../types/redux-types.js';
import { threadPermissions } from '../types/thread-permission-types.js';
import {
Expand Down Expand Up @@ -320,7 +323,9 @@ const baseOtherUsersButNoOtherAdmins = (threadID: string) =>
relativeMemberInfoSelectorForMembersOfThread(threadID),
(
threadInfo: ?RawThreadInfo,
members: $ReadOnlyArray<RelativeMemberInfo>,
members: $ReadOnlyArray<
RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
>,
): boolean => {
if (!threadInfo) {
return false;
Expand Down
8 changes: 5 additions & 3 deletions lib/selectors/user-selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import SearchIndex from '../shared/search-index.js';
import SentencePrefixSearchIndex from '../shared/sentence-prefix-search-index.js';
import { getSingleOtherUser } from '../shared/thread-utils.js';
import type { ClientEmojiAvatar } from '../types/avatar-types';
import type { MinimallyEncodedRelativeMemberInfo } from '../types/minimally-encoded-thread-permissions-types.js';
import type { BaseAppState } from '../types/redux-types.js';
import { userRelationshipStatus } from '../types/relationship-types.js';
import { threadTypes } from '../types/thread-types-enum.js';
Expand Down Expand Up @@ -112,9 +113,10 @@ const baseRelativeMemberInfoSelectorForMembersOfThread = (

const relativeMemberInfoSelectorForMembersOfThread: (
threadID: ?string,
) => (state: BaseAppState<>) => $ReadOnlyArray<RelativeMemberInfo> = _memoize(
baseRelativeMemberInfoSelectorForMembersOfThread,
);
) => (
state: BaseAppState<>,
) => $ReadOnlyArray<RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo> =
_memoize(baseRelativeMemberInfoSelectorForMembersOfThread);

const userInfoSelectorForPotentialMembers: (state: BaseAppState<>) => {
[id: string]: AccountUserInfo,
Expand Down
2 changes: 1 addition & 1 deletion lib/shared/thread-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -1666,7 +1666,7 @@ function removeMemberFromThread(
function switchMemberAdminRoleInThread(
threadInfo: ThreadInfo | MinimallyEncodedThreadInfo,
memberInfo: RelativeMemberInfo,
memberInfo: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
isCurrentlyAdmin: boolean,
dispatchActionPromise: DispatchActionPromise,
changeUserRoleServerCall: (
Expand Down
7 changes: 5 additions & 2 deletions web/modals/threads/members/change-member-role-modal.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import { useModalContext } from 'lib/components/modal-provider.react.js';
import SWMansionIcon from 'lib/components/SWMansionIcon.react.js';
import { otherUsersButNoOtherAdmins } from 'lib/selectors/thread-selectors.js';
import { roleIsAdminRole } from 'lib/shared/thread-utils.js';
import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
import type {
MinimallyEncodedRelativeMemberInfo,
MinimallyEncodedThreadInfo,
} from 'lib/types/minimally-encoded-thread-permissions-types.js';
import type { RelativeMemberInfo, ThreadInfo } from 'lib/types/thread-types';
import { useDispatchActionPromise } from 'lib/utils/action-utils.js';
import { values } from 'lib/utils/objects.js';
Expand All @@ -25,7 +28,7 @@ import Modal from '../../modal.react.js';
import UnsavedChangesModal from '../../unsaved-changes-modal.react.js';

type ChangeMemberRoleModalProps = {
+memberInfo: RelativeMemberInfo,
+memberInfo: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
+threadInfo: ThreadInfo | MinimallyEncodedThreadInfo,
};

Expand Down
7 changes: 5 additions & 2 deletions web/modals/threads/members/member.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import {
} from 'lib/shared/thread-utils.js';
import { stringForUser } from 'lib/shared/user-utils.js';
import type { SetState } from 'lib/types/hook-types.js';
import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
import type {
MinimallyEncodedRelativeMemberInfo,
MinimallyEncodedThreadInfo,
} from 'lib/types/minimally-encoded-thread-permissions-types.js';
import {
type RelativeMemberInfo,
type ThreadInfo,
Expand All @@ -31,7 +34,7 @@ import { usePushUserProfileModal } from '../../user-profile/user-profile-utils.j
const commIconComponent = <CommIcon size={18} icon="user-edit" />;

type Props = {
+memberInfo: RelativeMemberInfo,
+memberInfo: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
+threadInfo: ThreadInfo | MinimallyEncodedThreadInfo,
+setOpenMenu: SetState<?string>,
};
Expand Down
29 changes: 19 additions & 10 deletions web/modals/threads/members/members-list.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ import * as React from 'react';

import { useENSNames } from 'lib/hooks/ens-cache.js';
import { stringForUser } from 'lib/shared/user-utils.js';
import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
import type {
MinimallyEncodedRelativeMemberInfo,
MinimallyEncodedThreadInfo,
} from 'lib/types/minimally-encoded-thread-permissions-types.js';
import {
type ThreadInfo,
type RelativeMemberInfo,
Expand All @@ -18,7 +21,9 @@ import css from './members-modal.css';

type Props = {
+threadInfo: ThreadInfo | MinimallyEncodedThreadInfo,
+threadMembers: $ReadOnlyArray<RelativeMemberInfo>,
+threadMembers: $ReadOnlyArray<
RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
>,
};

function ThreadMembersList(props: Props): React.Node {
Expand All @@ -43,14 +48,18 @@ function ThreadMembersList(props: Props): React.Node {
.map(([letter, users]) => {
const userList = users
.sort((a, b) => stringForUser(a).localeCompare(stringForUser(b)))
.map((user: RelativeMemberInfo) => (
<ThreadMember
key={user.id}
memberInfo={user}
threadInfo={threadInfo}
setOpenMenu={setOpenMenu}
/>
));
.map(
(
user: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo,
) => (
<ThreadMember
key={user.id}
memberInfo={user}
threadInfo={threadInfo}
setOpenMenu={setOpenMenu}
/>
),
);
const letterHeader = (
<h5 className={css.memberletterHeader} key={letter}>
{letter.toUpperCase()}
Expand Down
8 changes: 5 additions & 3 deletions web/modals/threads/members/members-modal.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
roleIsAdminRole,
threadHasPermission,
} from 'lib/shared/thread-utils.js';
import type { MinimallyEncodedRelativeMemberInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js';
import { threadPermissions } from 'lib/types/thread-permission-types.js';
import { type RelativeMemberInfo } from 'lib/types/thread-types.js';
import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js';
Expand Down Expand Up @@ -42,7 +43,7 @@ function ThreadMembersModalContent(props: ContentProps): React.Node {
const allMembers = React.useMemo(
() =>
threadMembersNotFiltered.filter(
(member: RelativeMemberInfo) =>
(member: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo) =>
searchText.length === 0 || userIDs.includes(member.id),
),
[searchText.length, threadMembersNotFiltered, userIDs],
Expand All @@ -51,8 +52,9 @@ function ThreadMembersModalContent(props: ContentProps): React.Node {
const roles = useRolesFromCommunityThreadInfo(threadInfo, allMembers);
const adminMembers = React.useMemo(
() =>
allMembers.filter((member: RelativeMemberInfo) =>
roleIsAdminRole(roles.get(member.id)),
allMembers.filter(
(member: RelativeMemberInfo | MinimallyEncodedRelativeMemberInfo) =>
roleIsAdminRole(roles.get(member.id)),
),
[allMembers, roles],
);
Expand Down

0 comments on commit 320f2a6

Please sign in to comment.