diff --git a/keyserver/src/push/send.js b/keyserver/src/push/send.js --- a/keyserver/src/push/send.js +++ b/keyserver/src/push/send.js @@ -39,7 +39,10 @@ ResolvedNotifTexts, } from 'lib/types/notif-types.js'; import { resolvedNotifTextsValidator } from 'lib/types/notif-types.js'; -import type { ServerThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + ServerThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import { updateTypes } from 'lib/types/update-types-enum.js'; import { type GlobalUserInfo } from 'lib/types/user-types.js'; import { isDev } from 'lib/utils/dev-utils.js'; @@ -193,7 +196,7 @@ userID: string, pushUserInfo: PushUserInfo, unreadCount: number, - threadInfos: { +[threadID: string]: ThreadInfo }, + threadInfos: { +[threadID: string]: LegacyThreadInfo }, userInfos: { +[userID: string]: GlobalUserInfo }, dbIDs: string[], // mutable rowsToSave: Map, // mutable diff --git a/lib/components/chat-mention-provider.react.js b/lib/components/chat-mention-provider.react.js --- a/lib/components/chat-mention-provider.react.js +++ b/lib/components/chat-mention-provider.react.js @@ -14,7 +14,7 @@ ChatMentionCandidates, ChatMentionCandidatesObj, ResolvedThreadInfo, - ThreadInfo, + LegacyThreadInfo, } from '../types/thread-types.js'; import { useResolvedThreadInfosObj } from '../utils/entity-helpers.js'; import { useSelector } from '../utils/redux-utils.js'; @@ -24,7 +24,7 @@ }; export type ChatMentionContextType = { +getChatMentionSearchIndex: ( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => SentencePrefixSearchIndex, +communityThreadIDForGenesisThreads: { +[id: string]: string }, +chatMentionCandidatesObj: ChatMentionCandidatesObj, @@ -46,7 +46,7 @@ const searchIndices = useChatMentionSearchIndex(chatMentionCandidatesObj); const getChatMentionSearchIndex = React.useCallback( - (threadInfo: ThreadInfo | MinimallyEncodedThreadInfo) => { + (threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo) => { if (threadInfo.community === genesis.id) { return searchIndices[communityThreadIDForGenesisThreads[threadInfo.id]]; } diff --git a/lib/hooks/chat-mention-hooks.js b/lib/hooks/chat-mention-hooks.js --- a/lib/hooks/chat-mention-hooks.js +++ b/lib/hooks/chat-mention-hooks.js @@ -11,7 +11,7 @@ import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import type { ChatMentionCandidates, - ThreadInfo, + LegacyThreadInfo, } from '../types/thread-types.js'; function useChatMentionContext(): ChatMentionContextType { @@ -22,7 +22,7 @@ } function useThreadChatMentionCandidates( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ChatMentionCandidates { const { communityThreadIDForGenesisThreads, chatMentionCandidatesObj } = useChatMentionContext(); diff --git a/lib/hooks/child-threads.js b/lib/hooks/child-threads.js --- a/lib/hooks/child-threads.js +++ b/lib/hooks/child-threads.js @@ -15,12 +15,14 @@ import { threadInChatList } from '../shared/thread-utils.js'; import threadWatcher from '../shared/thread-watcher.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo, RawThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo, RawThreadInfo } from '../types/thread-types.js'; import { useDispatchActionPromise } from '../utils/action-utils.js'; import { useSelector } from '../utils/redux-utils.js'; type ThreadFilter = { - +predicate?: (thread: ThreadInfo | MinimallyEncodedThreadInfo) => boolean, + +predicate?: ( + thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, + ) => boolean, +searchText?: string, }; @@ -41,7 +43,9 @@ }, [childThreads, predicate]); const filterSubchannels = React.useCallback( - (thread: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo)) => { + ( + thread: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + ) => { const candidateThreadID = thread?.id; if (!candidateThreadID) { return false; diff --git a/lib/hooks/promote-sidebar.react.js b/lib/hooks/promote-sidebar.react.js --- a/lib/hooks/promote-sidebar.react.js +++ b/lib/hooks/promote-sidebar.react.js @@ -16,13 +16,13 @@ import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from '../types/thread-permission-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import { useDispatchActionPromise } from '../utils/action-utils.js'; import { useSelector } from '../utils/redux-utils.js'; function canPromoteSidebar( - sidebarThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + sidebarThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): boolean { if (!threadIsSidebar(sidebarThreadInfo)) { return false; @@ -46,7 +46,7 @@ }; function usePromoteSidebar( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, onError?: () => mixed, ): PromoteSidebarType { const dispatchActionPromise = useDispatchActionPromise(); @@ -57,7 +57,7 @@ const loadingStatus = useSelector(loadingStatusSelector); const { parentThreadID } = threadInfo; - const parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo = + const parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo = useSelector(state => parentThreadID ? threadInfoSelector(state)[parentThreadID] : null, ); diff --git a/lib/hooks/relationship-prompt.js b/lib/hooks/relationship-prompt.js --- a/lib/hooks/relationship-prompt.js +++ b/lib/hooks/relationship-prompt.js @@ -13,7 +13,7 @@ type RelationshipAction, relationshipActions, } from '../types/relationship-types.js'; -import type { ThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo } from '../types/thread-types.js'; import type { UserInfo } from '../types/user-types.js'; import { useDispatchActionPromise, @@ -34,7 +34,7 @@ }; function useRelationshipPrompt( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, onErrorCallback?: () => void, pendingPersonalThreadUserInfo?: ?UserInfo, ): RelationshipPromptData { diff --git a/lib/hooks/search-threads.js b/lib/hooks/search-threads.js --- a/lib/hooks/search-threads.js +++ b/lib/hooks/search-threads.js @@ -13,7 +13,7 @@ import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import type { SidebarInfo, - ThreadInfo, + LegacyThreadInfo, RawThreadInfo, } from '../types/thread-types.js'; import { useSelector } from '../utils/redux-utils.js'; @@ -32,7 +32,7 @@ }; function useSearchThreads( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, childThreadInfos: $ReadOnlyArray, ): SearchThreadsResult { const [searchState, setSearchState] = React.useState({ @@ -92,7 +92,7 @@ } function useSearchSidebars( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): SearchThreadsResult { const childThreadInfos = useSelector( state => sidebarInfoSelector(state)[threadInfo.id] ?? [], @@ -101,11 +101,12 @@ } function useSearchSubchannels( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): SearchThreadsResult { const filterFunc = React.useCallback( - (thread: ?(ThreadInfo | MinimallyEncodedThreadInfo | RawThreadInfo)) => - threadIsChannel(thread) && thread?.parentThreadID === threadInfo.id, + ( + thread: ?(LegacyThreadInfo | MinimallyEncodedThreadInfo | RawThreadInfo), + ) => threadIsChannel(thread) && thread?.parentThreadID === threadInfo.id, [threadInfo.id], ); const childThreadInfos = useFilteredChatListData(filterFunc); diff --git a/lib/hooks/toggle-unread-status.js b/lib/hooks/toggle-unread-status.js --- a/lib/hooks/toggle-unread-status.js +++ b/lib/hooks/toggle-unread-status.js @@ -11,11 +11,11 @@ SetThreadUnreadStatusRequest, } from '../types/activity-types.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo } from '../types/thread-types.js'; import { useDispatchActionPromise } from '../utils/action-utils.js'; function useToggleUnreadStatus( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, mostRecentNonLocalMessage: ?string, afterAction: () => void, ): () => void { diff --git a/lib/permissions/minimally-encoded-thread-permissions-validators.js b/lib/permissions/minimally-encoded-thread-permissions-validators.js --- a/lib/permissions/minimally-encoded-thread-permissions-validators.js +++ b/lib/permissions/minimally-encoded-thread-permissions-validators.js @@ -19,7 +19,7 @@ legacyRawThreadInfoValidator, legacyRoleInfoValidator, threadCurrentUserInfoValidator, - threadInfoValidator, + legacyThreadInfoValidator, } from '../types/thread-types.js'; import { tBool, tID, tShape } from '../utils/validation-utils.js'; @@ -53,7 +53,7 @@ const minimallyEncodedThreadInfoValidator: TInterface = tShape({ - ...threadInfoValidator.meta.props, + ...legacyThreadInfoValidator.meta.props, minimallyEncoded: tBool(true), members: t.list(minimallyEncodedRelativeMemberInfoValidator), roles: t.dict(tID, minimallyEncodedRoleInfoValidator), diff --git a/lib/selectors/chat-selectors.js b/lib/selectors/chat-selectors.js --- a/lib/selectors/chat-selectors.js +++ b/lib/selectors/chat-selectors.js @@ -39,7 +39,7 @@ import type { BaseAppState } from '../types/redux-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type RawThreadInfo, type SidebarInfo, maxReadSidebars, @@ -68,7 +68,7 @@ export type ChatThreadItem = { +type: 'chatThreadItem', - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +mostRecentMessageInfo: ?MessageInfo, +mostRecentNonLocalMessage: ?string, +lastUpdatedTime: number, @@ -96,7 +96,7 @@ } function getMostRecentMessageInfo( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, messageStore: MessageStore, messages: { +[id: string]: ?MessageInfo }, ): ?MessageInfo { @@ -115,7 +115,7 @@ } function getLastUpdatedTime( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, mostRecentMessageInfo: ?MessageInfo, ): number { return mostRecentMessageInfo @@ -124,7 +124,7 @@ } function createChatThreadItem( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, messageStore: MessageStore, messages: { +[id: string]: ?MessageInfo }, sidebarInfos: ?$ReadOnlyArray, @@ -209,7 +209,7 @@ messageInfoSelector, sidebarInfoSelector, ( - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, messageStore: MessageStore, messageInfos: { +[id: string]: ?MessageInfo }, sidebarInfos: { +[id: string]: $ReadOnlyArray }, @@ -229,7 +229,11 @@ function useFilteredChatListData( filterFunction: ( - threadInfo: ?(ThreadInfo | MinimallyEncodedThreadInfo | RawThreadInfo), + threadInfo: ?( + | LegacyThreadInfo + | MinimallyEncodedThreadInfo + | RawThreadInfo + ), ) => boolean, ): $ReadOnlyArray { const threadInfos = useSelector(threadInfoSelector); @@ -251,17 +255,21 @@ } function getChatThreadItems( - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, messageStore: MessageStore, messageInfos: { +[id: string]: ?MessageInfo }, sidebarInfos: { +[id: string]: $ReadOnlyArray }, filterFunction: ( - threadInfo: ?(ThreadInfo | MinimallyEncodedThreadInfo | RawThreadInfo), + threadInfo: ?( + | LegacyThreadInfo + | MinimallyEncodedThreadInfo + | RawThreadInfo + ), ) => boolean, ): $ReadOnlyArray { return _flow( _filter(filterFunction), - _map((threadInfo: ThreadInfo): ChatThreadItem => + _map((threadInfo: LegacyThreadInfo): ChatThreadItem => createChatThreadItem( threadInfo, messageStore, @@ -281,7 +289,7 @@ +startsCluster: boolean, endsCluster: boolean, +robotext: EntityText, - +threadCreatedFromMessage: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadCreatedFromMessage: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, }; export type ChatMessageInfoItem = @@ -294,7 +302,9 @@ +startsConversation: boolean, +startsCluster: boolean, endsCluster: boolean, - +threadCreatedFromMessage: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadCreatedFromMessage: + | ?LegacyThreadInfo + | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, +hasBeenEdited: boolean, +isPinned: boolean, @@ -313,8 +323,8 @@ threadID: string, messageStore: MessageStore, messageInfos: { +[id: string]: ?MessageInfo }, - threadInfos: { +[id: string]: ThreadInfo }, - threadInfoFromSourceMessageID: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, + threadInfoFromSourceMessageID: { +[id: string]: LegacyThreadInfo }, additionalMessages: $ReadOnlyArray, viewerID: string, ): ChatMessageItem[] { @@ -585,8 +595,8 @@ ( messageStore: MessageStore, messageInfos: { +[id: string]: ?MessageInfo }, - threadInfos: { +[id: string]: ThreadInfo }, - threadInfoFromSourceMessageID: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, + threadInfoFromSourceMessageID: { +[id: string]: LegacyThreadInfo }, viewerID: ?string, ): ?(ChatMessageItem[]) => { if (!threadID || !viewerID) { @@ -612,7 +622,7 @@ export type UseMessageListDataArgs = { +searching: boolean, +userInfoInputArray: $ReadOnlyArray, - +threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; function useMessageListData({ diff --git a/lib/selectors/nav-selectors.js b/lib/selectors/nav-selectors.js --- a/lib/selectors/nav-selectors.js +++ b/lib/selectors/nav-selectors.js @@ -15,7 +15,7 @@ import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import type { BaseNavInfo } from '../types/nav-types.js'; import type { BaseAppState } from '../types/redux-types.js'; -import type { RawThreadInfo, ThreadInfo } from '../types/thread-types.js'; +import type { RawThreadInfo, LegacyThreadInfo } from '../types/thread-types.js'; import type { UserInfo } from '../types/user-types.js'; import { getConfig } from '../utils/config.js'; import { values } from '../utils/objects.js'; @@ -81,7 +81,7 @@ function useThreadSearchIndex( threadInfos: $ReadOnlyArray< - RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, >, ): SearchIndex { const userInfos = useSelector(state => state.userStore.userInfos); 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 @@ -48,7 +48,7 @@ type ThreadType, } from '../types/thread-types-enum.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type LegacyRawThreadInfo, type SidebarInfo, type LegacyRawThreadInfos, @@ -60,7 +60,7 @@ const _mapValuesWithKeys = _mapValues.convert({ cap: false }); type ThreadInfoSelectorType = (state: BaseAppState<>) => { - +[id: string]: ThreadInfo, + +[id: string]: LegacyThreadInfo, }; const threadInfoSelector: ThreadInfoSelectorType = createObjectSelector( (state: BaseAppState<>) => state.threadStore.threadInfos, @@ -71,9 +71,9 @@ const communityThreadSelector: ( state: BaseAppState<>, -) => $ReadOnlyArray = createSelector( +) => $ReadOnlyArray = createSelector( threadInfoSelector, - (threadInfos: { +[id: string]: ThreadInfo }) => { + (threadInfos: { +[id: string]: LegacyThreadInfo }) => { const result = []; for (const threadID in threadInfos) { const threadInfo = threadInfos[threadID]; @@ -88,9 +88,9 @@ const canBeOnScreenThreadInfos: ( state: BaseAppState<>, -) => $ReadOnlyArray = createSelector( +) => $ReadOnlyArray = createSelector( threadInfoSelector, - (threadInfos: { +[id: string]: ThreadInfo }) => { + (threadInfos: { +[id: string]: LegacyThreadInfo }) => { const result = []; for (const threadID in threadInfos) { const threadInfo = threadInfos[threadID]; @@ -105,13 +105,13 @@ const onScreenThreadInfos: ( state: BaseAppState<>, -) => $ReadOnlyArray = createSelector( +) => $ReadOnlyArray = createSelector( filteredThreadIDsSelector, canBeOnScreenThreadInfos, ( inputThreadIDs: ?$ReadOnlySet, - threadInfos: $ReadOnlyArray, - ): $ReadOnlyArray => { + threadInfos: $ReadOnlyArray, + ): $ReadOnlyArray => { const threadIDs = inputThreadIDs; if (!threadIDs) { return threadInfos; @@ -122,9 +122,11 @@ const onScreenEntryEditableThreadInfos: ( state: BaseAppState<>, -) => $ReadOnlyArray = createSelector( +) => $ReadOnlyArray = createSelector( onScreenThreadInfos, - (threadInfos: $ReadOnlyArray): $ReadOnlyArray => + ( + threadInfos: $ReadOnlyArray, + ): $ReadOnlyArray => threadInfos.filter(threadInfo => threadHasPermission(threadInfo, threadPermissions.EDIT_ENTRIES), ), @@ -155,7 +157,7 @@ daysToEntries: { +[day: string]: string[] }, startDateString: string, endDateString: string, - onScreen: $ReadOnlyArray, + onScreen: $ReadOnlyArray, includeDeleted: boolean, ) => { const allDaysWithinRange: { [string]: string[] } = {}, @@ -184,11 +186,11 @@ ); const childThreadInfos: (state: BaseAppState<>) => { - +[id: string]: $ReadOnlyArray, + +[id: string]: $ReadOnlyArray, } = createSelector( threadInfoSelector, - (threadInfos: { +[id: string]: ThreadInfo }) => { - const result: { [string]: ThreadInfo[] } = {}; + (threadInfos: { +[id: string]: LegacyThreadInfo }) => { + const result: { [string]: LegacyThreadInfo[] } = {}; for (const id in threadInfos) { const threadInfo = threadInfos[id]; const parentThreadID = threadInfo.parentThreadID; @@ -196,7 +198,7 @@ continue; } if (result[parentThreadID] === undefined) { - result[parentThreadID] = ([]: ThreadInfo[]); + result[parentThreadID] = ([]: LegacyThreadInfo[]); } result[parentThreadID].push(threadInfo); } @@ -205,11 +207,11 @@ ); const containedThreadInfos: (state: BaseAppState<>) => { - +[id: string]: $ReadOnlyArray, + +[id: string]: $ReadOnlyArray, } = createSelector( threadInfoSelector, - (threadInfos: { +[id: string]: ThreadInfo }) => { - const result: { [string]: ThreadInfo[] } = {}; + (threadInfos: { +[id: string]: LegacyThreadInfo }) => { + const result: { [string]: LegacyThreadInfo[] } = {}; for (const id in threadInfos) { const threadInfo = threadInfos[id]; const { containingThreadID } = threadInfo; @@ -217,7 +219,7 @@ continue; } if (result[containingThreadID] === undefined) { - result[containingThreadID] = ([]: ThreadInfo[]); + result[containingThreadID] = ([]: LegacyThreadInfo[]); } result[containingThreadID].push(threadInfo); } @@ -226,7 +228,7 @@ ); function getMostRecentRawMessageInfo( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, messageStore: MessageStore, ): ?RawMessageInfo { const thread = messageStore.threads[threadInfo.id]; @@ -244,7 +246,10 @@ } = createObjectSelector( childThreadInfos, (state: BaseAppState<>) => state.messageStore, - (childThreads: $ReadOnlyArray, messageStore: MessageStore) => { + ( + childThreads: $ReadOnlyArray, + messageStore: MessageStore, + ) => { const sidebarInfos = []; for (const childThreadInfo of childThreads) { if ( @@ -293,14 +298,16 @@ const baseAncestorThreadInfos: ( threadID: string, -) => (BaseAppState<>) => $ReadOnlyArray = (threadID: string) => +) => (BaseAppState<>) => $ReadOnlyArray = ( + threadID: string, +) => createSelector( (state: BaseAppState<>) => threadInfoSelector(state), (threadInfos: { - +[id: string]: ThreadInfo, - }): $ReadOnlyArray => { - const pathComponents: ThreadInfo[] = []; - let node: ?ThreadInfo = threadInfos[threadID]; + +[id: string]: LegacyThreadInfo, + }): $ReadOnlyArray => { + const pathComponents: LegacyThreadInfo[] = []; + let node: ?LegacyThreadInfo = threadInfos[threadID]; while (node) { pathComponents.push(node); node = node.parentThreadID ? threadInfos[node.parentThreadID] : null; @@ -312,7 +319,7 @@ const ancestorThreadInfos: ( threadID: string, -) => (state: BaseAppState<>) => $ReadOnlyArray = _memoize( +) => (state: BaseAppState<>) => $ReadOnlyArray = _memoize( baseAncestorThreadInfos, ); @@ -394,17 +401,17 @@ ); const threadInfoFromSourceMessageIDSelector: (state: BaseAppState<>) => { - +[id: string]: ThreadInfo, + +[id: string]: LegacyThreadInfo, } = createSelector( (state: BaseAppState<>) => state.threadStore.threadInfos, threadInfoSelector, ( rawThreadInfos: LegacyRawThreadInfos, - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, ) => { const pendingToRealizedThreadIDs = pendingToRealizedThreadIDsSelector(rawThreadInfos); - const result: { [string]: ThreadInfo } = {}; + const result: { [string]: LegacyThreadInfo } = {}; for (const realizedID of pendingToRealizedThreadIDs.values()) { const threadInfo = threadInfos[realizedID]; if (threadInfo && threadInfo.sourceMessageID) { @@ -460,7 +467,7 @@ (state: BaseAppState<>) => threadInfoSelector(state)[threadID], (state: BaseAppState<>) => containingThreadID ? threadInfoSelector(state)[containingThreadID] : null, - (threadInfo: ThreadInfo, containingThreadInfo: ?ThreadInfo) => { + (threadInfo: LegacyThreadInfo, containingThreadInfo: ?LegacyThreadInfo) => { return () => { let threadAvatar = getAvatarForThread(threadInfo, containingThreadInfo); if (threadAvatar.type !== 'emoji') { @@ -480,14 +487,14 @@ const baseThreadInfosSelectorForThreadType: ( threadType: ThreadType, -) => (BaseAppState<>) => $ReadOnlyArray = ( +) => (BaseAppState<>) => $ReadOnlyArray = ( threadType: ThreadType, ) => createSelector( (state: BaseAppState<>) => threadInfoSelector(state), (threadInfos: { - +[id: string]: ThreadInfo, - }): $ReadOnlyArray => { + +[id: string]: LegacyThreadInfo, + }): $ReadOnlyArray => { const result = []; for (const threadID in threadInfos) { @@ -503,7 +510,7 @@ const threadInfosSelectorForThreadType: ( threadType: ThreadType, -) => (state: BaseAppState<>) => $ReadOnlyArray = _memoize( +) => (state: BaseAppState<>) => $ReadOnlyArray = _memoize( baseThreadInfosSelectorForThreadType, ); diff --git a/lib/shared/ancestor-threads.js b/lib/shared/ancestor-threads.js --- a/lib/shared/ancestor-threads.js +++ b/lib/shared/ancestor-threads.js @@ -7,12 +7,12 @@ } from '../selectors/thread-selectors.js'; import { threadIsPending } from '../shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import { useSelector } from '../utils/redux-utils.js'; function useAncestorThreads( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, -): $ReadOnlyArray { + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +): $ReadOnlyArray { return useSelector(state => { if (!threadIsPending(threadInfo.id)) { const ancestorThreads = ancestorThreadInfos(threadInfo.id)(state); diff --git a/lib/shared/avatar-utils.js b/lib/shared/avatar-utils.js --- a/lib/shared/avatar-utils.js +++ b/lib/shared/avatar-utils.js @@ -18,7 +18,7 @@ } from '../types/avatar-types.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; -import type { ThreadInfo, RawThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo, RawThreadInfo } from '../types/thread-types.js'; import type { UserInfos } from '../types/user-types.js'; import { useSelector } from '../utils/redux-utils.js'; import { ashoatKeyserverID } from '../utils/validation-utils.js'; @@ -271,7 +271,7 @@ } function getUserAvatarForThread( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, viewerID: ?string, userInfos: UserInfos, ): ClientAvatar { @@ -297,8 +297,8 @@ } function getAvatarForThread( - thread: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, - containingThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + thread: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, + containingThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): ClientAvatar { if (thread.avatar) { return thread.avatar; @@ -314,7 +314,7 @@ } function useAvatarForThread( - thread: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + thread: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ClientAvatar { const containingThreadID = thread.containingThreadID; const containingThreadInfo = useSelector(state => diff --git a/lib/shared/edit-messages-utils.js b/lib/shared/edit-messages-utils.js --- a/lib/shared/edit-messages-utils.js +++ b/lib/shared/edit-messages-utils.js @@ -16,7 +16,7 @@ import { messageTypes } from '../types/message-types-enum.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from '../types/thread-permission-types.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import { useDispatchActionPromise } from '../utils/action-utils.js'; import { useSelector } from '../utils/redux-utils.js'; @@ -49,7 +49,7 @@ } function useCanEditMessage( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, targetMessageInfo: ComposableMessageInfo | RobotextMessageInfo, ): boolean { const currentUserInfo = useSelector(state => state.currentUserInfo); diff --git a/lib/shared/inline-engagement-utils.js b/lib/shared/inline-engagement-utils.js --- a/lib/shared/inline-engagement-utils.js +++ b/lib/shared/inline-engagement-utils.js @@ -2,10 +2,10 @@ import type { ReactionInfo } from '../selectors/chat-selectors.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo } from '../types/thread-types.js'; function getInlineEngagementSidebarText( - threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): string { if (!threadInfo) { return ''; 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 @@ -10,7 +10,7 @@ } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from '../types/thread-types-enum.js'; import type { - ThreadInfo, + LegacyThreadInfo, ResolvedThreadInfo, ChatMentionCandidates, RelativeMemberInfo, @@ -164,8 +164,8 @@ } function getUserMentionsCandidates( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): $ReadOnlyArray { if (threadInfo.type !== threadTypes.SIDEBAR) { return threadInfo.members; diff --git a/lib/shared/message-utils.js b/lib/shared/message-utils.js --- a/lib/shared/message-utils.js +++ b/lib/shared/message-utils.js @@ -42,7 +42,7 @@ ReactionMessageInfo, } from '../types/messages/reaction.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; -import type { RawThreadInfo, ThreadInfo } from '../types/thread-types.js'; +import type { RawThreadInfo, LegacyThreadInfo } from '../types/thread-types.js'; import type { UserInfos } from '../types/user-types.js'; import { extractKeyserverIDFromID } from '../utils/action-utils.js'; import { @@ -76,8 +76,8 @@ function robotextForMessageInfo( messageInfo: RobotextMessageInfo, - threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): EntityText { const messageSpec = messageSpecs[messageInfo.type]; invariant( @@ -91,7 +91,7 @@ rawMessageInfo: RawMessageInfo, viewerID: ?string, userInfos: UserInfos, - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, ): ?MessageInfo { const creatorInfo = userInfos[rawMessageInfo.creatorID]; const creator = { @@ -411,8 +411,8 @@ | RobotextMessageInfo | ReactionMessageInfo | EditMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, markdownRules: ParserRules, ): EntityText { const { messageTitle } = messageSpecs[messageInfo.type]; @@ -498,7 +498,7 @@ }; function useMessagePreview( originalMessageInfo: ?MessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, markdownRules: ParserRules, ): ?MessagePreviewResult { let messageInfo; @@ -680,7 +680,7 @@ function isInvalidPinSourceForThread( messageInfo: RawMessageInfo | MessageInfo, - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): boolean { const isValidPinSource = !isInvalidPinSource(messageInfo); const isFirstMessageInSidebar = threadInfo.sourceMessageID === messageInfo.id; diff --git a/lib/shared/messages/add-members-message-spec.js b/lib/shared/messages/add-members-message-spec.js --- a/lib/shared/messages/add-members-message-spec.js +++ b/lib/shared/messages/add-members-message-spec.js @@ -20,7 +20,7 @@ rawAddMembersMessageInfoValidator, } from '../../types/messages/add-members.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -124,7 +124,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { const addedMembersObject: { [string]: RelativeUserInfo } = {}; diff --git a/lib/shared/messages/change-role-message-spec.js b/lib/shared/messages/change-role-message-spec.js --- a/lib/shared/messages/change-role-message-spec.js +++ b/lib/shared/messages/change-role-message-spec.js @@ -24,7 +24,7 @@ } from '../../types/messages/change-role.js'; import type { RawUnsupportedMessageInfo } from '../../types/messages/unsupported'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -158,7 +158,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { const membersObject: { [string]: RelativeUserInfo } = {}; diff --git a/lib/shared/messages/change-settings-message-spec.js b/lib/shared/messages/change-settings-message-spec.js --- a/lib/shared/messages/change-settings-message-spec.js +++ b/lib/shared/messages/change-settings-message-spec.js @@ -22,7 +22,7 @@ } from '../../types/messages/change-settings.js'; import type { NotifTexts } from '../../types/notif-types.js'; import { assertThreadType } from '../../types/thread-types-enum.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; import { validHexColorRegex } from '../account-utils.js'; @@ -158,7 +158,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { const mostRecentMessageInfo = messageInfos[0]; diff --git a/lib/shared/messages/create-entry-message-spec.js b/lib/shared/messages/create-entry-message-spec.js --- a/lib/shared/messages/create-entry-message-spec.js +++ b/lib/shared/messages/create-entry-message-spec.js @@ -16,7 +16,7 @@ rawCreateEntryMessageInfoValidator, } from '../../types/messages/create-entry.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { prettyDate } from '../../utils/date-utils.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; @@ -119,7 +119,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { return notifTextsForEntryCreationOrEdit(messageInfos, threadInfo); }, diff --git a/lib/shared/messages/create-sidebar-message-spec.js b/lib/shared/messages/create-sidebar-message-spec.js --- a/lib/shared/messages/create-sidebar-message-spec.js +++ b/lib/shared/messages/create-sidebar-message-spec.js @@ -22,7 +22,7 @@ rawCreateSidebarMessageInfoValidator, } from '../../types/messages/create-sidebar.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -173,7 +173,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { const createSidebarMessageInfo = messageInfos[0]; diff --git a/lib/shared/messages/create-sub-thread-message-spec.js b/lib/shared/messages/create-sub-thread-message-spec.js --- a/lib/shared/messages/create-sub-thread-message-spec.js +++ b/lib/shared/messages/create-sub-thread-message-spec.js @@ -24,7 +24,7 @@ import type { NotifTexts } from '../../types/notif-types.js'; import { threadPermissions } from '../../types/thread-permission-types.js'; import { threadTypes } from '../../types/thread-types-enum.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; import { notifTextsForSubthreadCreation } from '../notif-utils.js'; @@ -140,7 +140,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); invariant( diff --git a/lib/shared/messages/create-thread-message-spec.js b/lib/shared/messages/create-thread-message-spec.js --- a/lib/shared/messages/create-thread-message-spec.js +++ b/lib/shared/messages/create-thread-message-spec.js @@ -21,7 +21,7 @@ rawCreateThreadMessageInfoValidator, } from '../../types/messages/create-thread.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -157,7 +157,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); invariant( diff --git a/lib/shared/messages/delete-entry-message-spec.js b/lib/shared/messages/delete-entry-message-spec.js --- a/lib/shared/messages/delete-entry-message-spec.js +++ b/lib/shared/messages/delete-entry-message-spec.js @@ -16,7 +16,7 @@ rawDeleteEntryMessageInfoValidator, } from '../../types/messages/delete-entry.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { prettyDate } from '../../utils/date-utils.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; @@ -118,7 +118,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); invariant( diff --git a/lib/shared/messages/edit-entry-message-spec.js b/lib/shared/messages/edit-entry-message-spec.js --- a/lib/shared/messages/edit-entry-message-spec.js +++ b/lib/shared/messages/edit-entry-message-spec.js @@ -16,7 +16,7 @@ rawEditEntryMessageInfoValidator, } from '../../types/messages/edit-entry.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { prettyDate } from '../../utils/date-utils.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; @@ -119,7 +119,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { return notifTextsForEntryCreationOrEdit(messageInfos, threadInfo); }, diff --git a/lib/shared/messages/join-thread-message-spec.js b/lib/shared/messages/join-thread-message-spec.js --- a/lib/shared/messages/join-thread-message-spec.js +++ b/lib/shared/messages/join-thread-message-spec.js @@ -16,7 +16,7 @@ rawJoinThreadMessageInfoValidator, } from '../../types/messages/join-thread.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -89,7 +89,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const joinerArray: { [string]: RelativeUserInfo } = {}; for (const messageInfo of messageInfos) { diff --git a/lib/shared/messages/leave-thread-message-spec.js b/lib/shared/messages/leave-thread-message-spec.js --- a/lib/shared/messages/leave-thread-message-spec.js +++ b/lib/shared/messages/leave-thread-message-spec.js @@ -16,7 +16,7 @@ rawLeaveThreadMessageInfoValidator, } from '../../types/messages/leave-thread.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -89,7 +89,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const leaverBeavers: { [string]: RelativeUserInfo } = {}; for (const messageInfo of messageInfos) { diff --git a/lib/shared/messages/message-spec.js b/lib/shared/messages/message-spec.js --- a/lib/shared/messages/message-spec.js +++ b/lib/shared/messages/message-spec.js @@ -14,14 +14,14 @@ import type { RawUnsupportedMessageInfo } from '../../types/messages/unsupported.js'; import type { MinimallyEncodedThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo, UserInfo } from '../../types/user-types.js'; import type { EntityText } from '../../utils/entity-text.js'; import { type ParserRules } from '../markdown.js'; export type MessageTitleParam = { +messageInfo: Info, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +markdownRules: ParserRules, }; @@ -35,7 +35,7 @@ }; export type CreateMessageInfoParams = { - +threadInfos: { +[id: string]: ThreadInfo }, + +threadInfos: { +[id: string]: LegacyThreadInfo }, +createMessageInfoFromRaw: (rawInfo: RawMessageInfo) => ?MessageInfo, +createRelativeUserInfos: ( userIDs: $ReadOnlyArray, @@ -43,13 +43,13 @@ }; export type RobotextParams = { - +threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, - +parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; export type NotificationTextsParams = { +notifTargetUserInfo: UserInfo, - +parentThreadInfo: ?ThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo, }; export type GeneratesNotifsParams = { @@ -66,8 +66,8 @@ export type CreationSideEffectsFunc = ( messageInfo: RawInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => Promise; export type MessageSpec = { @@ -98,7 +98,7 @@ ) => ?RawMessageInfo, +notificationTexts?: ( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ) => Promise, +notificationCollapseKey?: ( diff --git a/lib/shared/messages/multimedia-message-spec.js b/lib/shared/messages/multimedia-message-spec.js --- a/lib/shared/messages/multimedia-message-spec.js +++ b/lib/shared/messages/multimedia-message-spec.js @@ -42,7 +42,7 @@ import { getMediaMessageServerDBContentsFromMedia } from '../../types/messages/media.js'; import type { RawUnsupportedMessageInfo } from '../../types/messages/unsupported.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET } from '../../utils/entity-text.js'; import { @@ -311,7 +311,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const media = []; for (const messageInfo of messageInfos) { diff --git a/lib/shared/messages/reaction-message-spec.js b/lib/shared/messages/reaction-message-spec.js --- a/lib/shared/messages/reaction-message-spec.js +++ b/lib/shared/messages/reaction-message-spec.js @@ -26,7 +26,7 @@ } from '../../types/messages/reaction.js'; import type { RawUnsupportedMessageInfo } from '../../types/messages/unsupported.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET } from '../../utils/entity-text.js'; import { threadIsGroupChat } from '../thread-utils.js'; @@ -163,7 +163,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); invariant( diff --git a/lib/shared/messages/remove-members-message-spec.js b/lib/shared/messages/remove-members-message-spec.js --- a/lib/shared/messages/remove-members-message-spec.js +++ b/lib/shared/messages/remove-members-message-spec.js @@ -20,7 +20,7 @@ rawRemoveMembersMessageInfoValidator, } from '../../types/messages/remove-members.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, @@ -125,7 +125,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { const removedMembersObject: { [string]: RelativeUserInfo } = {}; diff --git a/lib/shared/messages/restore-entry-message-spec.js b/lib/shared/messages/restore-entry-message-spec.js --- a/lib/shared/messages/restore-entry-message-spec.js +++ b/lib/shared/messages/restore-entry-message-spec.js @@ -16,7 +16,7 @@ rawRestoreEntryMessageInfoValidator, } from '../../types/messages/restore-entry.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { prettyDate } from '../../utils/date-utils.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; @@ -118,7 +118,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); invariant( diff --git a/lib/shared/messages/text-message-spec.js b/lib/shared/messages/text-message-spec.js --- a/lib/shared/messages/text-message-spec.js +++ b/lib/shared/messages/text-message-spec.js @@ -28,7 +28,7 @@ import type { MinimallyEncodedThreadInfo } from '../../types/minimally-encoded-thread-permissions-types.js'; import type { NotifTexts } from '../../types/notif-types.js'; import { threadTypes } from '../../types/thread-types-enum.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { useDispatchActionPromise } from '../../utils/action-utils.js'; import { ET } from '../../utils/entity-text.js'; @@ -199,7 +199,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, params: NotificationTextsParams, ): Promise { // We special-case sidebarCreations. Usually we don't send any notifs in @@ -295,8 +295,8 @@ const callChangeThreadSettings = useChangeThreadSettings(); return async ( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => { if (threadInfo.type !== threadTypes.SIDEBAR) { return; diff --git a/lib/shared/messages/update-relationship-message-spec.js b/lib/shared/messages/update-relationship-message-spec.js --- a/lib/shared/messages/update-relationship-message-spec.js +++ b/lib/shared/messages/update-relationship-message-spec.js @@ -20,7 +20,7 @@ rawUpdateRelationshipMessageInfoValidator, } from '../../types/messages/update-relationship.js'; import type { NotifTexts } from '../../types/notif-types.js'; -import type { ThreadInfo } from '../../types/thread-types.js'; +import type { LegacyThreadInfo } from '../../types/thread-types.js'; import type { RelativeUserInfo } from '../../types/user-types.js'; import { ET, type EntityText } from '../../utils/entity-text.js'; @@ -148,7 +148,7 @@ async notificationTexts( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): Promise { const messageInfo = assertSingleMessageInfo(messageInfos); const creator = ET.user({ userInfo: messageInfo.creator }); diff --git a/lib/shared/notif-utils.js b/lib/shared/notif-utils.js --- a/lib/shared/notif-utils.js +++ b/lib/shared/notif-utils.js @@ -20,7 +20,7 @@ import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import type { NotifTexts, ResolvedNotifTexts } from '../types/notif-types.js'; import { type ThreadType, threadTypes } from '../types/thread-types-enum.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import type { RelativeUserInfo, UserInfo } from '../types/user-types.js'; import { prettyDate } from '../utils/date-utils.js'; import type { GetENSNames } from '../utils/ens-helpers.js'; @@ -35,8 +35,8 @@ async function notifTextsForMessageInfo( messageInfos: MessageInfo[], - threadInfo: ThreadInfo, - parentThreadInfo: ?ThreadInfo, + threadInfo: LegacyThreadInfo, + parentThreadInfo: ?LegacyThreadInfo, notifTargetUserInfo: UserInfo, getENSNames: ?GetENSNames, ): Promise { @@ -62,7 +62,7 @@ function notifTextsForEntryCreationOrEdit( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): NotifTexts { const hasCreateEntry = messageInfos.some( messageInfo => messageInfo.type === messageTypes.CREATE_ENTRY, @@ -109,7 +109,7 @@ type NotifTextsForSubthreadCreationInput = { +creator: RelativeUserInfo, +threadType: ThreadType, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +childThreadName: ?string, +childThreadUIName: string | ThreadEntity, }; @@ -151,7 +151,7 @@ +createSidebarMessageInfo: CreateSidebarMessageInfo, +sidebarSourceMessageInfo?: ?SidebarSourceMessageInfo, +firstSidebarMessageInfo?: ?TextMessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +params: NotificationTextsParams, }; function notifTextsForSidebarCreation( @@ -215,8 +215,8 @@ async function fullNotifTextsForMessageInfo( messageInfos: $ReadOnlyArray, - threadInfo: ThreadInfo, - parentThreadInfo: ?ThreadInfo, + threadInfo: LegacyThreadInfo, + parentThreadInfo: ?LegacyThreadInfo, notifTargetUserInfo: UserInfo, getENSNames: ?GetENSNames, ): Promise { @@ -266,8 +266,8 @@ function notifRobotextForMessageInfo( messageInfo: RobotextMessageInfo, - threadInfo: ThreadInfo, - parentThreadInfo: ?ThreadInfo, + threadInfo: LegacyThreadInfo, + parentThreadInfo: ?LegacyThreadInfo, ): EntityText { const robotext = robotextForMessageInfo( messageInfo, diff --git a/lib/shared/reaction-utils.js b/lib/shared/reaction-utils.js --- a/lib/shared/reaction-utils.js +++ b/lib/shared/reaction-utils.js @@ -14,7 +14,7 @@ } from '../types/message-types.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from '../types/thread-permission-types.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import { useSelector } from '../utils/redux-utils.js'; function useViewerAlreadySelectedMessageReactions( @@ -75,7 +75,7 @@ } function useCanCreateReactionFromMessage( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, targetMessageInfo: ComposableMessageInfo | RobotextMessageInfo, ): boolean { const targetMessageCreatorRelationship = useSelector( diff --git a/lib/shared/search-utils.js b/lib/shared/search-utils.js --- a/lib/shared/search-utils.js +++ b/lib/shared/search-utils.js @@ -28,7 +28,7 @@ import { userRelationshipStatus } from '../types/relationship-types.js'; import { threadPermissions } from '../types/thread-permission-types.js'; import { type ThreadType, threadTypes } from '../types/thread-types-enum.js'; -import { type ThreadInfo } from '../types/thread-types.js'; +import { type LegacyThreadInfo } from '../types/thread-types.js'; import type { AccountUserInfo, UserListItem, @@ -59,8 +59,8 @@ +searchIndex: SearchIndex, +excludeUserIDs: $ReadOnlyArray, +includeServerSearchUsers?: $ReadOnlyArray, - +inputParentThreadInfo?: ?ThreadInfo | ?MinimallyEncodedThreadInfo, - +inputCommunityThreadInfo?: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +inputParentThreadInfo?: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, + +inputCommunityThreadInfo?: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +threadType?: ?ThreadType, }): UserListItem[] { const communityThreadInfo = 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 @@ -82,7 +82,7 @@ } from '../types/thread-types-enum.js'; import { type LegacyRawThreadInfo, - type ThreadInfo, + type LegacyThreadInfo, type MemberInfo, type ServerThreadInfo, type ThreadCurrentUserInfo, @@ -123,7 +123,7 @@ import { pendingThreadIDRegex } from '../utils/validation-utils.js'; function threadHasPermission( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), permission: ThreadPermission, ): boolean { if (!threadInfo) { @@ -141,7 +141,7 @@ } function viewerIsMember( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return !!( threadInfo && @@ -151,14 +151,14 @@ } function threadIsInHome( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return !!(threadInfo && threadInfo.currentUser.subscription.home); } // Can have messages function threadInChatList( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return ( viewerIsMember(threadInfo) && @@ -167,31 +167,31 @@ } function threadIsTopLevel( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return threadInChatList(threadInfo) && threadIsChannel(threadInfo); } function threadIsChannel( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return !!(threadInfo && threadInfo.type !== threadTypes.SIDEBAR); } function threadIsSidebar( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return threadInfo?.type === threadTypes.SIDEBAR; } function threadInBackgroundChatList( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return threadInChatList(threadInfo) && !threadIsInHome(threadInfo); } function threadInHomeChatList( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return threadInChatList(threadInfo) && threadIsInHome(threadInfo); } @@ -199,7 +199,7 @@ // Can have Calendar entries, // does appear as a top-level entity in the thread list function threadInFilterList( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), ): boolean { return ( threadInChatList(threadInfo) && @@ -209,7 +209,7 @@ } function userIsMember( - threadInfo: ?(ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), + threadInfo: ?(LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo), userID: string, ): boolean { if (!threadInfo) { @@ -239,7 +239,7 @@ } function threadMembersWithoutAddedAshoat< - T: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + T: LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, >(threadInfo: T): $PropertyType { if (threadInfo.community !== genesis.id) { return threadInfo.members; @@ -250,13 +250,13 @@ } function threadIsGroupChat( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): boolean { return threadInfo.members.length > 2; } function threadOrParentThreadIsGroupChat( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ) { return threadMembersWithoutAddedAshoat(threadInfo).length > 2; } @@ -270,7 +270,7 @@ } function getSingleOtherUser( - threadInfo: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, viewerID: ?string, ): ?string { if (!viewerID) { @@ -332,7 +332,7 @@ +viewerID: string, +threadType: ThreadType, +members: $ReadOnlyArray, - +parentThreadInfo?: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +parentThreadInfo?: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +threadColor?: ?string, +name?: ?string, +sourceMessageID?: string, @@ -346,7 +346,7 @@ threadColor, name, sourceMessageID, -}: CreatePendingThreadArgs): ThreadInfo { +}: CreatePendingThreadArgs): LegacyThreadInfo { const now = Date.now(); if (!members.some(member => member.id === viewerID)) { throw new Error( @@ -417,7 +417,7 @@ } type PendingPersonalThread = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +pendingPersonalThreadUserInfo: UserInfo, }; @@ -477,7 +477,7 @@ // Returns map from user ID to AccountUserInfo function extractMentionedMembers( text: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): Map { const memberMap = memberLowercaseUsernameMap(threadInfo.members); const mentions = extractUserMentionsFromText(text); @@ -496,8 +496,8 @@ // they will be automatically added to that sidebar function extractNewMentionedParentMembers( messageText: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): AccountUserInfo[] { const mentionedMembersOfParent = extractMentionedMembers( messageText, @@ -513,7 +513,7 @@ type SharedCreatePendingSidebarInput = { +sourceMessageInfo: ComposableMessageInfo | RobotextMessageInfo, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +loggedInUserInfo: LoggedInUserInfo, }; @@ -523,7 +523,7 @@ }; function baseCreatePendingSidebar( input: BaseCreatePendingSidebarInput, -): ThreadInfo { +): LegacyThreadInfo { const { sourceMessageInfo, parentThreadInfo, @@ -599,7 +599,7 @@ }; function createUnresolvedPendingSidebar( input: CreateUnresolvedPendingSidebarInput, -): ThreadInfo { +): LegacyThreadInfo { const { sourceMessageInfo, parentThreadInfo, @@ -632,7 +632,7 @@ }; async function createPendingSidebar( input: CreatePendingSidebarInput, -): Promise { +): Promise { const { sourceMessageInfo, parentThreadInfo, @@ -685,7 +685,7 @@ } type CreateRealThreadParameters = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +dispatchActionPromise: DispatchActionPromise, +createNewThread: ClientNewThreadRequest => Promise, +sourceMessageID: ?string, @@ -871,7 +871,7 @@ } function threadUIName( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): string | ThreadEntity { if (threadInfo.name) { return firstLine(threadInfo.name); @@ -905,8 +905,8 @@ rawThreadInfo: LegacyRawThreadInfo, viewerID: ?string, userInfos: UserInfos, -): ThreadInfo { - let threadInfo: ThreadInfo = { +): LegacyThreadInfo { + let threadInfo: LegacyThreadInfo = { id: rawThreadInfo.id, type: rawThreadInfo.type, name: rawThreadInfo.name, @@ -951,7 +951,7 @@ } function getCurrentUser( - threadInfo: LegacyRawThreadInfo | ThreadInfo, + threadInfo: LegacyRawThreadInfo | LegacyThreadInfo, viewerID: ?string, userInfos: UserInfos, ): ThreadCurrentUserInfo { @@ -991,7 +991,7 @@ } function threadIsWithBlockedUserOnly( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, viewerID: ?string, userInfos: UserInfos, checkOnlyViewerBlock?: boolean, @@ -1023,7 +1023,7 @@ } function threadFrozenDueToBlock( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, viewerID: ?string, userInfos: UserInfos, ): boolean { @@ -1031,7 +1031,7 @@ } function threadFrozenDueToViewerBlock( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, viewerID: ?string, userInfos: UserInfos, ): boolean { @@ -1047,7 +1047,7 @@ function memberIsAdmin( memberInfo: RelativeMemberInfo | MemberInfo, - threadInfo: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, ): boolean { return !!( memberInfo.role && roleIsAdminRole(threadInfo.roles[memberInfo.role]) @@ -1072,7 +1072,7 @@ function threadHasAdminRole( threadInfo: ?( | RawThreadInfo - | ThreadInfo + | LegacyThreadInfo | ServerThreadInfo | MinimallyEncodedThreadInfo ), @@ -1084,7 +1084,7 @@ } function threadOrParentThreadHasAdminRole( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ) { return ( threadMembersWithoutAddedAshoat(threadInfo).filter(member => @@ -1185,7 +1185,9 @@ } } -function useWatchThread(threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo) { +function useWatchThread( + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +) { const dispatchActionPromise = useDispatchActionPromise(); const callFetchMostRecentMessages = useFetchMostRecentMessages(); @@ -1218,10 +1220,10 @@ }; type ExistingThreadInfoFinder = ( params: ExistingThreadInfoFinderParams, -) => ?ThreadInfo | ?MinimallyEncodedThreadInfo; +) => ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo; // TODO (atul): Parameterize function once `createPendingThread` is updated. function useExistingThreadInfoFinder( - baseThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + baseThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): ExistingThreadInfoFinder { const threadInfos = useSelector(threadInfoSelector); const loggedInUserInfo = useLoggedInUserInfo(); @@ -1233,7 +1235,7 @@ return React.useCallback( ( params: ExistingThreadInfoFinderParams, - ): ?ThreadInfo | ?MinimallyEncodedThreadInfo => { + ): ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo => { if (!baseThreadInfo) { return null; } @@ -1337,7 +1339,7 @@ threadInfo: | ServerThreadInfo | RawThreadInfo - | ThreadInfo + | LegacyThreadInfo | MinimallyEncodedThreadInfo, memberID: string, permission: ThreadPermission, @@ -1355,7 +1357,7 @@ } function useCanCreateSidebarFromMessage( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, messageInfo: ComposableMessageInfo | RobotextMessageInfo, ): boolean { const messageCreatorUserInfo = useSelector( @@ -1384,7 +1386,7 @@ } function useSidebarExistsOrCanBeCreated( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, messageItem: ChatMessageInfoItem, ): boolean { const canCreateSidebarFromMessage = useCanCreateSidebarFromMessage( @@ -1395,7 +1397,7 @@ } function checkIfDefaultMembersAreVoiced( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): boolean { const defaultRoleID = Object.keys(threadInfo.roles).find( roleID => threadInfo.roles[roleID].isDefault, @@ -1422,7 +1424,7 @@ parentThreadInfo: | ?ServerThreadInfo | RawThreadInfo - | ThreadInfo + | LegacyThreadInfo | MinimallyEncodedThreadInfo, threadType: ThreadType, ): ?string { @@ -1442,7 +1444,7 @@ parentThreadInfo: | ?ServerThreadInfo | RawThreadInfo - | ThreadInfo + | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?string { if (!parentThreadInfo) { @@ -1461,7 +1463,7 @@ function getThreadListSearchResults( chatListData: $ReadOnlyArray, searchText: string, - threadFilter: ThreadInfo => boolean, + threadFilter: LegacyThreadInfo => boolean, threadSearchResults: $ReadOnlySet, usersSearchResults: $ReadOnlyArray, loggedInUserInfo: ?LoggedInUserInfo, @@ -1549,7 +1551,7 @@ } function removeMemberFromThread( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, memberInfo: RelativeMemberInfo, dispatchActionPromise: DispatchActionPromise, removeUserFromThreadServerCall: ( @@ -1568,7 +1570,7 @@ } function switchMemberAdminRoleInThread( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, memberInfo: RelativeMemberInfo, isCurrentlyAdmin: boolean, dispatchActionPromise: DispatchActionPromise, @@ -1601,7 +1603,7 @@ function getAvailableThreadMemberActions( memberInfo: RelativeMemberInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, canEdit: ?boolean = true, ): $ReadOnlyArray<'change_role' | 'remove_user'> { const role = memberInfo.role; @@ -1636,11 +1638,11 @@ } function patchThreadInfoToIncludeMentionedMembersOfParent( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, messageText: string, viewerID: string, -): ThreadInfo | MinimallyEncodedThreadInfo { +): LegacyThreadInfo | MinimallyEncodedThreadInfo { const members: UserIDAndUsername[] = threadInfo.members .map(({ id, username }) => username ? ({ id, username }: UserIDAndUsername) : null, @@ -1667,7 +1669,7 @@ } function threadInfoInsideCommunity( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, communityID: string, ): boolean { return threadInfo.community === communityID || threadInfo.id === communityID; @@ -1678,7 +1680,7 @@ }; function useRoleMemberCountsForCommunity( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): RoleAndMemberCount { return React.useMemo(() => { const roleIDsToNames: { [string]: string } = {}; @@ -1715,7 +1717,7 @@ // the set of permission literals for each role to user-facing permission enums // to help pre-populate the permission checkboxes when editing roles. function useRoleUserSurfacedPermissions( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): RoleUserSurfacedPermissions { return React.useMemo(() => { const roleNamesToPermissions: { [string]: Set } = @@ -1745,7 +1747,7 @@ } function communityOrThreadNoun( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): string { return threadTypeIsCommunityRoot(threadInfo.type) ? 'community' @@ -1753,7 +1755,7 @@ } function getThreadsToDeleteText( - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): string { return `${ threadTypeIsCommunityRoot(threadInfo.type) @@ -1788,13 +1790,13 @@ } if (isViewerProfile) { - const privateThreadInfo: ?ThreadInfo = privateThreadInfos[0]; + const privateThreadInfo: ?LegacyThreadInfo = privateThreadInfos[0]; return privateThreadInfo ? { threadInfo: privateThreadInfo } : null; } if (usersWithPersonalThread.has(userID)) { - const personalThreadInfo: ?ThreadInfo = personalThreadInfos.find( + const personalThreadInfo: ?LegacyThreadInfo = personalThreadInfos.find( threadInfo => userID === getSingleOtherUser(threadInfo, loggedInUserInfo.id), ); diff --git a/lib/shared/user-utils.js b/lib/shared/user-utils.js --- a/lib/shared/user-utils.js +++ b/lib/shared/user-utils.js @@ -6,7 +6,7 @@ import type { RawThreadInfo, ServerThreadInfo, - ThreadInfo, + LegacyThreadInfo, } from '../types/thread-types.js'; import type { UserInfo } from '../types/user-types.js'; import { useSelector } from '../utils/redux-utils.js'; @@ -35,7 +35,7 @@ function useKeyserverAdmin( community: - | ThreadInfo + | LegacyThreadInfo | RawThreadInfo | ServerThreadInfo | MinimallyEncodedThreadInfo, diff --git a/lib/types/messages/create-sidebar.js b/lib/types/messages/create-sidebar.js --- a/lib/types/messages/create-sidebar.js +++ b/lib/types/messages/create-sidebar.js @@ -4,7 +4,7 @@ import { tID, tNumber, tShape } from '../../utils/validation-utils.js'; import { messageTypes } from '../message-types-enum.js'; -import type { ThreadInfo } from '../thread-types.js'; +import type { LegacyThreadInfo } from '../thread-types.js'; import type { RelativeUserInfo } from '../user-types.js'; export type CreateSidebarMessageData = { @@ -51,7 +51,7 @@ +sourceMessageAuthor: RelativeUserInfo, +initialThreadState: { +name: ?string, - +parentThreadInfo: ThreadInfo, + +parentThreadInfo: LegacyThreadInfo, +color: string, +otherMembers: RelativeUserInfo[], }, diff --git a/lib/types/messages/create-subthread.js b/lib/types/messages/create-subthread.js --- a/lib/types/messages/create-subthread.js +++ b/lib/types/messages/create-subthread.js @@ -4,7 +4,7 @@ import { tID, tNumber, tShape } from '../../utils/validation-utils.js'; import { messageTypes } from '../message-types-enum.js'; -import type { ThreadInfo } from '../thread-types.js'; +import type { LegacyThreadInfo } from '../thread-types.js'; import type { RelativeUserInfo } from '../user-types.js'; export type CreateSubthreadMessageData = { @@ -36,5 +36,5 @@ threadID: string, creator: RelativeUserInfo, time: number, - childThreadInfo: ThreadInfo, + childThreadInfo: LegacyThreadInfo, }; diff --git a/lib/types/messages/create-thread.js b/lib/types/messages/create-thread.js --- a/lib/types/messages/create-thread.js +++ b/lib/types/messages/create-thread.js @@ -11,7 +11,7 @@ } from '../../utils/validation-utils.js'; import { messageTypes } from '../message-types-enum.js'; import { threadTypes, type ThreadType } from '../thread-types-enum.js'; -import { type ThreadInfo } from '../thread-types.js'; +import { type LegacyThreadInfo } from '../thread-types.js'; import type { RelativeUserInfo } from '../user-types.js'; export type CreateThreadMessageData = { @@ -58,7 +58,7 @@ initialThreadState: { type: ThreadType, name: ?string, - parentThreadInfo: ?ThreadInfo, + parentThreadInfo: ?LegacyThreadInfo, color: string, otherMembers: RelativeUserInfo[], }, diff --git a/lib/types/minimally-encoded-thread-permissions-types.js b/lib/types/minimally-encoded-thread-permissions-types.js --- a/lib/types/minimally-encoded-thread-permissions-types.js +++ b/lib/types/minimally-encoded-thread-permissions-types.js @@ -8,7 +8,7 @@ LegacyRelativeMemberInfo, LegacyRoleInfo, ThreadCurrentUserInfo, - ThreadInfo, + LegacyThreadInfo, } from './thread-types.js'; import { decodeThreadRolePermissionsBitmaskArray, @@ -156,7 +156,7 @@ }; export type MinimallyEncodedThreadInfo = $ReadOnly<{ - ...ThreadInfo, + ...LegacyThreadInfo, +minimallyEncoded: true, +members: $ReadOnlyArray, +roles: { +[id: string]: MinimallyEncodedRoleInfo }, @@ -164,7 +164,7 @@ }>; const minimallyEncodeThreadInfo = ( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ): MinimallyEncodedThreadInfo => { const { members, roles, currentUser, ...rest } = threadInfo; return { @@ -178,7 +178,7 @@ const decodeMinimallyEncodedThreadInfo = ( minimallyEncodedThreadInfo: MinimallyEncodedThreadInfo, -): ThreadInfo => { +): LegacyThreadInfo => { const { minimallyEncoded, members, roles, currentUser, ...rest } = minimallyEncodedThreadInfo; return { 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 @@ -145,7 +145,7 @@ export type RawThreadInfo = LegacyRawThreadInfo | MinimallyEncodedRawThreadInfo; -export type ThreadInfo = { +export type LegacyThreadInfo = { +id: string, +type: ThreadType, +name: ?string, @@ -164,25 +164,26 @@ +repliesCount: number, +pinnedCount?: number, }; -export const threadInfoValidator: TInterface = tShape({ - id: tID, - type: threadTypeValidator, - name: t.maybe(t.String), - uiName: t.union([t.String, threadEntityValidator]), - avatar: t.maybe(clientAvatarValidator), - description: t.maybe(t.String), - color: t.String, - creationTime: t.Number, - parentThreadID: t.maybe(tID), - containingThreadID: t.maybe(tID), - community: t.maybe(tID), - members: t.list(legacyRelativeMemberInfoValidator), - roles: t.dict(tID, legacyRoleInfoValidator), - currentUser: threadCurrentUserInfoValidator, - sourceMessageID: t.maybe(tID), - repliesCount: t.Number, - pinnedCount: t.maybe(t.Number), -}); +export const legacyThreadInfoValidator: TInterface = + tShape({ + id: tID, + type: threadTypeValidator, + name: t.maybe(t.String), + uiName: t.union([t.String, threadEntityValidator]), + avatar: t.maybe(clientAvatarValidator), + description: t.maybe(t.String), + color: t.String, + creationTime: t.Number, + parentThreadID: t.maybe(tID), + containingThreadID: t.maybe(tID), + community: t.maybe(tID), + members: t.list(legacyRelativeMemberInfoValidator), + roles: t.dict(tID, legacyRoleInfoValidator), + currentUser: threadCurrentUserInfoValidator, + sourceMessageID: t.maybe(tID), + repliesCount: t.Number, + pinnedCount: t.maybe(t.Number), + }); export type ResolvedThreadInfo = { +id: string, @@ -404,7 +405,7 @@ }; export type SidebarInfo = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +lastUpdatedTime: number, +mostRecentNonLocalMessage: ?string, }; @@ -487,6 +488,6 @@ }; export type UserProfileThreadInfo = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +pendingPersonalThreadUserInfo?: UserInfo, }; diff --git a/lib/utils/drawer-utils.react.js b/lib/utils/drawer-utils.react.js --- a/lib/utils/drawer-utils.react.js +++ b/lib/utils/drawer-utils.react.js @@ -8,13 +8,13 @@ } from '../types/minimally-encoded-thread-permissions-types.js'; import { communitySubthreads } from '../types/thread-types-enum.js'; import type { - ThreadInfo, + LegacyThreadInfo, ResolvedThreadInfo, RawThreadInfo, } from '../types/thread-types.js'; type WritableCommunityDrawerItemData = { - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, itemChildren: $ReadOnlyArray>, hasSubchannelsButton: boolean, labelStyle: T, @@ -25,7 +25,9 @@ function createRecursiveDrawerItemsData( childThreadInfosMap: { - +[id: string]: $ReadOnlyArray, + +[id: string]: $ReadOnlyArray< + LegacyThreadInfo | MinimallyEncodedThreadInfo, + >, }, communities: $ReadOnlyArray< ResolvedThreadInfo | MinimallyEncodedResolvedThreadInfo, @@ -66,7 +68,7 @@ return result; } -function threadHasSubchannels( +function threadHasSubchannels( threadInfo: T, childThreadInfosMap: { +[id: string]: $ReadOnlyArray, @@ -106,7 +108,10 @@ function filterThreadIDsBelongingToCommunity( communityID: string, threadInfosObj: { - +[id: string]: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + +[id: string]: + | LegacyThreadInfo + | RawThreadInfo + | MinimallyEncodedThreadInfo, }, ): $ReadOnlySet { const threadInfos = values(threadInfosObj); diff --git a/lib/utils/entity-helpers.js b/lib/utils/entity-helpers.js --- a/lib/utils/entity-helpers.js +++ b/lib/utils/entity-helpers.js @@ -13,11 +13,14 @@ MinimallyEncodedResolvedThreadInfo, MinimallyEncodedThreadInfo, } from '../types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo, ResolvedThreadInfo } from '../types/thread-types.js'; +import type { + LegacyThreadInfo, + ResolvedThreadInfo, +} from '../types/thread-types.js'; import { values } from '../utils/objects.js'; function useResolvedThreadInfos( - threadInfos: $ReadOnlyArray, + threadInfos: $ReadOnlyArray, options?: ?UseENSNamesOptions, ): $ReadOnlyArray { const entityText = React.useMemo( @@ -56,7 +59,7 @@ } function useResolvedOptionalThreadInfos( - threadInfos: ?$ReadOnlyArray, + threadInfos: ?$ReadOnlyArray, ): ?$ReadOnlyArray { const entityText = React.useMemo(() => { if (!threadInfos) { @@ -91,7 +94,7 @@ } function useResolvedThreadInfosObj( - threadInfosObj: { +[id: string]: ThreadInfo }, + threadInfosObj: { +[id: string]: LegacyThreadInfo }, options?: ?UseENSNamesOptions, ): { +[id: string]: ResolvedThreadInfo | MinimallyEncodedResolvedThreadInfo } { const threadInfosArray = React.useMemo( @@ -114,7 +117,7 @@ } function useResolvedThreadInfo( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ResolvedThreadInfo | MinimallyEncodedResolvedThreadInfo { const resolutionInput = React.useMemo(() => [threadInfo], [threadInfo]); const [resolvedThreadInfo] = useResolvedThreadInfos(resolutionInput); @@ -122,7 +125,7 @@ } function useResolvedOptionalThreadInfo( - threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): ?ResolvedThreadInfo | ?MinimallyEncodedResolvedThreadInfo { const resolutionInput = React.useMemo( () => (threadInfo ? [threadInfo] : []), diff --git a/lib/utils/entity-text.js b/lib/utils/entity-text.js --- a/lib/utils/entity-text.js +++ b/lib/utils/entity-text.js @@ -15,7 +15,7 @@ threadTypes, threadTypeValidator, } from '../types/thread-types-enum.js'; -import type { ThreadInfo, RawThreadInfo } from '../types/thread-types.js'; +import type { LegacyThreadInfo, RawThreadInfo } from '../types/thread-types.js'; import { basePluralize } from '../utils/text-utils.js'; export type UserEntity = { @@ -135,17 +135,23 @@ type EntityTextThreadInput = | { +display: 'uiName', - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, } | { +display?: 'shortName', - +threadInfo: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: + | LegacyThreadInfo + | RawThreadInfo + | MinimallyEncodedThreadInfo, +subchannel?: ?boolean, +possessive?: ?boolean, } | { +display: 'alwaysDisplayShortName', - +threadInfo: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: + | LegacyThreadInfo + | RawThreadInfo + | MinimallyEncodedThreadInfo, +possessive?: ?boolean, } | { 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 @@ -11,7 +11,7 @@ type UserSurfacedPermission, } from '../types/thread-permission-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, RoleInfo, RelativeMemberInfo, } from '../types/thread-types'; @@ -57,7 +57,7 @@ } function useRolesFromCommunityThreadInfo( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, memberInfos: $ReadOnlyArray, ): $ReadOnlyMap { // Our in-code system has chat-specific roles, while the diff --git a/lib/utils/toggle-pin-utils.js b/lib/utils/toggle-pin-utils.js --- a/lib/utils/toggle-pin-utils.js +++ b/lib/utils/toggle-pin-utils.js @@ -5,11 +5,11 @@ import type { RawMessageInfo, MessageInfo } from '../types/message-types.js'; import type { MinimallyEncodedThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from '../types/thread-permission-types.js'; -import type { RawThreadInfo, ThreadInfo } from '../types/thread-types.js'; +import type { RawThreadInfo, LegacyThreadInfo } from '../types/thread-types.js'; function canToggleMessagePin( messageInfo: RawMessageInfo | MessageInfo, - threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, ): boolean { const isValidMessage = !isInvalidPinSourceForThread(messageInfo, threadInfo); const hasManagePinsPermission = threadHasPermission( diff --git a/native/avatars/edit-thread-avatar.react.js b/native/avatars/edit-thread-avatar.react.js --- a/native/avatars/edit-thread-avatar.react.js +++ b/native/avatars/edit-thread-avatar.react.js @@ -7,7 +7,10 @@ import { EditThreadAvatarContext } from 'lib/components/base-edit-thread-avatar-provider.react.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RawThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import { useNativeSetThreadAvatar, @@ -23,7 +26,7 @@ import { useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, +disabled?: boolean, }; function EditThreadAvatar(props: Props): React.Node { diff --git a/native/avatars/thread-avatar.react.js b/native/avatars/thread-avatar.react.js --- a/native/avatars/thread-avatar.react.js +++ b/native/avatars/thread-avatar.react.js @@ -14,7 +14,7 @@ } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; import type { - ThreadInfo, + LegacyThreadInfo, ResolvedThreadInfo, RawThreadInfo, } from 'lib/types/thread-types.js'; @@ -25,7 +25,7 @@ type Props = { +threadInfo: | RawThreadInfo - | ThreadInfo + | LegacyThreadInfo | ResolvedThreadInfo | MinimallyEncodedThreadInfo | MinimallyEncodedResolvedThreadInfo, diff --git a/native/calendar/calendar.react.js b/native/calendar/calendar.react.js --- a/native/calendar/calendar.react.js +++ b/native/calendar/calendar.react.js @@ -36,7 +36,7 @@ import type { CalendarFilter } from 'lib/types/filter-types.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { ConnectionStatus } from 'lib/types/socket-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise, type DispatchActionPromise, @@ -114,7 +114,7 @@ | { itemType: 'entryInfo', entryInfo: EntryInfoWithHeight, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, }; type ExtraData = { +activeEntries: { +[key: string]: boolean }, diff --git a/native/calendar/entry.react.js b/native/calendar/entry.react.js --- a/native/calendar/entry.react.js +++ b/native/calendar/entry.react.js @@ -46,7 +46,7 @@ import type { Dispatch } from 'lib/types/redux-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type ResolvedThreadInfo, } from 'lib/types/thread-types.js'; import { @@ -191,7 +191,7 @@ }; type BaseProps = { ...SharedProps, - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type Props = { ...SharedProps, diff --git a/native/chat/chat-context-provider.react.js b/native/chat/chat-context-provider.react.js --- a/native/chat/chat-context-provider.react.js +++ b/native/chat/chat-context-provider.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { ChatContext } from './chat-context.js'; import type { SidebarAnimationType } from './chat-context.js'; @@ -17,7 +17,7 @@ export type MeasurementTask = { +messages: $ReadOnlyArray, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +onMessagesMeasured: ( messagesWithHeight: $ReadOnlyArray, measuredHeights: $ReadOnlyMap, @@ -38,7 +38,7 @@ const measureMessages = React.useCallback( ( messages: ?$ReadOnlyArray, - threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, onMessagesMeasured: ($ReadOnlyArray) => mixed, measurerID: number, ) => { @@ -94,7 +94,7 @@ return { measure: ( messages: ?$ReadOnlyArray, - threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, onMessagesMeasured: ( $ReadOnlyArray, ) => mixed, diff --git a/native/chat/chat-context.js b/native/chat/chat-context.js --- a/native/chat/chat-context.js +++ b/native/chat/chat-context.js @@ -5,14 +5,14 @@ import type { SetState } from 'lib/types/hook-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { NativeChatMessageItem } from './message-data.react.js'; import type { ChatMessageItemWithHeight } from '../types/chat-types.js'; export type MessagesMeasurer = ( ?$ReadOnlyArray, - ?ThreadInfo | ?MinimallyEncodedThreadInfo, + ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ($ReadOnlyArray) => mixed, ) => void; 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 @@ -75,7 +75,7 @@ import type { Dispatch } from 'lib/types/redux-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ClientThreadJoinRequest, ThreadJoinPayload, ChatMentionCandidates, @@ -274,7 +274,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { ...BaseProps, @@ -299,7 +299,7 @@ +userMentionsCandidates: $ReadOnlyArray, +chatMentionSearchIndex: SentencePrefixSearchIndex, +chatMentionCandidates: ChatMentionCandidates, - +parentThreadInfo: ?ThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo, +editedMessagePreview: ?MessagePreviewResult, +editedMessageInfo: ?MessageInfo, +editMessage: ( diff --git a/native/chat/chat-router.js b/native/chat/chat-router.js --- a/native/chat/chat-router.js +++ b/native/chat/chat-router.js @@ -12,7 +12,7 @@ import { StackRouter, CommonActions } from '@react-navigation/native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { createNavigateToThreadAction } from './message-list-types.js'; import { @@ -40,7 +40,7 @@ type ReplaceWithThreadAction = { +type: 'REPLACE_WITH_THREAD', +payload: { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }, }; type ClearThreadsAction = { @@ -52,7 +52,7 @@ type PushNewThreadAction = { +type: 'PUSH_NEW_THREAD', +payload: { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }, }; export type ChatRouterNavigationAction = @@ -65,10 +65,12 @@ export type ChatRouterNavigationHelpers = { +clearScreens: (routeNames: $ReadOnlyArray) => void, +replaceWithThread: ( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => void, +clearThreads: (threadIDs: $ReadOnlyArray) => void, - +pushNewThread: (threadInfo: ThreadInfo | MinimallyEncodedThreadInfo) => void, + +pushNewThread: ( + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + ) => void, }; function ChatRouter( @@ -162,7 +164,7 @@ routeNames, }, }), - replaceWithThread: (threadInfo: ThreadInfo) => + replaceWithThread: (threadInfo: LegacyThreadInfo) => ({ type: replaceWithThreadActionType, payload: { threadInfo }, @@ -171,7 +173,7 @@ type: clearThreadsActionType, payload: { threadIDs }, }), - pushNewThread: (threadInfo: ThreadInfo) => + pushNewThread: (threadInfo: LegacyThreadInfo) => ({ type: pushNewThreadActionType, payload: { threadInfo }, diff --git a/native/chat/chat-thread-list-item.react.js b/native/chat/chat-thread-list-item.react.js --- a/native/chat/chat-thread-list-item.react.js +++ b/native/chat/chat-thread-list-item.react.js @@ -4,7 +4,7 @@ import { Text, View } from 'react-native'; import type { ChatThreadItem } from 'lib/selectors/chat-selectors.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types.js'; import { shortAbsoluteDate } from 'lib/utils/date-utils.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; @@ -23,11 +23,11 @@ type Props = { +data: ChatThreadItem, +onPressItem: ( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, pendingPersonalThreadUserInfo?: UserInfo, ) => void, - +onPressSeeMoreSidebars: (threadInfo: ThreadInfo) => void, - +onSwipeableWillOpen: (threadInfo: ThreadInfo) => void, + +onPressSeeMoreSidebars: (threadInfo: LegacyThreadInfo) => void, + +onSwipeableWillOpen: (threadInfo: LegacyThreadInfo) => void, +currentlyOpenedSwipeableId: string, }; function ChatThreadListItem({ diff --git a/native/chat/chat-thread-list-see-more-sidebars.react.js b/native/chat/chat-thread-list-see-more-sidebars.react.js --- a/native/chat/chat-thread-list-see-more-sidebars.react.js +++ b/native/chat/chat-thread-list-see-more-sidebars.react.js @@ -4,16 +4,16 @@ import * as React from 'react'; import { Text } from 'react-native'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { sidebarHeight } from './sidebar-item.react.js'; import Button from '../components/button.react.js'; import { useColors, useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +unread: boolean, - +onPress: (threadInfo: ThreadInfo) => void, + +onPress: (threadInfo: LegacyThreadInfo) => void, }; function ChatThreadListSeeMoreSidebars(props: Props): React.Node { const { onPress, threadInfo, unread } = props; diff --git a/native/chat/chat-thread-list-sidebar.react.js b/native/chat/chat-thread-list-sidebar.react.js --- a/native/chat/chat-thread-list-sidebar.react.js +++ b/native/chat/chat-thread-list-sidebar.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import { View } from 'react-native'; -import type { ThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; import { SidebarItem, sidebarHeight } from './sidebar-item.react.js'; import SwipeableThread from './swipeable-thread.react.js'; @@ -15,8 +15,8 @@ type Props = { +sidebarInfo: SidebarInfo, - +onPressItem: (threadInfo: ThreadInfo) => void, - +onSwipeableWillOpen: (threadInfo: ThreadInfo) => void, + +onPressItem: (threadInfo: LegacyThreadInfo) => void, + +onSwipeableWillOpen: (threadInfo: LegacyThreadInfo) => void, +currentlyOpenedSwipeableId: string, +extendArrow: boolean, }; diff --git a/native/chat/chat-thread-list.react.js b/native/chat/chat-thread-list.react.js --- a/native/chat/chat-thread-list.react.js +++ b/native/chat/chat-thread-list.react.js @@ -33,7 +33,7 @@ } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types.js'; import { ChatThreadListItem } from './chat-thread-list-item.react.js'; @@ -78,7 +78,7 @@ | NavigationRoute<'HomeChatThreadList'> | NavigationRoute<'BackgroundChatThreadList'>, +filterThreads: ( - threadItem: ThreadInfo | MinimallyEncodedThreadInfo, + threadItem: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => boolean, +emptyItem?: React.ComponentType<{}>, }; @@ -129,7 +129,7 @@ ); const onSwipeableWillOpen = React.useCallback( - (threadInfo: ThreadInfo) => setOpenedSwipeableID(threadInfo.id), + (threadInfo: LegacyThreadInfo) => setOpenedSwipeableID(threadInfo.id), [], ); @@ -178,7 +178,10 @@ const searchInputRef = React.useRef>(); const onPressItem = React.useCallback( - (threadInfo: ThreadInfo, pendingPersonalThreadUserInfo?: UserInfo) => { + ( + threadInfo: LegacyThreadInfo, + pendingPersonalThreadUserInfo?: UserInfo, + ) => { onChangeSearchText(''); if (searchInputRef.current) { searchInputRef.current.blur(); @@ -189,7 +192,7 @@ ); const onPressSeeMoreSidebars = React.useCallback( - (threadInfo: ThreadInfo) => { + (threadInfo: LegacyThreadInfo) => { onChangeSearchText(''); if (searchInputRef.current) { searchInputRef.current.blur(); diff --git a/native/chat/compose-subchannel.react.js b/native/chat/compose-subchannel.react.js --- a/native/chat/compose-subchannel.react.js +++ b/native/chat/compose-subchannel.react.js @@ -21,7 +21,7 @@ import { threadInFilterList, userIsMember } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { type ThreadType, threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type AccountUserInfo } from 'lib/types/user-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; @@ -53,7 +53,7 @@ export type ComposeSubchannelParams = { +threadType: ThreadType, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { @@ -223,25 +223,28 @@ ], ); - const existingThreads: $ReadOnlyArray = React.useMemo(() => { - if (userInfoInputIDs.length === 0) { - return []; - } - return _flow( - _filter( - (threadInfo: ThreadInfo) => - threadInFilterList(threadInfo) && - threadInfo.parentThreadID === parentThreadInfo.id && - userInfoInputIDs.every(userID => userIsMember(threadInfo, userID)), - ), - _sortBy( - ([ - 'members.length', - (threadInfo: ThreadInfo) => (threadInfo.name ? 1 : 0), - ]: $ReadOnlyArray mixed)>), - ), - )(threadInfos); - }, [userInfoInputIDs, threadInfos, parentThreadInfo]); + const existingThreads: $ReadOnlyArray = + React.useMemo(() => { + if (userInfoInputIDs.length === 0) { + return []; + } + return _flow( + _filter( + (threadInfo: LegacyThreadInfo) => + threadInFilterList(threadInfo) && + threadInfo.parentThreadID === parentThreadInfo.id && + userInfoInputIDs.every(userID => userIsMember(threadInfo, userID)), + ), + _sortBy( + ([ + 'members.length', + (threadInfo: LegacyThreadInfo) => (threadInfo.name ? 1 : 0), + ]: $ReadOnlyArray< + string | ((threadInfo: LegacyThreadInfo) => mixed), + >), + ), + )(threadInfos); + }, [userInfoInputIDs, threadInfos, parentThreadInfo]); const navigateToThread = useNavigateToThread(); const onSelectExistingThread = React.useCallback( diff --git a/native/chat/failed-send.react.js b/native/chat/failed-send.react.js --- a/native/chat/failed-send.react.js +++ b/native/chat/failed-send.react.js @@ -9,7 +9,7 @@ import { messageTypes } from 'lib/types/message-types-enum.js'; import { assertComposableRawMessage } from 'lib/types/message-types.js'; import type { RawComposableMessageInfo } from 'lib/types/message-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { multimediaMessageSendFailed } from './multimedia-message-utils.js'; import textMessageSendFailed from './text-message-send-failed.js'; @@ -46,7 +46,7 @@ +rawMessageInfo: ?RawComposableMessageInfo, +styles: $ReadOnly, +inputState: ?InputState, - +parentThreadInfo: ?ThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo, }; class FailedSend extends React.PureComponent { retryingText = false; diff --git a/native/chat/fullscreen-thread-media-gallery.react.js b/native/chat/fullscreen-thread-media-gallery.react.js --- a/native/chat/fullscreen-thread-media-gallery.react.js +++ b/native/chat/fullscreen-thread-media-gallery.react.js @@ -4,7 +4,7 @@ import { Text, View, TouchableOpacity } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { ChatNavigationProp } from './chat.react.js'; import ThreadSettingsMediaGallery from './settings/thread-settings-media-gallery.react.js'; @@ -13,7 +13,7 @@ import type { VerticalBounds } from '../types/layout-types.js'; export type FullScreenThreadMediaGalleryParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const Tabs = { diff --git a/native/chat/image-paste-modal.react.js b/native/chat/image-paste-modal.react.js --- a/native/chat/image-paste-modal.react.js +++ b/native/chat/image-paste-modal.react.js @@ -7,7 +7,7 @@ import type { PhotoPaste } from 'lib/types/media-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import sleep from 'lib/utils/sleep.js'; import Modal from '../components/modal.react.js'; @@ -18,7 +18,7 @@ export type ImagePasteModalParams = { +imagePasteStagingInfo: PhotoPaste, - +thread: ThreadInfo | MinimallyEncodedThreadInfo, + +thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const safeAreaEdges = ['top']; diff --git a/native/chat/inline-engagement.react.js b/native/chat/inline-engagement.react.js --- a/native/chat/inline-engagement.react.js +++ b/native/chat/inline-engagement.react.js @@ -14,7 +14,7 @@ import { useNextLocalID } from 'lib/shared/message-utils.js'; import type { MessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { inlineEngagementLabelStyle, @@ -33,7 +33,7 @@ import type { ChatMessageInfoItemWithHeight } from '../types/chat-types.js'; function dummyNodeForInlineEngagementHeightMeasurement( - sidebarInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + sidebarInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, reactions: ReactionInfo, ): React.Element { return ( @@ -49,7 +49,7 @@ type DummyInlineEngagementNodeProps = { ...React.ElementConfig, +editedLabel?: ?string, - +sidebarInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +sidebarInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, }; function DummyInlineEngagementNode( @@ -129,8 +129,8 @@ type Props = { +messageInfo: MessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +sidebarThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + +sidebarThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, +disabled?: boolean, +positioning?: 'left' | 'right' | 'center', diff --git a/native/chat/inner-robotext-message.react.js b/native/chat/inner-robotext-message.react.js --- a/native/chat/inner-robotext-message.react.js +++ b/native/chat/inner-robotext-message.react.js @@ -7,7 +7,7 @@ import type { ReactionInfo } from 'lib/selectors/chat-selectors.js'; import { threadInfoSelector } from 'lib/selectors/thread-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { entityTextToReact, entityTextToRawString, @@ -27,7 +27,7 @@ function dummyNodeForRobotextMessageHeightMeasurement( robotext: EntityText, threadID: string, - sidebarInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + sidebarInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, reactions: ReactionInfo, ): React.Element { return ( diff --git a/native/chat/inner-text-message.react.js b/native/chat/inner-text-message.react.js --- a/native/chat/inner-text-message.react.js +++ b/native/chat/inner-text-message.react.js @@ -7,7 +7,7 @@ import type { ReactionInfo } from 'lib/selectors/chat-selectors.js'; import { colorIsDark } from 'lib/shared/color-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useComposedMessageMaxWidth } from './composed-message-width.js'; import { DummyInlineEngagementNode } from './inline-engagement.react.js'; @@ -34,7 +34,7 @@ function dummyNodeForTextMessageHeightMeasurement( text: string, editedLabel?: ?string, - sidebarInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + sidebarInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, reactions: ReactionInfo, ): React.Element { return ( diff --git a/native/chat/message-list-container.react.js b/native/chat/message-list-container.react.js --- a/native/chat/message-list-container.react.js +++ b/native/chat/message-list-container.react.js @@ -21,7 +21,7 @@ pendingThreadType, } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { AccountUserInfo, UserListItem } from 'lib/types/user-types.js'; import { type MessagesMeasurer, useHeightMeasurer } from './chat-context.js'; @@ -89,8 +89,8 @@ +updateTagInput: (items: $ReadOnlyArray) => void, +resolveToUser: (user: AccountUserInfo) => void, +userSearchResults: $ReadOnlyArray, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +genesisThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + +genesisThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +messageListData: ?$ReadOnlyArray, +colors: Colors, +styles: $ReadOnly, diff --git a/native/chat/message-list-header-title.react.js b/native/chat/message-list-header-title.react.js --- a/native/chat/message-list-header-title.react.js +++ b/native/chat/message-list-header-title.react.js @@ -6,7 +6,7 @@ import { View } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import { firstLine } from 'lib/utils/string-utils.js'; @@ -31,7 +31,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +navigate: $PropertyType, 'navigate'>, +isSearchEmpty: boolean, +areSettingsEnabled: boolean, diff --git a/native/chat/message-list-types.js b/native/chat/message-list-types.js --- a/native/chat/message-list-types.js +++ b/native/chat/message-list-types.js @@ -7,7 +7,7 @@ import { useThreadChatMentionCandidates } from 'lib/hooks/chat-mention-hooks.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type UserInfo } from 'lib/types/user-types.js'; import { ChatContext } from './chat-context.js'; @@ -20,7 +20,7 @@ } from '../navigation/route-names.js'; export type MessageListParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +pendingPersonalThreadUserInfo?: UserInfo, +searching?: boolean, +removeEditMode?: ?RemoveEditMode, @@ -38,7 +38,7 @@ React.createContext(); function useMessageListContext( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) { const chatMentionCandidates = useThreadChatMentionCandidates(threadInfo); const getTextMessageMarkdownRules = useTextMessageRulesFunc( @@ -55,7 +55,7 @@ type Props = { +children: React.Node, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function MessageListContextProvider(props: Props): React.Node { const context = useMessageListContext(props.threadInfo); @@ -98,7 +98,7 @@ } function useNavigateToThreadWithFadeAnimation( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, messageKey: ?string, ): () => mixed { const chatContext = React.useContext(ChatContext); diff --git a/native/chat/message-list.react.js b/native/chat/message-list.react.js --- a/native/chat/message-list.react.js +++ b/native/chat/message-list.react.js @@ -21,7 +21,7 @@ import type { FetchMessageInfosPayload } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type DispatchActionPromise, useDispatchActionPromise, @@ -69,7 +69,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +messageListData: $ReadOnlyArray, +navigation: ChatNavigationProp<'MessageList'>, +route: NavigationRoute<'MessageList'>, diff --git a/native/chat/message-preview.react.js b/native/chat/message-preview.react.js --- a/native/chat/message-preview.react.js +++ b/native/chat/message-preview.react.js @@ -7,7 +7,7 @@ import { useThreadChatMentionCandidates } from 'lib/hooks/chat-mention-hooks.js'; import { useMessagePreview } from 'lib/shared/message-utils.js'; import { type MessageInfo } from 'lib/types/message-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import SingleLine from '../components/single-line.react.js'; import { getDefaultTextMessageRules } from '../markdown/rules.react.js'; @@ -15,7 +15,7 @@ type Props = { +messageInfo: MessageInfo, - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; function MessagePreview(props: Props): React.Node { const { messageInfo, threadInfo } = props; diff --git a/native/chat/message-result.react.js b/native/chat/message-result.react.js --- a/native/chat/message-result.react.js +++ b/native/chat/message-result.react.js @@ -5,7 +5,7 @@ import { ScrollView } from 'react-native-gesture-handler'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import { type ChatNavigationProp } from './chat.react.js'; @@ -20,7 +20,7 @@ type MessageResultProps = { +item: ChatMessageInfoItemWithHeight, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +navigation: | AppNavigationProp<'TogglePinModal'> | ChatNavigationProp<'MessageResultsScreen'> diff --git a/native/chat/message-results-screen.react.js b/native/chat/message-results-screen.react.js --- a/native/chat/message-results-screen.react.js +++ b/native/chat/message-results-screen.react.js @@ -16,7 +16,7 @@ } from 'lib/shared/message-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useHeightMeasurer } from './chat-context.js'; import type { ChatNavigationProp } from './chat.react'; @@ -29,7 +29,7 @@ import type { VerticalBounds } from '../types/layout-types.js'; export type MessageResultsScreenParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type MessageResultsScreenProps = { diff --git a/native/chat/parent-thread-header.react.js b/native/chat/parent-thread-header.react.js --- a/native/chat/parent-thread-header.react.js +++ b/native/chat/parent-thread-header.react.js @@ -6,7 +6,7 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { ThreadType } from 'lib/types/thread-types-enum.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useNavigateToThread } from './message-list-types.js'; import Button from '../components/button.react.js'; @@ -15,7 +15,7 @@ import { useColors, useStyles } from '../themes/colors.js'; type Props = { - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +childThreadType: ThreadType, }; function ParentThreadHeader(props: Props): React.Node { diff --git a/native/chat/relationship-prompt.react.js b/native/chat/relationship-prompt.react.js --- a/native/chat/relationship-prompt.react.js +++ b/native/chat/relationship-prompt.react.js @@ -7,7 +7,7 @@ import { useRelationshipPrompt } from 'lib/hooks/relationship-prompt.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types.js'; import Button from '../components/button.react.js'; @@ -16,7 +16,7 @@ type Props = { +pendingPersonalThreadUserInfo: ?UserInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const RelationshipPrompt: React.ComponentType = React.memo( diff --git a/native/chat/settings/add-users-modal.react.js b/native/chat/settings/add-users-modal.react.js --- a/native/chat/settings/add-users-modal.react.js +++ b/native/chat/settings/add-users-modal.react.js @@ -17,7 +17,7 @@ import { getPotentialMemberItems } from 'lib/shared/search-utils.js'; import { threadActualMembers } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type AccountUserInfo } from 'lib/types/user-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; @@ -46,7 +46,7 @@ export type AddUsersModalParams = { +presentedFrom: string, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/native/chat/settings/color-selector-modal.react.js b/native/chat/settings/color-selector-modal.react.js --- a/native/chat/settings/color-selector-modal.react.js +++ b/native/chat/settings/color-selector-modal.react.js @@ -10,7 +10,7 @@ } from 'lib/actions/thread-actions.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type ChangeThreadSettingsPayload, type UpdateThreadRequest, } from 'lib/types/thread-types.js'; @@ -28,7 +28,7 @@ export type ColorSelectorModalParams = { +presentedFrom: string, +color: string, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +setColor: (color: string) => void, }; diff --git a/native/chat/settings/compose-subchannel-modal.react.js b/native/chat/settings/compose-subchannel-modal.react.js --- a/native/chat/settings/compose-subchannel-modal.react.js +++ b/native/chat/settings/compose-subchannel-modal.react.js @@ -7,7 +7,7 @@ import { threadTypeDescriptions } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import Button from '../../components/button.react.js'; import Modal from '../../components/modal.react.js'; @@ -19,7 +19,7 @@ export type ComposeSubchannelModalParams = { +presentedFrom: string, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const unboundStyles = { diff --git a/native/chat/settings/delete-thread.react.js b/native/chat/settings/delete-thread.react.js --- a/native/chat/settings/delete-thread.react.js +++ b/native/chat/settings/delete-thread.react.js @@ -30,7 +30,7 @@ MinimallyEncodedThreadInfo, } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ResolvedThreadInfo, LeaveThreadPayload, } from 'lib/types/thread-types.js'; @@ -53,7 +53,7 @@ import type { ChatNavigationProp } from '../chat.react.js'; export type DeleteThreadParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const unboundStyles = { diff --git a/native/chat/settings/emoji-thread-avatar-creation.react.js b/native/chat/settings/emoji-thread-avatar-creation.react.js --- a/native/chat/settings/emoji-thread-avatar-creation.react.js +++ b/native/chat/settings/emoji-thread-avatar-creation.react.js @@ -7,7 +7,10 @@ import { savedEmojiAvatarSelectorForThread } from 'lib/selectors/thread-selectors.js'; import type { UpdateUserAvatarRequest } from 'lib/types/avatar-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RawThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import { useNativeSetThreadAvatar } from '../../avatars/avatar-hooks.js'; import EmojiAvatarCreation from '../../avatars/emoji-avatar-creation.react.js'; @@ -17,7 +20,7 @@ import { useSelector } from '../../redux/redux-utils.js'; export type EmojiThreadAvatarCreationParams = { - +threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/native/chat/settings/thread-settings-child-thread.react.js b/native/chat/settings/thread-settings-child-thread.react.js --- a/native/chat/settings/thread-settings-child-thread.react.js +++ b/native/chat/settings/thread-settings-child-thread.react.js @@ -4,7 +4,7 @@ import { View, Platform } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import ThreadAvatar from '../../avatars/thread-avatar.react.js'; import Button from '../../components/button.react.js'; @@ -14,7 +14,7 @@ import { useNavigateToThread } from '../message-list-types.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +firstListItem: boolean, +lastListItem: boolean, }; diff --git a/native/chat/settings/thread-settings-color.react.js b/native/chat/settings/thread-settings-color.react.js --- a/native/chat/settings/thread-settings-color.react.js +++ b/native/chat/settings/thread-settings-color.react.js @@ -7,7 +7,7 @@ import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { ThreadSettingsNavigate } from './thread-settings.react.js'; import ColorSplotch from '../../components/color-splotch.react.js'; @@ -39,7 +39,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +colorEditValue: string, +setColorEditValue: (color: string) => void, +canChangeSettings: boolean, diff --git a/native/chat/settings/thread-settings-description.react.js b/native/chat/settings/thread-settings-description.react.js --- a/native/chat/settings/thread-settings-description.react.js +++ b/native/chat/settings/thread-settings-description.react.js @@ -19,7 +19,7 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type ChangeThreadSettingsPayload, type UpdateThreadRequest, } from 'lib/types/thread-types.js'; @@ -88,7 +88,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +descriptionEditValue: ?string, +setDescriptionEditValue: (value: ?string, callback?: () => void) => void, +descriptionTextHeight: ?number, diff --git a/native/chat/settings/thread-settings-edit-relationship.react.js b/native/chat/settings/thread-settings-edit-relationship.react.js --- a/native/chat/settings/thread-settings-edit-relationship.react.js +++ b/native/chat/settings/thread-settings-edit-relationship.react.js @@ -19,7 +19,7 @@ type RelationshipAction, type RelationshipButton, } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise, useServerCall, @@ -32,7 +32,7 @@ import Alert from '../../utils/alert.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +buttonStyle: ViewStyle, +relationshipButton: RelationshipButton, }; diff --git a/native/chat/settings/thread-settings-home-notifs.react.js b/native/chat/settings/thread-settings-home-notifs.react.js --- a/native/chat/settings/thread-settings-home-notifs.react.js +++ b/native/chat/settings/thread-settings-home-notifs.react.js @@ -12,7 +12,7 @@ SubscriptionUpdateRequest, SubscriptionUpdateResult, } from 'lib/types/subscription-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { DispatchActionPromise } from 'lib/utils/action-utils.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; @@ -42,7 +42,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { ...BaseProps, diff --git a/native/chat/settings/thread-settings-leave-thread.react.js b/native/chat/settings/thread-settings-leave-thread.react.js --- a/native/chat/settings/thread-settings-leave-thread.react.js +++ b/native/chat/settings/thread-settings-leave-thread.react.js @@ -14,7 +14,10 @@ import { identifyInvalidatedThreads } from 'lib/shared/thread-utils.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo, LeaveThreadPayload } from 'lib/types/thread-types.js'; +import type { + LegacyThreadInfo, + LeaveThreadPayload, +} from 'lib/types/thread-types.js'; import { type DispatchActionPromise, useDispatchActionPromise, @@ -49,7 +52,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +buttonStyle: ViewStyle, }; type Props = { 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 @@ -6,7 +6,10 @@ import { removeMemberFromThread } from 'lib/shared/thread-utils.js'; import { stringForUser } from 'lib/shared/user-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types.js'; +import type { + LegacyThreadInfo, + 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'; @@ -23,7 +26,7 @@ export type ThreadSettingsMemberTooltipModalParams = TooltipParams<{ +memberInfo: RelativeMemberInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }>; function useOnRemoveUser( 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 @@ -21,7 +21,7 @@ import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type RelativeMemberInfo, } from 'lib/types/thread-types.js'; import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js'; @@ -91,7 +91,7 @@ type BaseProps = { +memberInfo: RelativeMemberInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +canEdit: boolean, +navigate: ThreadSettingsNavigate, +firstListItem: boolean, diff --git a/native/chat/settings/thread-settings-parent.react.js b/native/chat/settings/thread-settings-parent.react.js --- a/native/chat/settings/thread-settings-parent.react.js +++ b/native/chat/settings/thread-settings-parent.react.js @@ -4,7 +4,7 @@ import { Text, View } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import ThreadAvatar from '../../avatars/thread-avatar.react.js'; import Button from '../../components/button.react.js'; @@ -13,7 +13,7 @@ import { useNavigateToThread } from '../message-list-types.js'; type ParentButtonProps = { - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ParentButton(props: ParentButtonProps): React.Node { const styles = useStyles(unboundStyles); @@ -35,8 +35,8 @@ } type ThreadSettingsParentProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; function ThreadSettingsParent(props: ThreadSettingsParentProps): React.Node { const { threadInfo, parentThreadInfo } = props; diff --git a/native/chat/settings/thread-settings-promote-sidebar.react.js b/native/chat/settings/thread-settings-promote-sidebar.react.js --- a/native/chat/settings/thread-settings-promote-sidebar.react.js +++ b/native/chat/settings/thread-settings-promote-sidebar.react.js @@ -6,7 +6,7 @@ import { usePromoteSidebar } from 'lib/hooks/promote-sidebar.react.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import Button from '../../components/button.react.js'; import { type Colors, useColors, useStyles } from '../../themes/colors.js'; @@ -31,7 +31,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +buttonStyle: ViewStyle, }; type Props = { diff --git a/native/chat/settings/thread-settings-push-notifs.react.js b/native/chat/settings/thread-settings-push-notifs.react.js --- a/native/chat/settings/thread-settings-push-notifs.react.js +++ b/native/chat/settings/thread-settings-push-notifs.react.js @@ -14,7 +14,7 @@ SubscriptionUpdateRequest, SubscriptionUpdateResult, } from 'lib/types/subscription-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { DispatchActionPromise } from 'lib/utils/action-utils.js'; import { useDispatchActionPromise, @@ -54,7 +54,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { ...BaseProps, diff --git a/native/chat/settings/thread-settings-visibility.react.js b/native/chat/settings/thread-settings-visibility.react.js --- a/native/chat/settings/thread-settings-visibility.react.js +++ b/native/chat/settings/thread-settings-visibility.react.js @@ -4,13 +4,13 @@ import { Text, View } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import ThreadVisibility from '../../components/thread-visibility.react.js'; import { useStyles, useColors } from '../../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadSettingsVisibility(props: Props): React.Node { const styles = useStyles(unboundStyles); 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 @@ -41,7 +41,7 @@ import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type ResolvedThreadInfo, type RelativeMemberInfo, } from 'lib/types/thread-types.js'; @@ -110,7 +110,7 @@ const itemPageLength = 5; export type ThreadSettingsParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; export type ThreadSettingsNavigate = $PropertyType< @@ -225,7 +225,7 @@ | { +itemType: 'mediaGallery', +key: string, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +limit: number, +verticalBounds: ?VerticalBounds, } @@ -711,7 +711,7 @@ (propsAndState: PropsAndState) => propsAndState.threadInfo, (propsAndState: PropsAndState) => propsAndState.verticalBounds, ( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, verticalBounds: ?VerticalBounds, ) => { const listData: ChatSettingsItem[] = []; @@ -1169,7 +1169,7 @@ ); const threadID = props.route.params.threadInfo.id; - const reduxThreadInfo: ?ThreadInfo = useSelector( + const reduxThreadInfo: ?LegacyThreadInfo = useSelector( state => threadInfoSelector(state)[threadID], ); React.useEffect(() => { @@ -1186,7 +1186,7 @@ setParams({ threadInfo: reduxThreadInfo }); } }, [reduxThreadInfo, setParams]); - const threadInfo: ThreadInfo | MinimallyEncodedThreadInfo = + const threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo = reduxThreadInfo ?? props.route.params.threadInfo; const resolvedThreadInfo = useResolvedThreadInfo(threadInfo); @@ -1201,7 +1201,7 @@ }, [threadInfo]); const parentThreadID = threadInfo.parentThreadID; - const parentThreadInfo: ?ThreadInfo = useSelector(state => + const parentThreadInfo: ?LegacyThreadInfo = useSelector(state => parentThreadID ? threadInfoSelector(state)[parentThreadID] : null, ); const resolvedParentThreadInfo = diff --git a/native/chat/sidebar-list-modal.react.js b/native/chat/sidebar-list-modal.react.js --- a/native/chat/sidebar-list-modal.react.js +++ b/native/chat/sidebar-list-modal.react.js @@ -4,7 +4,7 @@ import { View } from 'react-native'; import { useSearchSidebars } from 'lib/hooks/search-threads.js'; -import type { ThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; import { SidebarItem } from './sidebar-item.react.js'; import ThreadListModal from './thread-list-modal.react.js'; @@ -16,7 +16,7 @@ import Arrow from '../vectors/arrow.react.js'; export type SidebarListModalParams = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type Props = { @@ -30,7 +30,7 @@ const numOfSidebarsWithExtendedArrow = listData.length - 1; const createRenderItem = React.useCallback( - (onPressItem: (threadInfo: ThreadInfo) => void) => + (onPressItem: (threadInfo: LegacyThreadInfo) => void) => // eslint-disable-next-line react/display-name (row: { +item: SidebarInfo, +index: number, ... }) => { let extendArrow: boolean = false; @@ -64,7 +64,7 @@ function Item(props: { item: SidebarInfo, - onPressItem: (threadInfo: ThreadInfo) => void, + onPressItem: (threadInfo: LegacyThreadInfo) => void, extendArrow: boolean, }): React.Node { const { item, onPressItem, extendArrow } = props; diff --git a/native/chat/sidebar-navigation.js b/native/chat/sidebar-navigation.js --- a/native/chat/sidebar-navigation.js +++ b/native/chat/sidebar-navigation.js @@ -12,7 +12,7 @@ } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ChatMentionCandidates, } from 'lib/types/thread-types.js'; import type { LoggedInUserInfo } from 'lib/types/user-types.js'; @@ -30,7 +30,7 @@ }; function getUnresolvedSidebarThreadInfo( input: GetUnresolvedSidebarThreadInfoInput, -): ?ThreadInfo | ?MinimallyEncodedThreadInfo { +): ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo { const { sourceMessage, loggedInUserInfo, chatMentionCandidates } = input; const threadCreatedFromMessage = sourceMessage.threadCreatedFromMessage; if (threadCreatedFromMessage) { @@ -57,7 +57,7 @@ }; async function getSidebarThreadInfo( input: GetSidebarThreadInfoInput, -): Promise { +): Promise { const { sourceMessage, loggedInUserInfo, diff --git a/native/chat/subchannels-list-modal.react.js b/native/chat/subchannels-list-modal.react.js --- a/native/chat/subchannels-list-modal.react.js +++ b/native/chat/subchannels-list-modal.react.js @@ -5,7 +5,7 @@ import { useSearchSubchannels } from 'lib/hooks/search-threads.js'; import type { ChatThreadItem } from 'lib/selectors/chat-selectors.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import SubchannelItem from './subchannel-item.react.js'; import ThreadListModal from './thread-list-modal.react.js'; @@ -15,7 +15,7 @@ import { useColors, useStyles } from '../themes/colors.js'; export type SubchannelListModalParams = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type Props = { @@ -41,14 +41,14 @@ } const createRenderItem = - (onPressItem: (threadInfo: ThreadInfo) => void) => + (onPressItem: (threadInfo: LegacyThreadInfo) => void) => // eslint-disable-next-line react/display-name (row: { +item: ChatThreadItem, +index: number, ... }) => { return ; }; function Item(props: { - onPressItem: (threadInfo: ThreadInfo) => void, + onPressItem: (threadInfo: LegacyThreadInfo) => void, subchannelInfo: ChatThreadItem, }): React.Node { const { onPressItem, subchannelInfo } = props; diff --git a/native/chat/swipeable-thread.react.js b/native/chat/swipeable-thread.react.js --- a/native/chat/swipeable-thread.react.js +++ b/native/chat/swipeable-thread.react.js @@ -7,14 +7,14 @@ import SwipeableComponent from 'react-native-gesture-handler/Swipeable'; import useToggleUnreadStatus from 'lib/hooks/toggle-unread-status.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import Swipeable from '../components/swipeable.js'; import { useColors } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +mostRecentNonLocalMessage: ?string, - +onSwipeableWillOpen: (threadInfo: ThreadInfo) => void, + +onSwipeableWillOpen: (threadInfo: LegacyThreadInfo) => void, +currentlyOpenedSwipeableId?: string, +iconSize: number, +children: React.Node, diff --git a/native/chat/thread-list-modal.react.js b/native/chat/thread-list-modal.react.js --- a/native/chat/thread-list-modal.react.js +++ b/native/chat/thread-list-modal.react.js @@ -13,7 +13,7 @@ import type { ThreadSearchState } from 'lib/hooks/search-threads.js'; import type { ChatThreadItem } from 'lib/selectors/chat-selectors.js'; import type { SetState } from 'lib/types/hook-types.js'; -import type { ThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; import { useNavigateToThread } from './message-list-types.js'; import Modal from '../components/modal.react.js'; @@ -34,8 +34,10 @@ } type Props = { - +threadInfo: ThreadInfo, - +createRenderItem: (onPressItem: (threadInfo: ThreadInfo) => void) => (row: { + +threadInfo: LegacyThreadInfo, + +createRenderItem: ( + onPressItem: (threadInfo: LegacyThreadInfo) => void, + ) => (row: { +item: U, +index: number, ... @@ -79,7 +81,7 @@ const navigateToThread = useNavigateToThread(); const onPressItem = React.useCallback( - (threadInfo: ThreadInfo) => { + (threadInfo: LegacyThreadInfo) => { setSearchState({ text: '', results: new Set(), diff --git a/native/chat/thread-settings-button.react.js b/native/chat/thread-settings-button.react.js --- a/native/chat/thread-settings-button.react.js +++ b/native/chat/thread-settings-button.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { ChatNavigationProp } from './chat.react.js'; import Button from '../components/button.react.js'; @@ -19,7 +19,7 @@ }; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +navigate: $PropertyType, 'navigate'>, }; type Props = { diff --git a/native/chat/thread-settings-header-title.react.js b/native/chat/thread-settings-header-title.react.js --- a/native/chat/thread-settings-header-title.react.js +++ b/native/chat/thread-settings-header-title.react.js @@ -5,12 +5,12 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import { firstLine } from 'lib/utils/string-utils.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ...HeaderTitleInputProps, }; function ThreadSettingsHeaderTitle(props: Props): React.Node { diff --git a/native/chat/toggle-pin-modal.react.js b/native/chat/toggle-pin-modal.react.js --- a/native/chat/toggle-pin-modal.react.js +++ b/native/chat/toggle-pin-modal.react.js @@ -9,7 +9,7 @@ toggleMessagePinActionTypes, } from 'lib/actions/message-actions.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import MessageResult from './message-result.react.js'; @@ -22,7 +22,7 @@ export type TogglePinModalParams = { +item: ChatMessageInfoItemWithHeight, - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type TogglePinModalProps = { diff --git a/native/chat/utils.js b/native/chat/utils.js --- a/native/chat/utils.js +++ b/native/chat/utils.js @@ -10,7 +10,7 @@ import { messageKey } from 'lib/shared/message-utils.js'; import { viewerIsMember } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { clusterEndHeight } from './chat-constants.js'; import { ChatContext, useHeightMeasurer } from './chat-context.js'; @@ -103,7 +103,7 @@ messageListVerticalBounds: VerticalBounds, currentInputBarHeight: number, targetInputBarHeight: number, - sidebarThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + sidebarThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): { +position: number, +color: string, diff --git a/native/components/community-actions-button.react.js b/native/components/community-actions-button.react.js --- a/native/components/community-actions-button.react.js +++ b/native/components/community-actions-button.react.js @@ -10,7 +10,7 @@ import { threadHasPermission } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import SWMansionIcon from './swmansion-icon.react.js'; import { @@ -24,7 +24,7 @@ import { useStyles } from '../themes/colors.js'; type Props = { - +community: ThreadInfo | MinimallyEncodedThreadInfo, + +community: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function CommunityActionsButton(props: Props): React.Node { diff --git a/native/components/community-pill.react.js b/native/components/community-pill.react.js --- a/native/components/community-pill.react.js +++ b/native/components/community-pill.react.js @@ -5,7 +5,7 @@ import { useKeyserverAdmin } from 'lib/shared/user-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import CommIcon from './comm-icon.react.js'; import Pill from './pill.react.js'; @@ -15,7 +15,7 @@ const threadPillRoundCorners = { left: false, right: true }; type Props = { - +community: ThreadInfo | MinimallyEncodedThreadInfo, + +community: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function CommunityPill(props: Props): React.Node { const { community } = props; diff --git a/native/components/thread-ancestors-label.react.js b/native/components/thread-ancestors-label.react.js --- a/native/components/thread-ancestors-label.react.js +++ b/native/components/thread-ancestors-label.react.js @@ -6,13 +6,13 @@ import { useAncestorThreads } from 'lib/shared/ancestor-threads.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfos } from 'lib/utils/entity-helpers.js'; import { useColors, useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadAncestorsLabel(props: Props): React.Node { const { threadInfo } = props; diff --git a/native/components/thread-ancestors.react.js b/native/components/thread-ancestors.react.js --- a/native/components/thread-ancestors.react.js +++ b/native/components/thread-ancestors.react.js @@ -7,7 +7,7 @@ import { ancestorThreadInfos } from 'lib/selectors/thread-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import Button from './button.react.js'; import CommunityPill from './community-pill.react.js'; @@ -17,7 +17,7 @@ import { useColors, useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadAncestors(props: Props): React.Node { @@ -25,7 +25,7 @@ const styles = useStyles(unboundStyles); const colors = useColors(); - const ancestorThreads: $ReadOnlyArray = useSelector( + const ancestorThreads: $ReadOnlyArray = useSelector( ancestorThreadInfos(threadInfo.id), ); diff --git a/native/components/thread-list-thread.react.js b/native/components/thread-list-thread.react.js --- a/native/components/thread-list-thread.react.js +++ b/native/components/thread-list-thread.react.js @@ -3,7 +3,10 @@ import * as React from 'react'; import type { MinimallyEncodedResolvedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo, ResolvedThreadInfo } from 'lib/types/thread-types.js'; +import type { + LegacyThreadInfo, + ResolvedThreadInfo, +} from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import Button from './button.react.js'; @@ -34,7 +37,7 @@ }; type BaseProps = { ...SharedProps, - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type Props = { ...SharedProps, diff --git a/native/components/thread-list.react.js b/native/components/thread-list.react.js --- a/native/components/thread-list.react.js +++ b/native/components/thread-list.react.js @@ -7,7 +7,7 @@ import SearchIndex from 'lib/shared/search-index.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import Search from './search.react.js'; import ThreadListThread from './thread-list-thread.react.js'; @@ -26,7 +26,7 @@ }; type BaseProps = { - +threadInfos: $ReadOnlyArray, + +threadInfos: $ReadOnlyArray, +onSelect: (threadID: string) => void, +itemStyle?: ViewStyle, +itemTextStyle?: TextStyle, @@ -50,7 +50,7 @@ }; textInput: ?React.ElementRef; - listDataSelector: PropsAndState => $ReadOnlyArray = + listDataSelector: PropsAndState => $ReadOnlyArray = createSelector( (propsAndState: PropsAndState) => propsAndState.threadInfos, (propsAndState: PropsAndState) => propsAndState.searchText, @@ -58,10 +58,10 @@ (propsAndState: PropsAndState) => propsAndState.itemStyle, (propsAndState: PropsAndState) => propsAndState.itemTextStyle, ( - threadInfos: $ReadOnlyArray, + threadInfos: $ReadOnlyArray, text: string, searchResults: Set, - ): $ReadOnlyArray => + ): $ReadOnlyArray => text ? threadInfos.filter(threadInfo => searchResults.has(threadInfo.id)) : // We spread to make sure the result of this selector updates when @@ -69,7 +69,7 @@ [...threadInfos], ); - get listData(): $ReadOnlyArray { + get listData(): $ReadOnlyArray { return this.listDataSelector({ ...this.props, ...this.state }); } @@ -103,12 +103,12 @@ } static keyExtractor = ( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): string => { return threadInfo.id; }; - renderItem = (row: { +item: ThreadInfo, ... }): React.Node => { + renderItem = (row: { +item: LegacyThreadInfo, ... }): React.Node => { return ( , + data: ?$ReadOnlyArray, index: number, ): { length: number, offset: number, index: number } => { return { length: 24, offset: 24 * index, index }; diff --git a/native/components/thread-pill.react.js b/native/components/thread-pill.react.js --- a/native/components/thread-pill.react.js +++ b/native/components/thread-pill.react.js @@ -3,13 +3,13 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import Pill from './pill.react.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +roundCorners?: { +left: boolean, +right: boolean }, +fontSize?: number, }; diff --git a/native/input/input-state-container.react.js b/native/input/input-state-container.react.js --- a/native/input/input-state-container.react.js +++ b/native/input/input-state-container.react.js @@ -82,7 +82,7 @@ import { type ClientNewThreadRequest, type NewThreadResult, - type ThreadInfo, + type LegacyThreadInfo, } from 'lib/types/thread-types.js'; import { type DispatchActionPromise, @@ -176,7 +176,7 @@ pendingThreadCreations: Map> = new Map(); pendingThreadUpdateHandlers: Map< string, - (ThreadInfo | MinimallyEncodedThreadInfo) => mixed, + (LegacyThreadInfo | MinimallyEncodedThreadInfo) => mixed, > = new Map(); // TODO: flip the switch // Note that this enables Blob service for encrypted media only @@ -449,8 +449,8 @@ sendTextMessage = async ( messageInfo: RawTextMessageInfo, - inputThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + inputThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => { this.sendCallbacks.forEach(callback => callback()); @@ -547,7 +547,7 @@ }; startThreadCreation( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): Promise { if (!threadIsPending(threadInfo.id)) { return Promise.resolve(threadInfo.id); @@ -570,8 +570,8 @@ async sendTextMessageAction( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): Promise { try { await this.props.textMessageCreationSideEffectsFunc( @@ -609,14 +609,14 @@ } shouldEncryptMedia( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): boolean { return threadInfoInsideCommunity(threadInfo, commStaffCommunity.id); } sendMultimediaMessage = async ( selections: $ReadOnlyArray, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => { this.sendCallbacks.forEach(callback => callback()); const localMessageID = this.props.nextLocalID; @@ -717,7 +717,7 @@ async uploadFiles( localMessageID: string, uploadFileInputs: $ReadOnlyArray, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) { const results = await Promise.all( uploadFileInputs.map(uploadFileInput => @@ -733,7 +733,7 @@ async uploadFile( localMessageID: string, uploadFileInput: UploadFileInput, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): Promise { const { ids, selection } = uploadFileInput; const { localMediaID } = ids; @@ -1343,8 +1343,8 @@ retryTextMessage = async ( rawMessageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => { await this.sendTextMessage( { @@ -1359,7 +1359,7 @@ retryMultimediaMessage = async ( rawMessageInfo: RawMultimediaMessageInfo, localMessageID: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): Promise => { const pendingUploads = this.state.pendingUploads[localMessageID] ?? {}; @@ -1573,8 +1573,8 @@ retryMessage = async ( localMessageID: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => { this.sendCallbacks.forEach(callback => callback()); @@ -1673,7 +1673,7 @@ setPendingThreadUpdateHandler = ( threadID: string, pendingThreadUpdateHandler: ?( - ThreadInfo | MinimallyEncodedThreadInfo, + LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => mixed, ) => { if (!pendingThreadUpdateHandler) { diff --git a/native/input/input-state.js b/native/input/input-state.js --- a/native/input/input-state.js +++ b/native/input/input-state.js @@ -5,7 +5,7 @@ import type { NativeMediaSelection } from 'lib/types/media-types.js'; import type { RawTextMessageInfo } from 'lib/types/messages/text.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; export type MultimediaProcessingStep = 'transcoding' | 'uploading'; @@ -32,12 +32,12 @@ +pendingUploads: PendingMultimediaUploads, +sendTextMessage: ( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => Promise, +sendMultimediaMessage: ( selections: $ReadOnlyArray, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => Promise, +editInputMessage: (params: EditInputBarMessageParameters) => void, +addEditInputMessageListener: ( @@ -49,8 +49,8 @@ +messageHasUploadFailure: (localMessageID: string) => boolean, +retryMessage: ( localMessageID: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => Promise, +registerSendCallback: (() => void) => void, +unregisterSendCallback: (() => void) => void, @@ -59,7 +59,7 @@ +setPendingThreadUpdateHandler: ( threadID: string, pendingThreadUpdateHandler: ?( - ThreadInfo | MinimallyEncodedThreadInfo, + LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => mixed, ) => void, +scrollToMessage: (messageKey: string) => void, diff --git a/native/invite-links/manage-public-link-screen.react.js b/native/invite-links/manage-public-link-screen.react.js --- a/native/invite-links/manage-public-link-screen.react.js +++ b/native/invite-links/manage-public-link-screen.react.js @@ -11,7 +11,7 @@ inviteLinkErrorMessages, } from 'lib/shared/invite-links.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import Button from '../components/button.react.js'; import TextInput from '../components/text-input.react.js'; @@ -22,7 +22,7 @@ import Alert from '../utils/alert.js'; export type ManagePublicLinkScreenParams = { - +community: ThreadInfo | MinimallyEncodedThreadInfo, + +community: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/native/invite-links/view-invite-links-screen.react.js b/native/invite-links/view-invite-links-screen.react.js --- a/native/invite-links/view-invite-links-screen.react.js +++ b/native/invite-links/view-invite-links-screen.react.js @@ -11,7 +11,7 @@ import type { InviteLink } from 'lib/types/link-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import SingleLine from '../components/single-line.react.js'; import SWMansionIcon from '../components/swmansion-icon.react.js'; @@ -25,7 +25,7 @@ import { useStyles, useColors } from '../themes/colors.js'; export type ViewInviteLinksScreenParams = { - +community: ThreadInfo | MinimallyEncodedThreadInfo, + +community: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/native/keyboard/keyboard-input-host.react.js b/native/keyboard/keyboard-input-host.react.js --- a/native/keyboard/keyboard-input-host.react.js +++ b/native/keyboard/keyboard-input-host.react.js @@ -6,7 +6,7 @@ import { KeyboardAccessoryView } from 'react-native-keyboard-input'; import type { MediaLibrarySelection } from 'lib/types/media-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type KeyboardState, KeyboardContext } from './keyboard-state.js'; import { type InputState, InputStateContext } from '../input/input-state.js'; @@ -75,7 +75,7 @@ keyboardName: string, result: { +selections: $ReadOnlyArray, - +threadInfo: ?ThreadInfo, + +threadInfo: ?LegacyThreadInfo, }, ) => { const { keyboardState } = this.props; diff --git a/native/keyboard/keyboard-state-container.react.js b/native/keyboard/keyboard-state-container.react.js --- a/native/keyboard/keyboard-state-container.react.js +++ b/native/keyboard/keyboard-state-container.react.js @@ -5,7 +5,7 @@ import { KeyboardUtils } from 'react-native-keyboard-input'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import sleep from 'lib/utils/sleep.js'; import KeyboardInputHost from './keyboard-input-host.react.js'; @@ -24,7 +24,7 @@ type State = { +systemKeyboardShowing: boolean, +mediaGalleryOpen: boolean, - +mediaGalleryThread: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +mediaGalleryThread: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +renderKeyboardInputHost: boolean, }; class KeyboardStateContainer extends React.PureComponent { @@ -94,13 +94,14 @@ return systemKeyboardShowing || mediaGalleryOpen; } - showMediaGallery: (thread: ThreadInfo | MinimallyEncodedThreadInfo) => void = - (thread: ThreadInfo | MinimallyEncodedThreadInfo) => { - this.setState({ - mediaGalleryOpen: true, - mediaGalleryThread: thread, - }); - }; + showMediaGallery: ( + thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, + ) => void = (thread: LegacyThreadInfo | MinimallyEncodedThreadInfo) => { + this.setState({ + mediaGalleryOpen: true, + mediaGalleryThread: thread, + }); + }; hideMediaGallery: () => void = () => { this.setState({ @@ -110,8 +111,8 @@ }); }; - getMediaGalleryThread: () => ?ThreadInfo | ?MinimallyEncodedThreadInfo = () => - this.state.mediaGalleryThread; + getMediaGalleryThread: () => ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo = + () => this.state.mediaGalleryThread; render(): React.Node { const { systemKeyboardShowing, mediaGalleryOpen, renderKeyboardInputHost } = diff --git a/native/keyboard/keyboard-state.js b/native/keyboard/keyboard-state.js --- a/native/keyboard/keyboard-state.js +++ b/native/keyboard/keyboard-state.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; export type KeyboardState = { +keyboardShowing: boolean, @@ -11,9 +11,11 @@ +dismissKeyboardIfShowing: () => boolean, +systemKeyboardShowing: boolean, +mediaGalleryOpen: boolean, - +showMediaGallery: (thread: ThreadInfo | MinimallyEncodedThreadInfo) => void, + +showMediaGallery: ( + thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, + ) => void, +hideMediaGallery: () => void, - +getMediaGalleryThread: () => ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +getMediaGalleryThread: () => ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; const KeyboardContext: React.Context = 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 @@ -9,7 +9,7 @@ import { chatMentionRegex } from 'lib/shared/mention-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ChatMentionCandidates, RelativeMemberInfo, } from 'lib/types/thread-types.js'; @@ -360,7 +360,7 @@ }); function useTextMessageRulesFunc( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, chatMentionCandidates: ChatMentionCandidates, ): (useDarkStyle: boolean) => MarkdownRules { const { members } = threadInfo; diff --git a/native/media/chat-camera-modal.react.js b/native/media/chat-camera-modal.react.js --- a/native/media/chat-camera-modal.react.js +++ b/native/media/chat-camera-modal.react.js @@ -5,7 +5,7 @@ import type { PhotoCapture } from 'lib/types/media-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import CameraModal from './camera-modal.react.js'; import { InputStateContext } from '../input/input-state.js'; @@ -14,7 +14,7 @@ export type ChatCameraModalParams = { +presentedFrom: string, - +thread: ThreadInfo | MinimallyEncodedThreadInfo, + +thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/native/media/media-gallery-keyboard.react.js b/native/media/media-gallery-keyboard.react.js --- a/native/media/media-gallery-keyboard.react.js +++ b/native/media/media-gallery-keyboard.react.js @@ -23,7 +23,7 @@ import { useIsAppForegrounded } from 'lib/shared/lifecycle-utils.js'; import type { MediaLibrarySelection } from 'lib/types/media-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { getCompatibleMediaURI } from './identifier-utils.js'; import MediaGalleryMedia from './media-gallery-media.react.js'; @@ -103,7 +103,7 @@ }; type BaseProps = { - +threadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; type Props = { ...BaseProps, diff --git a/native/navigation/nav-selectors.js b/native/navigation/nav-selectors.js --- a/native/navigation/nav-selectors.js +++ b/native/navigation/nav-selectors.js @@ -17,7 +17,7 @@ } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { GlobalTheme } from 'lib/types/theme-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { NavContextType } from './navigation-context.js'; import { NavContext } from './navigation-context.js'; @@ -404,7 +404,7 @@ } function useCanEditMessageNative( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, targetMessageInfo: ComposableMessageInfo | RobotextMessageInfo, ): boolean { const route = useRoute(); diff --git a/native/navigation/subchannels-button.react.js b/native/navigation/subchannels-button.react.js --- a/native/navigation/subchannels-button.react.js +++ b/native/navigation/subchannels-button.react.js @@ -6,13 +6,13 @@ import { TouchableOpacity, Text, View } from 'react-native'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { SubchannelsListModalRouteName } from './route-names.js'; import { useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function SubchnnelsButton(props: Props): React.Node { diff --git a/native/push/push-handler.react.js b/native/push/push-handler.react.js --- a/native/push/push-handler.react.js +++ b/native/push/push-handler.react.js @@ -31,7 +31,7 @@ import type { Dispatch } from 'lib/types/redux-types.js'; import { type ConnectionInfo } from 'lib/types/socket-types.js'; import type { GlobalTheme } from 'lib/types/theme-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise, type DispatchActionPromise, @@ -104,7 +104,7 @@ +deviceTokens: { +[keyserverID: string]: ?string, }, - +threadInfos: { +[id: string]: ThreadInfo }, + +threadInfos: { +[id: string]: LegacyThreadInfo }, +notifPermissionAlertInfo: NotifPermissionAlertInfo, +connection: ConnectionInfo, +updatesCurrentAsOf: number, @@ -521,7 +521,7 @@ ); } - navigateToThread(threadInfo: ThreadInfo, clearChatRoutes: boolean) { + navigateToThread(threadInfo: LegacyThreadInfo, clearChatRoutes: boolean) { if (clearChatRoutes) { this.props.navigation.dispatch({ type: replaceWithThreadActionType, 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 @@ -13,7 +13,10 @@ import { roleIsAdminRole } from 'lib/shared/thread-utils.js'; import type { LoadingStatus } from 'lib/types/loading-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 { + RelativeMemberInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import { values } from 'lib/utils/objects.js'; import ChangeRolesHeaderRightButton from './change-roles-header-right-button.react.js'; @@ -25,7 +28,7 @@ import { useStyles } from '../themes/colors.js'; export type ChangeRolesScreenParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +memberInfo: RelativeMemberInfo, +role: ?string, }; diff --git a/native/roles/community-roles-screen.react.js b/native/roles/community-roles-screen.react.js --- a/native/roles/community-roles-screen.react.js +++ b/native/roles/community-roles-screen.react.js @@ -9,7 +9,7 @@ useRoleMemberCountsForCommunity, useRoleUserSurfacedPermissions, } from 'lib/shared/thread-utils.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import RolePanelEntry from './role-panel-entry.react.js'; import type { RolesNavigationProp } from './roles-navigator.react.js'; @@ -20,7 +20,7 @@ import { useStyles } from '../themes/colors.js'; export type CommunityRolesScreenParams = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; type CommunityRolesScreenProps = { @@ -37,7 +37,7 @@ // manually pull in the threadInfo from the redux store, since the threadInfo // passed into the route params will not be updated automatically. const threadID = threadInfo.id; - const reduxThreadInfo: ?ThreadInfo = useSelector( + const reduxThreadInfo: ?LegacyThreadInfo = useSelector( state => threadInfoSelector(state)[threadID], ); diff --git a/native/roles/create-roles-screen.react.js b/native/roles/create-roles-screen.react.js --- a/native/roles/create-roles-screen.react.js +++ b/native/roles/create-roles-screen.react.js @@ -13,7 +13,7 @@ type UserSurfacedPermission, userSurfacedPermissionOptions, } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import CreateRolesHeaderRightButton from './create-roles-header-right-button.react.js'; import type { RolesNavigationProp } from './roles-navigator.react.js'; @@ -25,7 +25,7 @@ import { useStyles } from '../themes/colors.js'; export type CreateRolesScreenParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +action: 'create_role' | 'edit_role', +existingRoleID?: string, +roleName: string, diff --git a/native/roles/role-panel-entry.react.js b/native/roles/role-panel-entry.react.js --- a/native/roles/role-panel-entry.react.js +++ b/native/roles/role-panel-entry.react.js @@ -8,7 +8,7 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { UserSurfacedPermission } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDisplayDeleteRoleAlert } from './role-utils.react.js'; import type { RolesNavigationProp } from './roles-navigator.react.js'; @@ -20,7 +20,7 @@ type RolePanelEntryProps = { +navigation: RolesNavigationProp<'CommunityRolesScreen'>, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +roleName: string, +rolePermissions: $ReadOnlySet, +memberCount: number, diff --git a/native/roles/role-utils.react.js b/native/roles/role-utils.react.js --- a/native/roles/role-utils.react.js +++ b/native/roles/role-utils.react.js @@ -7,14 +7,14 @@ deleteCommunityRoleActionTypes, } from 'lib/actions/thread-actions.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { constructRoleDeletionMessagePrompt } from 'lib/utils/role-utils.js'; import Alert from '../utils/alert.js'; function useDisplayDeleteRoleAlert( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, existingRoleID: string, defaultRoleID: string, memberCount: number, diff --git a/native/search/message-search.react.js b/native/search/message-search.react.js --- a/native/search/message-search.react.js +++ b/native/search/message-search.react.js @@ -13,7 +13,7 @@ } from 'lib/shared/search-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import SearchFooter from './search-footer.react.js'; import { MessageSearchContext } from './search-provider.react.js'; @@ -29,7 +29,7 @@ import type { VerticalBounds } from '../types/layout-types.js'; export type MessageSearchParams = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; export type MessageSearchProps = { diff --git a/native/search/search-messages-button.react.js b/native/search/search-messages-button.react.js --- a/native/search/search-messages-button.react.js +++ b/native/search/search-messages-button.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { ChatNavigationProp } from '../chat/chat.react.js'; import Button from '../components/button.react.js'; @@ -12,7 +12,7 @@ import { useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +navigate: $PropertyType, 'navigate'>, }; diff --git a/native/selectors/calendar-selectors.js b/native/selectors/calendar-selectors.js --- a/native/selectors/calendar-selectors.js +++ b/native/selectors/calendar-selectors.js @@ -8,7 +8,7 @@ } from 'lib/selectors/thread-selectors.js'; import { isLoggedIn } from 'lib/selectors/user-selectors.js'; import type { EntryInfo } from 'lib/types/entry-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { dateString } from 'lib/utils/date-utils.js'; import type { AppState } from '../redux/state-types.js'; @@ -32,7 +32,7 @@ | { itemType: 'entryInfo', entryInfo: EntryInfo, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, }; const calendarListData: (state: AppState) => ?(CalendarItem[]) = createSelector( @@ -42,7 +42,7 @@ ( loggedIn: boolean, daysToEntries: { +[dayString: string]: EntryInfo[] }, - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, ) => { if (!loggedIn || daysToEntries[dateString(new Date())] === undefined) { return null; diff --git a/native/types/chat-types.js b/native/types/chat-types.js --- a/native/types/chat-types.js +++ b/native/types/chat-types.js @@ -8,7 +8,7 @@ } from 'lib/types/message-types.js'; import type { TextMessageInfo } from 'lib/types/messages/text.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { EntityText } from 'lib/utils/entity-text.js'; import type { MessagePendingUploads } from '../input/input-state.js'; @@ -17,12 +17,12 @@ +itemType: 'message', +messageShapeType: 'robotext', +messageInfo: RobotextMessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +startsConversation: boolean, +startsCluster: boolean, +endsCluster: boolean, +robotext: EntityText, - +threadCreatedFromMessage: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadCreatedFromMessage: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +contentHeight: number, +reactions: ReactionInfo, }; @@ -32,12 +32,12 @@ +messageShapeType: 'text', +messageInfo: TextMessageInfo, +localMessageInfo: ?LocalMessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +startsConversation: boolean, +startsCluster: boolean, +endsCluster: boolean, +contentHeight: number, - +threadCreatedFromMessage: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadCreatedFromMessage: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, +hasBeenEdited: ?boolean, +isPinned: ?boolean, @@ -57,11 +57,11 @@ +messageShapeType: 'multimedia', +messageInfo: MultimediaMessageInfo, +localMessageInfo: ?LocalMessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +startsConversation: boolean, +startsCluster: boolean, +endsCluster: boolean, - +threadCreatedFromMessage: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadCreatedFromMessage: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +pendingUploads: ?MessagePendingUploads, +reactions: ReactionInfo, +hasBeenEdited: ?boolean, diff --git a/native/user-profile/user-profile-menu-button.react.js b/native/user-profile/user-profile-menu-button.react.js --- a/native/user-profile/user-profile-menu-button.react.js +++ b/native/user-profile/user-profile-menu-button.react.js @@ -8,7 +8,7 @@ import { useRelationshipPrompt } from 'lib/hooks/relationship-prompt.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types'; import { userProfileMenuButtonHeight } from './user-profile-constants.js'; @@ -22,7 +22,7 @@ const onMenuButtonLayout = () => {}; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +pendingPersonalThreadUserInfo: ?UserInfo, }; diff --git a/native/user-profile/user-profile-message-button.react.js b/native/user-profile/user-profile-message-button.react.js --- a/native/user-profile/user-profile-message-button.react.js +++ b/native/user-profile/user-profile-message-button.react.js @@ -4,7 +4,7 @@ import * as React from 'react'; import { Text } from 'react-native'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types'; import { useNavigateToThread } from '../chat/message-list-types.js'; @@ -13,7 +13,7 @@ import { useStyles } from '../themes/colors.js'; type Props = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +pendingPersonalThreadUserInfo?: UserInfo, }; diff --git a/native/user-profile/user-profile-relationship-button.react.js b/native/user-profile/user-profile-relationship-button.react.js --- a/native/user-profile/user-profile-relationship-button.react.js +++ b/native/user-profile/user-profile-relationship-button.react.js @@ -7,7 +7,7 @@ import type { SetState } from 'lib/types/hook-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { UserInfo } from 'lib/types/user-types'; import { userProfileActionButtonHeight } from './user-profile-constants.js'; @@ -20,7 +20,7 @@ }; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +pendingPersonalThreadUserInfo?: UserInfo, +setUserProfileRelationshipButtonHeight: SetState, }; diff --git a/native/utils/drawer-utils.react.js b/native/utils/drawer-utils.react.js --- a/native/utils/drawer-utils.react.js +++ b/native/utils/drawer-utils.react.js @@ -2,13 +2,13 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypeIsCommunityRoot } from 'lib/types/thread-types-enum.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { CommunityDrawerItemData } from 'lib/utils/drawer-utils.react.js'; import type { TextStyle } from '../types/styles.js'; export type CommunityDrawerItemDataFlattened = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +hasSubchannelsButton: boolean, +labelStyle: TextStyle, +hasChildren: boolean, diff --git a/web/avatars/edit-thread-avatar-menu.react.js b/web/avatars/edit-thread-avatar-menu.react.js --- a/web/avatars/edit-thread-avatar-menu.react.js +++ b/web/avatars/edit-thread-avatar-menu.react.js @@ -7,7 +7,10 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RawThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import { useUploadAvatarMedia } from './avatar-hooks.react.js'; import css from './edit-avatar-menu.css'; @@ -23,7 +26,7 @@ ); type Props = { - +threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function EditThreadAvatarMenu(props: Props): React.Node { const { threadInfo } = props; diff --git a/web/avatars/edit-thread-avatar.react.js b/web/avatars/edit-thread-avatar.react.js --- a/web/avatars/edit-thread-avatar.react.js +++ b/web/avatars/edit-thread-avatar.react.js @@ -7,14 +7,17 @@ import { threadHasPermission } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RawThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import EditThreadAvatarMenu from './edit-thread-avatar-menu.react.js'; import css from './edit-thread-avatar.css'; import ThreadAvatar from './thread-avatar.react.js'; type Props = { - +threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, +disabled?: boolean, }; function EditThreadAvatar(props: Props): React.Node { diff --git a/web/avatars/thread-avatar.react.js b/web/avatars/thread-avatar.react.js --- a/web/avatars/thread-avatar.react.js +++ b/web/avatars/thread-avatar.react.js @@ -10,13 +10,16 @@ import type { AvatarSize } from 'lib/types/avatar-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import type { ThreadInfo, RawThreadInfo } from 'lib/types/thread-types.js'; +import type { + LegacyThreadInfo, + RawThreadInfo, +} from 'lib/types/thread-types.js'; import Avatar from './avatar.react.js'; import { useSelector } from '../redux/redux-utils.js'; type Props = { - +threadInfo: RawThreadInfo | ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: RawThreadInfo | LegacyThreadInfo | MinimallyEncodedThreadInfo, +size: AvatarSize, +showSpinner?: boolean, }; diff --git a/web/avatars/thread-emoji-avatar-selection-modal.react.js b/web/avatars/thread-emoji-avatar-selection-modal.react.js --- a/web/avatars/thread-emoji-avatar-selection-modal.react.js +++ b/web/avatars/thread-emoji-avatar-selection-modal.react.js @@ -13,12 +13,15 @@ ClientEmojiAvatar, } from 'lib/types/avatar-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { RawThreadInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RawThreadInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import EmojiAvatarSelectionModal from './emoji-avatar-selection-modal.react.js'; type Props = { - +threadInfo: ThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | RawThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadEmojiAvatarSelectionModal(props: Props): React.Node { diff --git a/web/calendar/day.react.js b/web/calendar/day.react.js --- a/web/calendar/day.react.js +++ b/web/calendar/day.react.js @@ -18,7 +18,7 @@ import type { EntryInfo } from 'lib/types/entry-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { Dispatch } from 'lib/types/redux-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { dateString, dateFromString } from 'lib/utils/date-utils.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; @@ -39,7 +39,9 @@ }; type Props = { ...BaseProps, - +onScreenThreadInfos: $ReadOnlyArray, + +onScreenThreadInfos: $ReadOnlyArray< + LegacyThreadInfo | MinimallyEncodedThreadInfo, + >, +viewerID: ?string, +loggedIn: boolean, +nextLocalID: number, diff --git a/web/chat/chat-input-bar.react.js b/web/chat/chat-input-bar.react.js --- a/web/chat/chat-input-bar.react.js +++ b/web/chat/chat-input-bar.react.js @@ -39,7 +39,7 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type ClientThreadJoinRequest, type ThreadJoinPayload, } from 'lib/types/thread-types.js'; @@ -68,7 +68,7 @@ } from '../utils/typeahead-utils.js'; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +inputState: InputState, }; type Props = { @@ -84,7 +84,7 @@ +joinThread: (request: ClientThreadJoinRequest) => Promise, +typeaheadMatchedStrings: ?TypeaheadMatchedStrings, +suggestions: $ReadOnlyArray, - +parentThreadInfo: ?ThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo, }; class ChatInputBar extends React.PureComponent { diff --git a/web/chat/chat-message-list.react.js b/web/chat/chat-message-list.react.js --- a/web/chat/chat-message-list.react.js +++ b/web/chat/chat-message-list.react.js @@ -28,7 +28,7 @@ import type { FetchMessageInfosPayload } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { type DispatchActionPromise, useDispatchActionPromise, @@ -56,7 +56,7 @@ const editBoxTopMargin = 10; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { diff --git a/web/chat/chat-thread-list-item-menu.react.js b/web/chat/chat-thread-list-item-menu.react.js --- a/web/chat/chat-thread-list-item-menu.react.js +++ b/web/chat/chat-thread-list-item-menu.react.js @@ -6,14 +6,14 @@ import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import useToggleUnreadStatus from 'lib/hooks/toggle-unread-status.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-thread-list-item-menu.css'; import Button from '../components/button.react.js'; import { useThreadIsActive } from '../selectors/thread-selectors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +mostRecentNonLocalMessage: ?string, +renderStyle?: 'chat' | 'thread', }; diff --git a/web/chat/chat-thread-list-see-more-sidebars.react.js b/web/chat/chat-thread-list-see-more-sidebars.react.js --- a/web/chat/chat-thread-list-see-more-sidebars.react.js +++ b/web/chat/chat-thread-list-see-more-sidebars.react.js @@ -6,13 +6,13 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-thread-list.css'; import SidebarsModal from '../modals/threads/sidebars/sidebars-modal.react.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +unread: boolean, }; function ChatThreadListSeeMoreSidebars(props: Props): React.Node { diff --git a/web/chat/composed-message.react.js b/web/chat/composed-message.react.js --- a/web/chat/composed-message.react.js +++ b/web/chat/composed-message.react.js @@ -13,7 +13,7 @@ import { getMessageLabel } from 'lib/shared/edit-messages-utils.js'; import { assertComposableMessageType } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { getComposedMessageID } from './chat-constants.js'; import css from './chat-message-list.css'; @@ -51,7 +51,7 @@ type BaseProps = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +shouldDisplayPinIndicator: boolean, +sendFailed: boolean, +children: React.Node, diff --git a/web/chat/edit-message-provider.js b/web/chat/edit-message-provider.js --- a/web/chat/edit-message-provider.js +++ b/web/chat/edit-message-provider.js @@ -6,7 +6,7 @@ import ModalOverlay from 'lib/components/modal-overlay.react.js'; import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types'; +import type { LegacyThreadInfo } from 'lib/types/thread-types'; import { EditTextMessage } from './edit-text-message.react.js'; @@ -19,7 +19,7 @@ export type EditState = { +messageInfo: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +editedMessageDraft: ?string, +isError: boolean, +position?: ModalPosition, diff --git a/web/chat/edit-text-message.react.js b/web/chat/edit-text-message.react.js --- a/web/chat/edit-text-message.react.js +++ b/web/chat/edit-text-message.react.js @@ -9,7 +9,7 @@ import { useEditMessage } from 'lib/shared/edit-messages-utils.js'; import { trimMessage } from 'lib/shared/message-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { editBoxBottomRowHeight } from './chat-constants.js'; import ChatInputTextArea from './chat-input-text-area.react.js'; @@ -21,7 +21,7 @@ type Props = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +background: boolean, }; diff --git a/web/chat/failed-send.react.js b/web/chat/failed-send.react.js --- a/web/chat/failed-send.react.js +++ b/web/chat/failed-send.react.js @@ -12,7 +12,7 @@ assertComposableMessageType, } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-message-list.css'; import multimediaMessageSendFailed from './multimedia-message-send-failed.js'; @@ -23,13 +23,13 @@ type BaseProps = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; type Props = { ...BaseProps, +rawMessageInfo: RawComposableMessageInfo, +inputState: ?InputState, - +parentThreadInfo: ?ThreadInfo, + +parentThreadInfo: ?LegacyThreadInfo, }; class FailedSend extends React.PureComponent { retryingText = false; diff --git a/web/chat/inline-engagement.react.js b/web/chat/inline-engagement.react.js --- a/web/chat/inline-engagement.react.js +++ b/web/chat/inline-engagement.react.js @@ -8,7 +8,7 @@ import { getInlineEngagementSidebarText } from 'lib/shared/inline-engagement-utils.js'; import type { MessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './inline-engagement.css'; import ReactionPill from './reaction-pill.react.js'; @@ -17,8 +17,8 @@ type Props = { +messageInfo: MessageInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +sidebarThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + +sidebarThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, +reactions: ReactionInfo, +positioning: 'left' | 'center' | 'right', +label?: ?string, diff --git a/web/chat/message-preview.react.js b/web/chat/message-preview.react.js --- a/web/chat/message-preview.react.js +++ b/web/chat/message-preview.react.js @@ -7,14 +7,14 @@ import { useThreadChatMentionCandidates } from 'lib/hooks/chat-mention-hooks.js'; import { useMessagePreview } from 'lib/shared/message-utils.js'; import { type MessageInfo } from 'lib/types/message-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-thread-list.css'; import { getDefaultTextMessageRules } from '../markdown/rules.react.js'; type Props = { +messageInfo: ?MessageInfo, - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; function MessagePreview(props: Props): React.Node { const { messageInfo, threadInfo } = props; diff --git a/web/chat/message-tooltip.react.js b/web/chat/message-tooltip.react.js --- a/web/chat/message-tooltip.react.js +++ b/web/chat/message-tooltip.react.js @@ -8,7 +8,7 @@ import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import { useNextLocalID } from 'lib/shared/message-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { tooltipButtonStyle, @@ -33,7 +33,7 @@ +tooltipPositionStyle: TooltipPositionStyle, +tooltipSize: TooltipSize, +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function MessageTooltip(props: MessageTooltipProps): React.Node { const { diff --git a/web/chat/message.react.js b/web/chat/message.react.js --- a/web/chat/message.react.js +++ b/web/chat/message.react.js @@ -6,7 +6,7 @@ import { type ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import css from './chat-message-list.css'; @@ -18,7 +18,7 @@ type Props = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +shouldDisplayPinIndicator: boolean, }; function Message(props: Props): React.Node { diff --git a/web/chat/multimedia-message.react.js b/web/chat/multimedia-message.react.js --- a/web/chat/multimedia-message.react.js +++ b/web/chat/multimedia-message.react.js @@ -10,7 +10,7 @@ import { type ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-message-list.css'; import ComposedMessage from './composed-message.react.js'; @@ -19,7 +19,7 @@ import Multimedia from '../media/multimedia.react.js'; type BaseProps = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +shouldDisplayPinIndicator: boolean, }; type Props = { diff --git a/web/chat/relationship-prompt/relationship-prompt.js b/web/chat/relationship-prompt/relationship-prompt.js --- a/web/chat/relationship-prompt/relationship-prompt.js +++ b/web/chat/relationship-prompt/relationship-prompt.js @@ -11,13 +11,13 @@ import { useRelationshipPrompt } from 'lib/hooks/relationship-prompt.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import RelationshipPromptButtonContainer from './relationship-prompt-button-container.js'; import RelationshipPromptButton from './relationship-prompt-button.js'; import { buttonThemes } from '../../components/button.react.js'; -type Props = { +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo }; +type Props = { +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo }; function RelationshipPrompt(props: Props) { const { threadInfo } = props; diff --git a/web/chat/robotext-message.react.js b/web/chat/robotext-message.react.js --- a/web/chat/robotext-message.react.js +++ b/web/chat/robotext-message.react.js @@ -7,7 +7,7 @@ import { threadInfoSelector } from 'lib/selectors/thread-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { Dispatch } from 'lib/types/redux-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { entityTextToReact, useENSNamesForEntityText, @@ -35,7 +35,7 @@ type Props = { +item: RobotextChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function RobotextMessage(props: Props): React.Node { let inlineEngagement; @@ -105,7 +105,7 @@ }; type InnerThreadEntityProps = { ...BaseInnerThreadEntityProps, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +dispatch: Dispatch, }; class InnerThreadEntity extends React.PureComponent { diff --git a/web/chat/text-message.react.js b/web/chat/text-message.react.js --- a/web/chat/text-message.react.js +++ b/web/chat/text-message.react.js @@ -9,7 +9,7 @@ import { onlyEmojiRegex } from 'lib/shared/emojis.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './chat-message-list.css'; import ComposedMessage from './composed-message.react.js'; @@ -19,7 +19,7 @@ type Props = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +shouldDisplayPinIndicator: boolean, }; function TextMessage(props: Props): React.Node { diff --git a/web/chat/thread-menu.react.js b/web/chat/thread-menu.react.js --- a/web/chat/thread-menu.react.js +++ b/web/chat/thread-menu.react.js @@ -18,7 +18,7 @@ import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import css from './thread-menu.css'; @@ -36,7 +36,7 @@ import { useSelector } from '../redux/redux-utils.js'; type ThreadMenuProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadMenu(props: ThreadMenuProps): React.Node { diff --git a/web/chat/thread-top-bar.react.js b/web/chat/thread-top-bar.react.js --- a/web/chat/thread-top-bar.react.js +++ b/web/chat/thread-top-bar.react.js @@ -7,7 +7,7 @@ import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import { threadIsPending } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import ThreadMenu from './thread-menu.react.js'; @@ -19,7 +19,7 @@ import MessageSearchModal from '../modals/search/message-search-modal.react.js'; type ThreadTopBarProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadTopBar(props: ThreadTopBarProps): React.Node { const { threadInfo } = props; diff --git a/web/components/message-result.react.js b/web/components/message-result.react.js --- a/web/components/message-result.react.js +++ b/web/components/message-result.react.js @@ -7,7 +7,7 @@ import { useStringForUser } from 'lib/hooks/ens-cache.js'; import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import css from './message-result.css'; @@ -17,7 +17,7 @@ type MessageResultProps = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +scrollable: boolean, }; diff --git a/web/input/input-state-container.react.js b/web/input/input-state-container.react.js --- a/web/input/input-state-container.react.js +++ b/web/input/input-state-container.react.js @@ -80,7 +80,7 @@ import { type ClientNewThreadRequest, type NewThreadResult, - type ThreadInfo, + type LegacyThreadInfo, } from 'lib/types/thread-types.js'; import { type DispatchActionPromise, @@ -420,7 +420,7 @@ return rawMessageInfo; } - shouldEncryptMedia(threadInfo: ThreadInfo): boolean { + shouldEncryptMedia(threadInfo: LegacyThreadInfo): boolean { return threadInfoInsideCommunity(threadInfo, commStaffCommunity.id); } @@ -567,7 +567,7 @@ } startThreadCreation( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): Promise { if (!threadIsPending(threadInfo.id)) { return Promise.resolve(threadInfo.id); @@ -629,20 +629,20 @@ draft: draft ?? '', textCursorPosition: textCursorPosition ?? 0, appendFiles: ( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, files: $ReadOnlyArray, ) => this.appendFiles(threadInfo, files), cancelPendingUpload: (localUploadID: string) => this.cancelPendingUpload(threadID, localUploadID), sendTextMessage: ( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo, - parentThreadInfo: ?ThreadInfo, + threadInfo: LegacyThreadInfo, + parentThreadInfo: ?LegacyThreadInfo, ) => this.sendTextMessage(messageInfo, threadInfo, parentThreadInfo), createMultimediaMessage: ( localID: number, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ) => this.createMultimediaMessage(localID, threadInfo), setDraft: (newDraft: string) => this.setDraft(threadID, newDraft), setTextCursorPosition: (newPosition: number) => @@ -651,7 +651,7 @@ this.messageHasUploadFailure(assignedUploads[localMessageID]), retryMultimediaMessage: ( localMessageID: string, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, ) => this.retryMultimediaMessage( localMessageID, @@ -690,7 +690,7 @@ } async appendFiles( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, files: $ReadOnlyArray, ): Promise { const selectionTime = Date.now(); @@ -747,7 +747,7 @@ } async appendFile( - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, file: File, selectTime: number, ): Promise<{ @@ -1244,8 +1244,8 @@ async sendTextMessage( messageInfo: RawTextMessageInfo, - inputThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + inputThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) { this.props.sendCallbacks.forEach(callback => callback()); @@ -1342,8 +1342,8 @@ async sendTextMessageAction( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): Promise { try { await this.props.textMessageCreationSideEffectsFunc( @@ -1382,7 +1382,7 @@ // Creates a MultimediaMessage from the unassigned pending uploads, // if there are any - createMultimediaMessage(localID: number, threadInfo: ThreadInfo) { + createMultimediaMessage(localID: number, threadInfo: LegacyThreadInfo) { this.props.sendCallbacks.forEach(callback => callback()); const localMessageID = `${localIDPrefix}${localID}`; @@ -1503,7 +1503,7 @@ retryMultimediaMessage( localMessageID: string, - threadInfo: ThreadInfo, + threadInfo: LegacyThreadInfo, pendingUploads: ?$ReadOnlyArray, ) { this.props.sendCallbacks.forEach(callback => callback()); 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 @@ -11,7 +11,7 @@ import type { RawTextMessageInfo } from 'lib/types/messages/text.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ChatMentionCandidates, RelativeMemberInfo, } from 'lib/types/thread-types.js'; @@ -64,25 +64,25 @@ +draft: string, +textCursorPosition: number, +appendFiles: ( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, files: $ReadOnlyArray, ) => Promise, +cancelPendingUpload: (localUploadID: string) => void, +sendTextMessage: ( messageInfo: RawTextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - parentThreadInfo: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + parentThreadInfo: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ) => Promise, +createMultimediaMessage: ( localID: number, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => void, +setDraft: (draft: string) => void, +setTextCursorPosition: (newPosition: number) => void, +messageHasUploadFailure: (localMessageID: string) => boolean, +retryMultimediaMessage: ( localMessageID: string, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ) => void, +addReply: (text: string) => void, +addReplyListener: ((message: string) => void) => void, diff --git a/web/invite-links/manage/edit-link-modal.react.js b/web/invite-links/manage/edit-link-modal.react.js --- a/web/invite-links/manage/edit-link-modal.react.js +++ b/web/invite-links/manage/edit-link-modal.react.js @@ -12,7 +12,7 @@ } from 'lib/shared/invite-links.js'; import type { InviteLink } from 'lib/types/link-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './manage-invite-links-modal.css'; import Button from '../../components/button.react.js'; @@ -23,7 +23,7 @@ +inviteLink: ?InviteLink, +enterViewMode: () => mixed, +enterDisableMode: () => mixed, - +community: ThreadInfo | MinimallyEncodedThreadInfo, + +community: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const disableButtonColor = { 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 @@ -8,7 +8,7 @@ import { chatMentionRegex } from 'lib/shared/mention-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, ChatMentionCandidates, RelativeMemberInfo, } from 'lib/types/thread-types.js'; @@ -166,7 +166,7 @@ }); function useTextMessageRulesFunc( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, chatMentionCandidates: ChatMentionCandidates, ): boolean => MarkdownRules { const { members } = threadInfo; diff --git a/web/modals/chat/message-results-modal.react.js b/web/modals/chat/message-results-modal.react.js --- a/web/modals/chat/message-results-modal.react.js +++ b/web/modals/chat/message-results-modal.react.js @@ -19,7 +19,7 @@ } from 'lib/shared/message-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import css from './message-results-modal.css'; @@ -29,7 +29,7 @@ import Modal from '../modal.react.js'; type MessageResultsModalProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +modalName: string, }; diff --git a/web/modals/chat/sidebar-promote-modal.react.js b/web/modals/chat/sidebar-promote-modal.react.js --- a/web/modals/chat/sidebar-promote-modal.react.js +++ b/web/modals/chat/sidebar-promote-modal.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import css from './sidebar-promote-modal.css'; @@ -13,7 +13,7 @@ type Props = { +onClose: () => void, +onConfirm: () => void, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function SidebarPromoteModal(props: Props): React.Node { diff --git a/web/modals/chat/toggle-pin-modal.react.js b/web/modals/chat/toggle-pin-modal.react.js --- a/web/modals/chat/toggle-pin-modal.react.js +++ b/web/modals/chat/toggle-pin-modal.react.js @@ -12,7 +12,7 @@ import { modifyItemForResultScreen } from 'lib/shared/message-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import css from './toggle-pin-modal.css'; @@ -22,7 +22,7 @@ type TogglePinModalProps = { +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function TogglePinModal(props: TogglePinModalProps): React.Node { diff --git a/web/modals/search/message-search-modal.react.js b/web/modals/search/message-search-modal.react.js --- a/web/modals/search/message-search-modal.react.js +++ b/web/modals/search/message-search-modal.react.js @@ -5,7 +5,7 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import css from './message-search-modal.css'; @@ -19,7 +19,7 @@ import Modal from '../modal.react.js'; type ContentProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function MessageSearchModal(props: ContentProps): React.Node { diff --git a/web/modals/search/message-search-utils.react.js b/web/modals/search/message-search-utils.react.js --- a/web/modals/search/message-search-utils.react.js +++ b/web/modals/search/message-search-utils.react.js @@ -11,12 +11,12 @@ import { filterChatMessageInfosForSearch } from 'lib/shared/search-utils.js'; import type { RawMessageInfo } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useSelector } from '../../redux/redux-utils.js'; function useParseSearchResults( - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, searchResults: $ReadOnlyArray, ): $ReadOnlyArray { const userInfos = useSelector(state => state.userStore.userInfos); diff --git a/web/modals/threads/confirm-leave-thread-modal.react.js b/web/modals/threads/confirm-leave-thread-modal.react.js --- a/web/modals/threads/confirm-leave-thread-modal.react.js +++ b/web/modals/threads/confirm-leave-thread-modal.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import css from './confirm-leave-thread-modal.css'; @@ -11,7 +11,7 @@ import Modal from '../modal.react.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +onClose: () => void, +onConfirm: () => void, }; diff --git a/web/modals/threads/create/compose-subchannel-modal.react.js b/web/modals/threads/create/compose-subchannel-modal.react.js --- a/web/modals/threads/create/compose-subchannel-modal.react.js +++ b/web/modals/threads/create/compose-subchannel-modal.react.js @@ -9,7 +9,7 @@ import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; @@ -27,7 +27,7 @@ type Props = { +onClose: () => void, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; const getThreadType = (visibility: VisibilityType, announcement: boolean) => { 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 @@ -5,7 +5,10 @@ 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 { RelativeMemberInfo, ThreadInfo } from 'lib/types/thread-types.js'; +import type { + RelativeMemberInfo, + LegacyThreadInfo, +} from 'lib/types/thread-types.js'; import type { UserListItem } from 'lib/types/user-types.js'; import { useSelector } from '../../../../redux/redux-utils.js'; @@ -14,8 +17,8 @@ type Props = { +searchText: string, +searchResult: $ReadOnlySet, - +communityThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +communityThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +selectedUsers: $ReadOnlySet, +toggleUserSelection: (userID: string) => void, }; diff --git a/web/modals/threads/create/steps/subchannel-members.react.js b/web/modals/threads/create/steps/subchannel-members.react.js --- a/web/modals/threads/create/steps/subchannel-members.react.js +++ b/web/modals/threads/create/steps/subchannel-members.react.js @@ -5,7 +5,7 @@ import { userStoreSearchIndex } from 'lib/selectors/user-selectors.js'; import { useAncestorThreads } from 'lib/shared/ancestor-threads.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import MembersList from './subchannel-members-list.react.js'; import css from './subchannel-members.css'; @@ -13,7 +13,7 @@ import { useSelector } from '../../../../redux/redux-utils.js'; type SubchannelMembersProps = { - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +selectedUsers: $ReadOnlySet, +searchText: string, +setSearchText: string => void, diff --git a/web/modals/threads/gallery/thread-settings-media-gallery.react.js b/web/modals/threads/gallery/thread-settings-media-gallery.react.js --- a/web/modals/threads/gallery/thread-settings-media-gallery.react.js +++ b/web/modals/threads/gallery/thread-settings-media-gallery.react.js @@ -11,7 +11,7 @@ } from 'lib/media/media-utils.js'; import type { Media } from 'lib/types/media-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import GalleryItem from './thread-settings-media-gallery-item.react.js'; import css from './thread-settings-media-gallery.css'; @@ -23,7 +23,7 @@ type ThreadSettingsMediaGalleryModalProps = { +onClose: () => void, - +parentThreadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +parentThreadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +limit: number, +activeTab: MediaGalleryTab, }; 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 @@ -12,7 +12,10 @@ 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 { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types'; +import type { + LegacyThreadInfo, + RelativeMemberInfo, +} from 'lib/types/thread-types'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { values } from 'lib/utils/objects.js'; @@ -26,7 +29,7 @@ type ChangeMemberRoleModalProps = { +memberInfo: RelativeMemberInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ChangeMemberRoleModal(props: ChangeMemberRoleModalProps): React.Node { 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 @@ -12,7 +12,10 @@ 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 { ThreadInfo, RelativeMemberInfo } from 'lib/types/thread-types.js'; +import type { + LegacyThreadInfo, + RelativeMemberInfo, +} from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { useRolesFromCommunityThreadInfo } from 'lib/utils/role-utils.js'; @@ -29,7 +32,7 @@ type Props = { +memberInfo: RelativeMemberInfo, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | 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 @@ -9,7 +9,7 @@ import { stringForUser } from 'lib/shared/user-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { - type ThreadInfo, + type LegacyThreadInfo, type RelativeMemberInfo, } from 'lib/types/thread-types.js'; @@ -17,7 +17,7 @@ import css from './members-modal.css'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +threadMembers: $ReadOnlyArray, }; diff --git a/web/modals/threads/settings/thread-settings-delete-confirmation-modal.react.js b/web/modals/threads/settings/thread-settings-delete-confirmation-modal.react.js --- a/web/modals/threads/settings/thread-settings-delete-confirmation-modal.react.js +++ b/web/modals/threads/settings/thread-settings-delete-confirmation-modal.react.js @@ -5,14 +5,14 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import { getThreadsToDeleteText } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types'; +import type { LegacyThreadInfo } from 'lib/types/thread-types'; import css from './thread-settings-delete-confirmation-modal.css'; import Button from '../../../components/button.react.js'; import Modal from '../../modal.react.js'; type BaseProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +onConfirmation: () => mixed, }; diff --git a/web/modals/threads/settings/thread-settings-delete-tab.react.js b/web/modals/threads/settings/thread-settings-delete-tab.react.js --- a/web/modals/threads/settings/thread-settings-delete-tab.react.js +++ b/web/modals/threads/settings/thread-settings-delete-tab.react.js @@ -11,7 +11,7 @@ import { containedThreadInfos } from 'lib/selectors/thread-selectors.js'; import { type SetState } from 'lib/types/hook-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import SubmitSection from './submit-section.react.js'; @@ -22,7 +22,7 @@ type ThreadSettingsDeleteTabProps = { +threadSettingsOperationInProgress: boolean, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +setErrorMessage: SetState, +errorMessage?: ?string, }; diff --git a/web/modals/threads/settings/thread-settings-general-tab.react.js b/web/modals/threads/settings/thread-settings-general-tab.react.js --- a/web/modals/threads/settings/thread-settings-general-tab.react.js +++ b/web/modals/threads/settings/thread-settings-general-tab.react.js @@ -11,7 +11,10 @@ import { type SetState } from 'lib/types/hook-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import { type ThreadInfo, type ThreadChanges } from 'lib/types/thread-types.js'; +import { + type LegacyThreadInfo, + type ThreadChanges, +} from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { firstLine } from 'lib/utils/string-utils.js'; import { chatNameMaxLength } from 'lib/utils/validation-utils.js'; @@ -25,7 +28,7 @@ type ThreadSettingsGeneralTabProps = { +threadSettingsOperationInProgress: boolean, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +threadNamePlaceholder: string, +queuedChanges: ThreadChanges, +setQueuedChanges: SetState, diff --git a/web/modals/threads/settings/thread-settings-modal.react.js b/web/modals/threads/settings/thread-settings-modal.react.js --- a/web/modals/threads/settings/thread-settings-modal.react.js +++ b/web/modals/threads/settings/thread-settings-modal.react.js @@ -20,7 +20,10 @@ import type { RelationshipButton } from 'lib/types/relationship-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo, type ThreadChanges } from 'lib/types/thread-types.js'; +import { + type LegacyThreadInfo, + type ThreadChanges, +} from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import ThreadSettingsDeleteTab from './thread-settings-delete-tab.react.js'; @@ -51,7 +54,7 @@ deleteThreadLoadingStatusSelector(state) === 'loading' || changeThreadSettingsLoadingStatusSelector(state) === 'loading', ); - const threadInfo: ?ThreadInfo = useSelector( + const threadInfo: ?LegacyThreadInfo = useSelector( state => threadInfoSelector(state)[props.threadID], ); const modalContext = useModalContext(); @@ -98,7 +101,7 @@ const hasPermissionForTab = React.useCallback( // ESLint doesn't recognize that invariant always throws // eslint-disable-next-line consistent-return - (thread: ThreadInfo | MinimallyEncodedThreadInfo, tab: TabType) => { + (thread: LegacyThreadInfo | MinimallyEncodedThreadInfo, tab: TabType) => { if (tab === 'general') { return ( threadHasPermission(thread, threadPermissions.EDIT_THREAD_NAME) || diff --git a/web/modals/threads/settings/thread-settings-privacy-tab.react.js b/web/modals/threads/settings/thread-settings-privacy-tab.react.js --- a/web/modals/threads/settings/thread-settings-privacy-tab.react.js +++ b/web/modals/threads/settings/thread-settings-privacy-tab.react.js @@ -12,7 +12,10 @@ import { type SetState } from 'lib/types/hook-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo, type ThreadChanges } from 'lib/types/thread-types.js'; +import { + type LegacyThreadInfo, + type ThreadChanges, +} from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import SubmitSection from './submit-section.react.js'; @@ -39,7 +42,7 @@ type ThreadSettingsPrivacyTabProps = { +threadSettingsOperationInProgress: boolean, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, +queuedChanges: ThreadChanges, +setQueuedChanges: SetState, +setErrorMessage: SetState, diff --git a/web/modals/threads/thread-picker-modal.react.js b/web/modals/threads/thread-picker-modal.react.js --- a/web/modals/threads/thread-picker-modal.react.js +++ b/web/modals/threads/thread-picker-modal.react.js @@ -5,7 +5,7 @@ import { useGlobalThreadSearchIndex } from 'lib/selectors/nav-selectors.js'; import { onScreenEntryEditableThreadInfos } from 'lib/selectors/thread-selectors.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import css from './thread-picker-modal.css'; @@ -16,7 +16,7 @@ import Modal, { type ModalOverridableProps } from '../modal.react.js'; type OptionProps = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +createNewEntry: (threadID: string) => void, +onCloseModal: () => void, }; diff --git a/web/modals/user-profile/user-profile-action-buttons.react.js b/web/modals/user-profile/user-profile-action-buttons.react.js --- a/web/modals/user-profile/user-profile-action-buttons.react.js +++ b/web/modals/user-profile/user-profile-action-buttons.react.js @@ -5,7 +5,7 @@ import { useRelationshipPrompt } from 'lib/hooks/relationship-prompt.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types'; +import type { LegacyThreadInfo } from 'lib/types/thread-types'; import UserProfileMessageButton from './user-profile-message-button.react.js'; import css from './user-profile.css'; @@ -13,7 +13,7 @@ import { buttonThemes } from '../../components/button.react.js'; type Props = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, }; function UserProfileActionButtons(props: Props): React.Node { diff --git a/web/modals/user-profile/user-profile-menu.react.js b/web/modals/user-profile/user-profile-menu.react.js --- a/web/modals/user-profile/user-profile-menu.react.js +++ b/web/modals/user-profile/user-profile-menu.react.js @@ -8,7 +8,7 @@ import { useRelationshipPrompt } from 'lib/hooks/relationship-prompt.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from 'lib/types/relationship-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types'; +import type { LegacyThreadInfo } from 'lib/types/thread-types'; import MenuItem from '../../components/menu-item.react.js'; import Menu from '../../components/menu.react.js'; @@ -22,7 +22,7 @@ const unblockIcon = ; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function UserProfileMenu(props: Props): React.Node { diff --git a/web/modals/user-profile/user-profile-message-button.react.js b/web/modals/user-profile/user-profile-message-button.react.js --- a/web/modals/user-profile/user-profile-message-button.react.js +++ b/web/modals/user-profile/user-profile-message-button.react.js @@ -5,14 +5,14 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './user-profile.css'; import Button from '../../components/button.react.js'; import { useOnClickThread } from '../../selectors/thread-selectors.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function UserProfileMessageButton(props: Props): React.Node { diff --git a/web/navigation-panels/chat-thread-ancestors.react.js b/web/navigation-panels/chat-thread-ancestors.react.js --- a/web/navigation-panels/chat-thread-ancestors.react.js +++ b/web/navigation-panels/chat-thread-ancestors.react.js @@ -6,13 +6,13 @@ import { useAncestorThreads } from 'lib/shared/ancestor-threads.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useResolvedThreadInfo } from 'lib/utils/entity-helpers.js'; import css from './chat-thread-ancestors.css'; type ThreadAncestorsProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ThreadAncestors(props: ThreadAncestorsProps): React.Node { const { threadInfo } = props; diff --git a/web/navigation-panels/nav-state-info-bar.react.js b/web/navigation-panels/nav-state-info-bar.react.js --- a/web/navigation-panels/nav-state-info-bar.react.js +++ b/web/navigation-panels/nav-state-info-bar.react.js @@ -4,14 +4,14 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import ThreadAncestors from './chat-thread-ancestors.react.js'; import css from './nav-state-info-bar.css'; import ThreadAvatar from '../avatars/thread-avatar.react.js'; type NavStateInfoBarProps = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function NavStateInfoBar(props: NavStateInfoBarProps): React.Node { const { threadInfo } = props; @@ -27,7 +27,7 @@ } type PossiblyEmptyNavStateInfoBarProps = { - +threadInfoInput: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + +threadInfoInput: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, }; function PossiblyEmptyNavStateInfoBar( props: PossiblyEmptyNavStateInfoBarProps, diff --git a/web/roles/community-roles-modal.react.js b/web/roles/community-roles-modal.react.js --- a/web/roles/community-roles-modal.react.js +++ b/web/roles/community-roles-modal.react.js @@ -6,7 +6,7 @@ import { threadInfoSelector } from 'lib/selectors/thread-selectors.js'; import { useRoleMemberCountsForCommunity } from 'lib/shared/thread-utils.js'; import type { UserSurfacedPermission } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './community-roles-modal.css'; import CreateRolesModal from './create-roles-modal.react.js'; @@ -16,16 +16,17 @@ import { useSelector } from '../redux/redux-utils.js'; type CommunityRolesModalProps = { - +community: ThreadInfo, + +community: LegacyThreadInfo, }; function CommunityRolesModal(props: CommunityRolesModalProps): React.Node { const { popModal, pushModal } = useModalContext(); const { community } = props; - const [threadInfo, setThreadInfo] = React.useState(community); + const [threadInfo, setThreadInfo] = + React.useState(community); const threadID = threadInfo.id; - const reduxThreadInfo: ?ThreadInfo = useSelector( + const reduxThreadInfo: ?LegacyThreadInfo = useSelector( state => threadInfoSelector(state)[threadID], ); diff --git a/web/roles/create-roles-modal.react.js b/web/roles/create-roles-modal.react.js --- a/web/roles/create-roles-modal.react.js +++ b/web/roles/create-roles-modal.react.js @@ -17,7 +17,7 @@ userSurfacedPermissionOptions, } from 'lib/types/thread-permission-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, RoleModificationRequest, } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; @@ -37,7 +37,7 @@ ); type CreateRolesModalProps = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +action: 'create_role' | 'edit_role', +existingRoleID?: string, +roleName: string, diff --git a/web/roles/delete-role-modal.react.js b/web/roles/delete-role-modal.react.js --- a/web/roles/delete-role-modal.react.js +++ b/web/roles/delete-role-modal.react.js @@ -10,7 +10,7 @@ import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; import { useRoleMemberCountsForCommunity } from 'lib/shared/thread-utils.js'; import type { LoadingStatus } from 'lib/types/loading-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatchActionPromise } from 'lib/utils/action-utils.js'; import { constructRoleDeletionMessagePrompt } from 'lib/utils/role-utils.js'; @@ -24,7 +24,7 @@ ); type DeleteRoleModalProps = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +defaultRoleID: string, +roleID: string, }; diff --git a/web/roles/role-actions-menu.react.js b/web/roles/role-actions-menu.react.js --- a/web/roles/role-actions-menu.react.js +++ b/web/roles/role-actions-menu.react.js @@ -6,7 +6,7 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import { useRoleUserSurfacedPermissions } from 'lib/shared/thread-utils.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useRoleDeletableAndEditableStatus } from 'lib/utils/role-utils.js'; import CreateRolesModal from './create-roles-modal.react.js'; @@ -18,7 +18,7 @@ const menuIcon = ; type RoleActionsMenuProps = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +roleName: string, }; diff --git a/web/roles/role-panel-entry.react.js b/web/roles/role-panel-entry.react.js --- a/web/roles/role-panel-entry.react.js +++ b/web/roles/role-panel-entry.react.js @@ -2,14 +2,14 @@ import * as React from 'react'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import RoleActionsMenu from './role-actions-menu.react.js'; import css from './role-panel-entry.css'; import CommIcon from '../CommIcon.react.js'; type RolePanelEntryProps = { - +threadInfo: ThreadInfo, + +threadInfo: LegacyThreadInfo, +roleName: string, +memberCount: number, }; diff --git a/web/selectors/calendar-selectors.js b/web/selectors/calendar-selectors.js --- a/web/selectors/calendar-selectors.js +++ b/web/selectors/calendar-selectors.js @@ -9,7 +9,7 @@ import { threadInfoSelector } from 'lib/selectors/thread-selectors.js'; import type SearchIndex from 'lib/shared/search-index.js'; import type { FilterThreadInfo } from 'lib/types/filter-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { filterThreadIDsBelongingToCommunity } from 'lib/utils/drawer-utils.react.js'; import type { AppState } from '../redux/redux-setup.js'; @@ -32,7 +32,7 @@ threadInfoSelector, ( calendarPickedCommunityID: ?string, - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, ) => { if (!calendarPickedCommunityID) { return null; diff --git a/web/selectors/chat-selectors.js b/web/selectors/chat-selectors.js --- a/web/selectors/chat-selectors.js +++ b/web/selectors/chat-selectors.js @@ -14,7 +14,7 @@ } from 'lib/selectors/thread-selectors.js'; import { threadIsPending } from 'lib/shared/thread-utils.js'; import type { MessageStore, MessageInfo } from 'lib/types/message-types.js'; -import type { ThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo, SidebarInfo } from 'lib/types/thread-types.js'; import type { AppState } from '../redux/redux-setup.js'; import { useSelector } from '../redux/redux-utils.js'; @@ -28,11 +28,11 @@ (state: AppState) => state.navInfo.pendingThread, sidebarInfoSelector, ( - threadInfos: { +[id: string]: ThreadInfo }, + threadInfos: { +[id: string]: LegacyThreadInfo }, messageStore: MessageStore, messageInfos: { +[id: string]: ?MessageInfo }, activeChatThreadID: ?string, - pendingThreadInfo: ?ThreadInfo, + pendingThreadInfo: ?LegacyThreadInfo, sidebarInfos: { +[id: string]: $ReadOnlyArray }, ): ?ChatThreadItem => { if (!activeChatThreadID) { @@ -55,7 +55,7 @@ }, ); -function useChatThreadItem(threadInfo: ?ThreadInfo): ?ChatThreadItem { +function useChatThreadItem(threadInfo: ?LegacyThreadInfo): ?ChatThreadItem { const messageInfos = useSelector(messageInfoSelector); const sidebarInfos = useSelector(sidebarInfoSelector); const messageStore = useSelector(state => state.messageStore); diff --git a/web/selectors/thread-selectors.js b/web/selectors/thread-selectors.js --- a/web/selectors/thread-selectors.js +++ b/web/selectors/thread-selectors.js @@ -17,7 +17,7 @@ } from 'lib/types/message-types.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import type { - ThreadInfo, + LegacyThreadInfo, LegacyRawThreadInfos, } from 'lib/types/thread-types.js'; import { values } from 'lib/utils/objects.js'; @@ -29,7 +29,7 @@ import { useSelector } from '../redux/redux-utils.js'; function useOnClickThread( - thread: ?ThreadInfo | ?MinimallyEncodedThreadInfo, + thread: ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo, ): (event: SyntheticEvent) => void { const dispatch = useDispatch(); return React.useCallback( @@ -69,7 +69,7 @@ function useOnClickPendingSidebar( messageInfo: ComposableMessageInfo | RobotextMessageInfo, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): (event: SyntheticEvent) => mixed { const dispatch = useDispatch(); const loggedInUserInfo = useLoggedInUserInfo(); diff --git a/web/sidebar/community-drawer-item-community-handlers.react.js b/web/sidebar/community-drawer-item-community-handlers.react.js --- a/web/sidebar/community-drawer-item-community-handlers.react.js +++ b/web/sidebar/community-drawer-item-community-handlers.react.js @@ -8,7 +8,7 @@ clearChatCommunityFilter, } from 'lib/actions/community-actions.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; import type { CommunityDrawerItemCommunityHandler } from './community-drawer-item-handler.react.js'; @@ -22,7 +22,7 @@ export type HandlerProps = { +setHandler: (handler: CommunityDrawerItemCommunityHandler) => void, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ChatDrawerItemCommunityHandler(props: HandlerProps): React.Node { diff --git a/web/sidebar/community-drawer-item-handlers.react.js b/web/sidebar/community-drawer-item-handlers.react.js --- a/web/sidebar/community-drawer-item-handlers.react.js +++ b/web/sidebar/community-drawer-item-handlers.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { CommunityDrawerItemHandler } from './community-drawer-item-handler.react.js'; import { useCommunityIsPickedCalendar } from '../selectors/calendar-selectors.js'; @@ -15,7 +15,7 @@ export type HandlerProps = { +setHandler: (handler: CommunityDrawerItemHandler) => void, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function ChatDrawerItemHandler(props: HandlerProps): React.Node { diff --git a/web/sidebar/community-drawer-utils.react.js b/web/sidebar/community-drawer-utils.react.js --- a/web/sidebar/community-drawer-utils.react.js +++ b/web/sidebar/community-drawer-utils.react.js @@ -3,7 +3,7 @@ import * as React from 'react'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types'; +import type { LegacyThreadInfo } from 'lib/types/thread-types'; import type { CommunityDrawerItemData } from 'lib/utils/drawer-utils.react'; import css from './community-drawer-item.css'; @@ -28,7 +28,7 @@ hasSubchannelsButton: boolean, itemChildren: $ReadOnlyArray>, paddingLeft: number, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, expandable: boolean, handlerType: NavigationTab, }): React.Node { diff --git a/web/sidebar/subchannels-button.react.js b/web/sidebar/subchannels-button.react.js --- a/web/sidebar/subchannels-button.react.js +++ b/web/sidebar/subchannels-button.react.js @@ -5,14 +5,14 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import css from './subchannels-button.css'; import Button from '../components/button.react.js'; import SubchannelsModal from '../modals/threads/subchannels/subchannels-modal.react.js'; type Props = { - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function SubchannelsButton(props: Props): React.Node { diff --git a/web/types/nav-types.js b/web/types/nav-types.js --- a/web/types/nav-types.js +++ b/web/types/nav-types.js @@ -4,8 +4,8 @@ import { type BaseNavInfo } from 'lib/types/nav-types.js'; import { - type ThreadInfo, - threadInfoValidator, + type LegacyThreadInfo, + legacyThreadInfoValidator, } from 'lib/types/thread-types.js'; import { type AccountUserInfo, @@ -35,7 +35,7 @@ ...$Exact, +tab: NavigationTab, +activeChatThreadID: ?string, - +pendingThread?: ThreadInfo, + +pendingThread?: LegacyThreadInfo, +settingsSection?: NavigationSettingsSection, +selectedUserList?: $ReadOnlyArray, +chatMode?: NavigationChatMode, @@ -48,7 +48,7 @@ endDate: t.String, tab: navigationTabValidator, activeChatThreadID: t.maybe(tID), - pendingThread: t.maybe(threadInfoValidator), + pendingThread: t.maybe(legacyThreadInfoValidator), settingsSection: t.maybe(navigationSettingsSectionValidator), selectedUserList: t.maybe(t.list(accountUserInfoValidator)), chatMode: t.maybe(navigationChatModeValidator), diff --git a/web/utils/thread-utils.js b/web/utils/thread-utils.js --- a/web/utils/thread-utils.js +++ b/web/utils/thread-utils.js @@ -12,7 +12,7 @@ } from 'lib/shared/thread-utils.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; -import { type ThreadInfo } from 'lib/types/thread-types.js'; +import { type LegacyThreadInfo } from 'lib/types/thread-types.js'; import type { AccountUserInfo } from 'lib/types/user-types.js'; import { useSelector } from '../redux/redux-utils.js'; @@ -40,7 +40,7 @@ function useThreadInfoForPossiblyPendingThread( activeChatThreadID: ?string, -): ?ThreadInfo | ?MinimallyEncodedThreadInfo { +): ?LegacyThreadInfo | ?MinimallyEncodedThreadInfo { const { isChatCreation, selectedUserInfos } = useInfosForPendingThread(); const loggedInUserInfo = useLoggedInUserInfo(); diff --git a/web/utils/tooltip-action-utils.js b/web/utils/tooltip-action-utils.js --- a/web/utils/tooltip-action-utils.js +++ b/web/utils/tooltip-action-utils.js @@ -19,7 +19,7 @@ import { messageTypes } from 'lib/types/message-types-enum.js'; import type { MinimallyEncodedThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import type { ThreadInfo } from 'lib/types/thread-types.js'; +import type { LegacyThreadInfo } from 'lib/types/thread-types.js'; import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import { canToggleMessagePin } from 'lib/utils/toggle-pin-utils.js'; @@ -128,7 +128,7 @@ function useMessageTooltipSidebarAction( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?MessageTooltipAction { const { threadCreatedFromMessage, messageInfo } = item; const { popModal } = useModalContext(); @@ -170,7 +170,7 @@ function useMessageTooltipReplyAction( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?MessageTooltipAction { const { messageInfo } = item; const { popModal } = useModalContext(); @@ -235,7 +235,7 @@ function useMessageReactAction( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?MessageTooltipAction { const { messageInfo } = item; @@ -270,7 +270,7 @@ function useMessageTogglePinAction( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?MessageTooltipAction { const { pushModal } = useModalContext(); const { messageInfo, isPinned } = item; @@ -306,7 +306,7 @@ function useMessageEditAction( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): ?MessageTooltipAction { const { messageInfo } = item; @@ -349,7 +349,7 @@ function useMessageTooltipActions( item: ChatMessageInfoItem, - threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, ): $ReadOnlyArray { const sidebarAction = useMessageTooltipSidebarAction(item, threadInfo); const replyAction = useMessageTooltipReplyAction(item, threadInfo); @@ -386,7 +386,7 @@ type UseMessageTooltipArgs = { +availablePositions: $ReadOnlyArray, +item: ChatMessageInfoItem, - +threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, + +threadInfo: LegacyThreadInfo | MinimallyEncodedThreadInfo, }; function useMessageTooltip({