diff --git a/lib/selectors/thread-selectors.js b/lib/selectors/thread-selectors.js --- a/lib/selectors/thread-selectors.js +++ b/lib/selectors/thread-selectors.js @@ -39,10 +39,7 @@ import type { ClientAvatar, ClientEmojiAvatar } from '../types/avatar-types'; import type { EntryInfo } from '../types/entry-types.js'; import type { MessageStore, RawMessageInfo } from '../types/message-types.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from '../types/minimally-encoded-thread-permissions-types.js'; +import type { 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 { @@ -53,9 +50,9 @@ import { type ThreadInfo, type RawThreadInfo, - type LegacyRelativeMemberInfo, type SidebarInfo, type RawThreadInfos, + type RelativeMemberInfo, } from '../types/thread-types.js'; import { dateString, dateFromString } from '../utils/date-utils.js'; import { values } from '../utils/objects.js'; @@ -327,9 +324,7 @@ relativeMemberInfoSelectorForMembersOfThread(threadID), ( threadInfo: ?RawThreadInfo, - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + members: $ReadOnlyArray, ): boolean => { if (!threadInfo) { return false; diff --git a/lib/selectors/user-selectors.js b/lib/selectors/user-selectors.js --- a/lib/selectors/user-selectors.js +++ b/lib/selectors/user-selectors.js @@ -11,7 +11,6 @@ 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'; @@ -19,6 +18,7 @@ type RawThreadInfo, type LegacyRelativeMemberInfo, type RawThreadInfos, + type RelativeMemberInfo, } from '../types/thread-types.js'; import type { UserInfos, @@ -116,11 +116,9 @@ const relativeMemberInfoSelectorForMembersOfThread: ( threadID: ?string, -) => ( - state: BaseAppState<>, -) => $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, -> = _memoize(baseRelativeMemberInfoSelectorForMembersOfThread); +) => (state: BaseAppState<>) => $ReadOnlyArray = _memoize( + baseRelativeMemberInfoSelectorForMembersOfThread, +); const userInfoSelectorForPotentialMembers: (state: BaseAppState<>) => { [id: string]: AccountUserInfo, diff --git a/lib/shared/markdown.js b/lib/shared/markdown.js --- a/lib/shared/markdown.js +++ b/lib/shared/markdown.js @@ -6,14 +6,11 @@ markdownUserMentionRegex, decodeChatMentionText, } from './mention-utils.js'; +import type { MinimallyEncodedResolvedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedResolvedThreadInfo, -} from '../types/minimally-encoded-thread-permissions-types.js'; -import type { - LegacyRelativeMemberInfo, ResolvedThreadInfo, ChatMentionCandidates, + RelativeMemberInfo, } from '../types/thread-types.js'; // simple-markdown types @@ -202,9 +199,7 @@ } function createMemberMapForUserMentions( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + members: $ReadOnlyArray, ): $ReadOnlyMap { const membersMap = new Map(); members.forEach(member => { diff --git a/lib/shared/mention-utils.js b/lib/shared/mention-utils.js --- a/lib/shared/mention-utils.js +++ b/lib/shared/mention-utils.js @@ -5,16 +5,15 @@ import { threadOtherMembers } from './thread-utils.js'; import { stringForUserExplicit } from './user-utils.js'; import type { - MinimallyEncodedRelativeMemberInfo, MinimallyEncodedResolvedThreadInfo, MinimallyEncodedThreadInfo, } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; import type { ThreadInfo, - LegacyRelativeMemberInfo, ResolvedThreadInfo, ChatMentionCandidates, + RelativeMemberInfo, } from '../types/thread-types.js'; import { idSchemaRegex, chatNameMaxLength } from '../utils/validation-utils.js'; @@ -30,7 +29,7 @@ type MentionTypeaheadUserSuggestionItem = { +type: 'user', - +userInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +userInfo: RelativeMemberInfo, }; type MentionTypeaheadChatSuggestionItem = { @@ -109,9 +108,7 @@ function getMentionTypeaheadUserSuggestions( userSearchIndex: SentencePrefixSearchIndex, - threadMembers: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + threadMembers: $ReadOnlyArray, viewerID: ?string, usernamePrefix: string, ): $ReadOnlyArray { @@ -169,9 +166,7 @@ function getUserMentionsCandidates( threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, -): $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, -> { +): $ReadOnlyArray { if (threadInfo.type !== threadTypes.SIDEBAR) { return threadInfo.members; } diff --git a/lib/shared/thread-utils.js b/lib/shared/thread-utils.js --- a/lib/shared/thread-utils.js +++ b/lib/shared/thread-utils.js @@ -59,7 +59,6 @@ } from '../types/message-types.js'; import type { MinimallyEncodedRawThreadInfo, - MinimallyEncodedRelativeMemberInfo, MinimallyEncodedThreadCurrentUserInfo, MinimallyEncodedThreadInfo, } from '../types/minimally-encoded-thread-permissions-types.js'; @@ -85,7 +84,6 @@ type ThreadInfo, type MemberInfo, type ServerThreadInfo, - type LegacyRelativeMemberInfo, type ThreadCurrentUserInfo, type RoleInfo, type ServerMemberInfo, @@ -93,6 +91,7 @@ type NewThreadResult, type ChangeThreadSettingsPayload, type UserProfileThreadInfo, + type RelativeMemberInfo, } from '../types/thread-types.js'; import { updateTypes } from '../types/update-types-enum.js'; import { type ClientUpdateInfo } from '../types/update-types.js'; @@ -276,18 +275,17 @@ } function threadActualMembers( - memberInfos: $ReadOnlyArray< - MemberInfo | LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + memberInfos: $ReadOnlyArray, ): $ReadOnlyArray { return memberInfos .filter(memberInfo => memberInfo.role) .map(memberInfo => memberInfo.id); } -function threadOtherMembers< - T: MemberInfo | LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, ->(memberInfos: $ReadOnlyArray, viewerID: ?string): $ReadOnlyArray { +function threadOtherMembers( + memberInfos: $ReadOnlyArray, + viewerID: ?string, +): $ReadOnlyArray { return memberInfos.filter( memberInfo => memberInfo.role && memberInfo.id !== viewerID, ); @@ -528,9 +526,7 @@ // Returns map from lowercase username to AccountUserInfo function memberLowercaseUsernameMap( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + members: $ReadOnlyArray, ): Map { const memberMap = new Map(); for (const member of members) { @@ -946,9 +942,7 @@ return firstLine(threadInfo.name); } - let threadMembers: - | $ReadOnlyArray - | $ReadOnlyArray; + let threadMembers: $ReadOnlyArray; let memberEntities: $ReadOnlyArray; // Branching below is to appease flow if (threadInfo.minimallyEncoded) { @@ -1129,10 +1123,7 @@ }; function memberIsAdmin( - memberInfo: - | LegacyRelativeMemberInfo - | MemberInfo - | MinimallyEncodedRelativeMemberInfo, + memberInfo: RelativeMemberInfo | MemberInfo, threadInfo: | ThreadInfo | RawThreadInfo @@ -1147,11 +1138,7 @@ // Since we don't have access to all of the ancestor ThreadInfos, we approximate // "parent admin" as anybody with CHANGE_ROLE permissions. function memberHasAdminPowers( - memberInfo: - | LegacyRelativeMemberInfo - | MemberInfo - | ServerMemberInfo - | MinimallyEncodedRelativeMemberInfo, + memberInfo: RelativeMemberInfo | MemberInfo | ServerMemberInfo, ): boolean { if (memberInfo.minimallyEncoded) { return hasPermission(memberInfo.permissions, threadPermissions.CHANGE_ROLE); @@ -1651,7 +1638,7 @@ function removeMemberFromThread( threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + memberInfo: RelativeMemberInfo, dispatchActionPromise: DispatchActionPromise, removeUserFromThreadServerCall: ( input: RemoveUsersFromThreadInput, @@ -1670,7 +1657,7 @@ function switchMemberAdminRoleInThread( threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + memberInfo: RelativeMemberInfo, isCurrentlyAdmin: boolean, dispatchActionPromise: DispatchActionPromise, changeUserRoleServerCall: ( @@ -1701,7 +1688,7 @@ } function getAvailableThreadMemberActions( - memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + memberInfo: RelativeMemberInfo, threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, canEdit: ?boolean = true, ): $ReadOnlyArray<'change_role' | 'remove_user'> { diff --git a/lib/types/thread-types.js b/lib/types/thread-types.js --- a/lib/types/thread-types.js +++ b/lib/types/thread-types.js @@ -16,6 +16,7 @@ } from './message-types.js'; import type { MinimallyEncodedMemberInfo, + MinimallyEncodedRelativeMemberInfo, MinimallyEncodedResolvedThreadInfo, MinimallyEncodedRoleInfo, } from './minimally-encoded-thread-permissions-types.js'; @@ -66,6 +67,10 @@ isViewer: t.Boolean, }); +export type RelativeMemberInfo = + | LegacyRelativeMemberInfo + | MinimallyEncodedRelativeMemberInfo; + export type LegacyRoleInfo = { +id: string, +name: string, diff --git a/lib/utils/role-utils.js b/lib/utils/role-utils.js --- a/lib/utils/role-utils.js +++ b/lib/utils/role-utils.js @@ -4,10 +4,7 @@ import { useSelector } from './redux-utils.js'; import { threadInfoSelector } from '../selectors/thread-selectors.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from '../types/minimally-encoded-thread-permissions-types.js'; +import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { configurableCommunityPermissions, type ThreadRolePermissionsBlob, @@ -15,8 +12,8 @@ } from '../types/thread-permission-types.js'; import type { ThreadInfo, - LegacyRelativeMemberInfo, RoleInfo, + RelativeMemberInfo, } from '../types/thread-types'; import { threadTypes } from '../types/thread-types-enum.js'; @@ -61,9 +58,7 @@ function useRolesFromCommunityThreadInfo( threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - memberInfos: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + memberInfos: $ReadOnlyArray, ): $ReadOnlyMap { // Our in-code system has chat-specific roles, while the // user-surfaced system has roles only for communities. We retrieve roles diff --git a/native/chat/chat-input-bar.react.js b/native/chat/chat-input-bar.react.js --- a/native/chat/chat-input-bar.react.js +++ b/native/chat/chat-input-bar.react.js @@ -71,18 +71,15 @@ SendEditMessageResponse, MessageInfo, } from 'lib/types/message-types.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { Dispatch } from 'lib/types/redux-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import type { ThreadInfo, ClientThreadJoinRequest, ThreadJoinPayload, - LegacyRelativeMemberInfo, ChatMentionCandidates, + RelativeMemberInfo, } from 'lib/types/thread-types.js'; import { type UserInfos } from 'lib/types/user-types.js'; import { @@ -299,9 +296,7 @@ +joinThread: (request: ClientThreadJoinRequest) => Promise, +inputState: ?InputState, +userSearchIndex: SentencePrefixSearchIndex, - +userMentionsCandidates: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + +userMentionsCandidates: $ReadOnlyArray, +chatMentionSearchIndex: SentencePrefixSearchIndex, +chatMentionCandidates: ChatMentionCandidates, +parentThreadInfo: ?ThreadInfo, diff --git a/native/chat/settings/thread-settings-member-tooltip-modal.react.js b/native/chat/settings/thread-settings-member-tooltip-modal.react.js --- a/native/chat/settings/thread-settings-member-tooltip-modal.react.js +++ b/native/chat/settings/thread-settings-member-tooltip-modal.react.js @@ -5,14 +5,8 @@ import { useRemoveUsersFromThread } from 'lib/actions/thread-actions.js'; import { removeMemberFromThread } from 'lib/shared/thread-utils.js'; import { stringForUser } from 'lib/shared/user-utils.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { - ThreadInfo, - LegacyRelativeMemberInfo, -} from 'lib/types/thread-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import ThreadSettingsMemberTooltipButton from './thread-settings-member-tooltip-button.react.js'; @@ -28,7 +22,7 @@ import Alert from '../../utils/alert.js'; export type ThreadSettingsMemberTooltipModalParams = TooltipParams<{ - +memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, }>; diff --git a/native/chat/settings/thread-settings-member.react.js b/native/chat/settings/thread-settings-member.react.js --- a/native/chat/settings/thread-settings-member.react.js +++ b/native/chat/settings/thread-settings-member.react.js @@ -19,13 +19,10 @@ import { getAvailableThreadMemberActions } from 'lib/shared/thread-utils.js'; import { stringForUser } from 'lib/shared/user-utils.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { type ThreadInfo, - type LegacyRelativeMemberInfo, + type RelativeMemberInfo, } from 'lib/types/thread-types.js'; import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js'; @@ -93,7 +90,7 @@ }; type BaseProps = { - +memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, +canEdit: boolean, +navigate: ThreadSettingsNavigate, diff --git a/native/chat/settings/thread-settings.react.js b/native/chat/settings/thread-settings.react.js --- a/native/chat/settings/thread-settings.react.js +++ b/native/chat/settings/thread-settings.react.js @@ -34,7 +34,6 @@ } from 'lib/shared/thread-utils.js'; import threadWatcher from 'lib/shared/thread-watcher.js'; import type { - MinimallyEncodedRelativeMemberInfo, MinimallyEncodedResolvedThreadInfo, MinimallyEncodedThreadInfo, } from 'lib/types/minimally-encoded-thread-permissions-types.js'; @@ -44,7 +43,7 @@ import { type ThreadInfo, type ResolvedThreadInfo, - type LegacyRelativeMemberInfo, + type RelativeMemberInfo, } from 'lib/types/thread-types.js'; import type { UserInfos } from 'lib/types/user-types.js'; import { @@ -210,9 +209,7 @@ | { +itemType: 'member', +key: string, - +memberInfo: - | LegacyRelativeMemberInfo - | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +threadInfo: ResolvedThreadInfo | MinimallyEncodedResolvedThreadInfo, +canEdit: boolean, +navigate: ThreadSettingsNavigate, @@ -1143,9 +1140,7 @@ const threadMembersChangeIsSaving = ( state: AppState, - threadMembers: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + threadMembers: $ReadOnlyArray, ) => { for (const threadMember of threadMembers) { const removeUserLoadingStatus = createLoadingStatusSelector( diff --git a/native/markdown/rules.react.js b/native/markdown/rules.react.js --- a/native/markdown/rules.react.js +++ b/native/markdown/rules.react.js @@ -7,14 +7,11 @@ import * as SharedMarkdown from 'lib/shared/markdown.js'; import { chatMentionRegex } from 'lib/shared/mention-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 { - LegacyRelativeMemberInfo, ThreadInfo, ChatMentionCandidates, + RelativeMemberInfo, } from 'lib/types/thread-types.js'; import MarkdownChatMention from './markdown-chat-mention.react.js'; @@ -377,9 +374,7 @@ } function textMessageRules( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + members: $ReadOnlyArray, chatMentionCandidates: ChatMentionCandidates, useDarkStyle: boolean, ): MarkdownRules { diff --git a/native/roles/change-roles-screen.react.js b/native/roles/change-roles-screen.react.js --- a/native/roles/change-roles-screen.react.js +++ b/native/roles/change-roles-screen.react.js @@ -12,14 +12,8 @@ import { otherUsersButNoOtherAdmins } from 'lib/selectors/thread-selectors.js'; import { roleIsAdminRole } from 'lib/shared/thread-utils.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { - LegacyRelativeMemberInfo, - ThreadInfo, -} from 'lib/types/thread-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { RelativeMemberInfo, ThreadInfo } from 'lib/types/thread-types.js'; import { values } from 'lib/utils/objects.js'; import ChangeRolesHeaderRightButton from './change-roles-header-right-button.react.js'; @@ -32,7 +26,7 @@ export type ChangeRolesScreenParams = { +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +role: ?string, }; diff --git a/web/input/input-state.js b/web/input/input-state.js --- a/web/input/input-state.js +++ b/web/input/input-state.js @@ -9,14 +9,11 @@ type MediaMissionStep, } from 'lib/types/media-types.js'; import type { RawTextMessageInfo } from 'lib/types/messages/text.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { ThreadInfo, - LegacyRelativeMemberInfo, ChatMentionCandidates, + RelativeMemberInfo, } from 'lib/types/thread-types.js'; export type PendingMultimediaUpload = { @@ -51,9 +48,7 @@ export type TypeaheadState = { +canBeVisible: boolean, +keepUpdatingThreadMembers: boolean, - +frozenUserMentionsCandidates: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + +frozenUserMentionsCandidates: $ReadOnlyArray, +frozenChatMentionsCandidates: ChatMentionCandidates, +moveChoiceUp: ?() => void, +moveChoiceDown: ?() => void, diff --git a/web/markdown/rules.react.js b/web/markdown/rules.react.js --- a/web/markdown/rules.react.js +++ b/web/markdown/rules.react.js @@ -6,14 +6,11 @@ import * as SharedMarkdown from 'lib/shared/markdown.js'; import { chatMentionRegex } from 'lib/shared/mention-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 { - LegacyRelativeMemberInfo, ThreadInfo, ChatMentionCandidates, + RelativeMemberInfo, } from 'lib/types/thread-types.js'; import MarkdownChatMention from './markdown-chat-mention.react.js'; @@ -183,9 +180,7 @@ } function textMessageRules( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + members: $ReadOnlyArray, chatMentionCandidates: ChatMentionCandidates, useDarkStyle: boolean, ): MarkdownRules { diff --git a/web/modals/threads/create/steps/subchannel-members-list.react.js b/web/modals/threads/create/steps/subchannel-members-list.react.js --- a/web/modals/threads/create/steps/subchannel-members-list.react.js +++ b/web/modals/threads/create/steps/subchannel-members-list.react.js @@ -4,14 +4,8 @@ import { useENSNames } from 'lib/hooks/ens-cache.js'; import { stringForUser } from 'lib/shared/user-utils.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { - LegacyRelativeMemberInfo, - ThreadInfo, -} from 'lib/types/thread-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { RelativeMemberInfo, ThreadInfo } from 'lib/types/thread-types.js'; import type { UserListItem } from 'lib/types/user-types.js'; import { useSelector } from '../../../../redux/redux-utils.js'; @@ -46,11 +40,7 @@ ); const filterOutParentMembersWithENSNames = React.useCallback( - ( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, - ) => + (members: $ReadOnlyArray) => members .filter( user => @@ -71,11 +61,7 @@ ); const filterOutOtherMembersWithENSNames = React.useCallback( - ( - members: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, - ) => + (members: $ReadOnlyArray) => members .filter( user => diff --git a/web/modals/threads/members/change-member-role-modal.react.js b/web/modals/threads/members/change-member-role-modal.react.js --- a/web/modals/threads/members/change-member-role-modal.react.js +++ b/web/modals/threads/members/change-member-role-modal.react.js @@ -11,14 +11,8 @@ 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 { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { - LegacyRelativeMemberInfo, - ThreadInfo, -} from 'lib/types/thread-types'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { values } from 'lib/utils/objects.js'; @@ -31,7 +25,7 @@ import UnsavedChangesModal from '../../unsaved-changes-modal.react.js'; type ChangeMemberRoleModalProps = { - +memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, }; diff --git a/web/modals/threads/members/member.react.js b/web/modals/threads/members/member.react.js --- a/web/modals/threads/members/member.react.js +++ b/web/modals/threads/members/member.react.js @@ -11,14 +11,8 @@ } 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 { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { - type LegacyRelativeMemberInfo, - type ThreadInfo, -} from 'lib/types/thread-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js'; @@ -34,7 +28,7 @@ const commIconComponent = ; type Props = { - +memberInfo: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, + +memberInfo: RelativeMemberInfo, +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, +setOpenMenu: SetState, }; diff --git a/web/modals/threads/members/members-list.react.js b/web/modals/threads/members/members-list.react.js --- a/web/modals/threads/members/members-list.react.js +++ b/web/modals/threads/members/members-list.react.js @@ -7,13 +7,10 @@ import { useENSNames } from 'lib/hooks/ens-cache.js'; import { stringForUser } from 'lib/shared/user-utils.js'; -import type { - MinimallyEncodedRelativeMemberInfo, - MinimallyEncodedThreadInfo, -} from 'lib/types/minimally-encoded-thread-permissions-types.js'; +import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { type ThreadInfo, - type LegacyRelativeMemberInfo, + type RelativeMemberInfo, } from 'lib/types/thread-types.js'; import ThreadMember from './member.react.js'; @@ -21,9 +18,7 @@ type Props = { +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +threadMembers: $ReadOnlyArray< - LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - >, + +threadMembers: $ReadOnlyArray, }; function ThreadMembersList(props: Props): React.Node { @@ -48,20 +43,14 @@ .map(([letter, users]) => { const userList = users .sort((a, b) => stringForUser(a).localeCompare(stringForUser(b))) - .map( - ( - user: - | LegacyRelativeMemberInfo - | MinimallyEncodedRelativeMemberInfo, - ) => ( - - ), - ); + .map((user: RelativeMemberInfo) => ( + + )); const letterHeader = (
{letter.toUpperCase()} diff --git a/web/modals/threads/members/members-modal.react.js b/web/modals/threads/members/members-modal.react.js --- a/web/modals/threads/members/members-modal.react.js +++ b/web/modals/threads/members/members-modal.react.js @@ -9,9 +9,8 @@ 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 LegacyRelativeMemberInfo } from 'lib/types/thread-types.js'; +import { type RelativeMemberInfo } from 'lib/types/thread-types.js'; import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js'; import { AddMembersModal } from './add-members-modal.react.js'; @@ -43,9 +42,8 @@ const allMembers = React.useMemo( () => threadMembersNotFiltered.filter( - ( - member: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - ) => searchText.length === 0 || userIDs.includes(member.id), + (member: RelativeMemberInfo) => + searchText.length === 0 || userIDs.includes(member.id), ), [searchText.length, threadMembersNotFiltered, userIDs], ); @@ -53,10 +51,8 @@ const roles = useRolesFromCommunityThreadInfo(threadInfo, allMembers); const adminMembers = React.useMemo( () => - allMembers.filter( - ( - member: LegacyRelativeMemberInfo | MinimallyEncodedRelativeMemberInfo, - ) => roleIsAdminRole(roles.get(member.id)), + allMembers.filter((member: RelativeMemberInfo) => + roleIsAdminRole(roles.get(member.id)), ), [allMembers, roles], );