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 @@ -162,8 +162,6 @@ let searchComponent = null; if (searching) { const { userInfoInputArray, genesisThreadInfo } = this.props; - // It's technically possible for the client to be missing the Genesis - // ThreadInfo when it first opens up (before the server delivers it) let parentThreadHeader; if (threadTypeIsThick(threadInfo.type)) { parentThreadHeader = ( @@ -175,6 +173,8 @@ /> ); } else if (genesisThreadInfo) { + // It's technically possible for the client to be missing the Genesis + // ThreadInfo when it first opens up (before the server delivers it) parentThreadHeader = ( { - const usersSupportingThickThreads = await checkUsersThickThreadSupport([ - user.id, - ]); + const newUserInfoInputArray = user.id === viewerID ? [] : [user]; + const usersSupportingThickThreads = await checkUsersThickThreadSupport( + newUserInfoInputArray.map(userInfo => userInfo.id), + ); const resolvedThreadInfo = existingThreadInfoFinder({ searching: true, - userInfoInputArray: [user], - allUsersSupportThickThreads: usersSupportingThickThreads.has(user.id), + userInfoInputArray: newUserInfoInputArray, + allUsersSupportThickThreads: + user.id === viewerID + ? true + : usersSupportingThickThreads.has(user.id), }); invariant( resolvedThreadInfo, @@ -398,6 +402,7 @@ }, [ checkUsersThickThreadSupport, + viewerID, editInputMessage, existingThreadInfoFinder, setParams, diff --git a/native/chat/message-list-thread-search.react.js b/native/chat/message-list-thread-search.react.js --- a/native/chat/message-list-thread-search.react.js +++ b/native/chat/message-list-thread-search.react.js @@ -9,6 +9,7 @@ import { createTagInput } from '../components/tag-input.react.js'; import UserList from '../components/user-list.react.js'; +import { useSelector } from '../redux/redux-utils.js'; import { useStyles } from '../themes/colors.js'; const TagInput = createTagInput(); @@ -58,6 +59,7 @@ return [userListItemsArr, nonFriendsSet]; }, [userSearchResults, userInfoInputArray]); + const viewerID = useSelector(state => state.currentUserInfo?.id); const onUserSelect = React.useCallback( async (userInfo: AccountUserInfo) => { for (const existingUserInfo of userInfoInputArray) { @@ -65,7 +67,7 @@ return; } } - if (nonFriends.has(userInfo.id)) { + if (nonFriends.has(userInfo.id) || userInfo.id === viewerID) { await resolveToUser(userInfo); return; } @@ -79,6 +81,7 @@ updateTagInput, resolveToUser, updateUsernameInput, + viewerID, ], ); diff --git a/web/chat/chat-thread-composer.react.js b/web/chat/chat-thread-composer.react.js --- a/web/chat/chat-thread-composer.react.js +++ b/web/chat/chat-thread-composer.react.js @@ -97,19 +97,25 @@ async (userListItem: UserListItem) => { const { alert, notice, disabled, ...user } = userListItem; setUsernameInputText(''); - if (notice === notFriendNotice && userInfoInputArray.length === 0) { - const newUserInfoInputArray = [ - { id: userListItem.id, username: userListItem.username }, - ]; + if ( + (notice === notFriendNotice || user.id === viewerID) && + userInfoInputArray.length === 0 + ) { + const newUserInfo = { + id: userListItem.id, + username: userListItem.username, + }; + const newUserInfoInputArray = user.id === viewerID ? [] : [newUserInfo]; const usersSupportingThickThreads = await checkUsersThickThreadSupport( newUserInfoInputArray.map(userInfo => userInfo.id), ); const threadInfo = existingThreadInfoFinderForCreatingThread({ searching: true, userInfoInputArray: newUserInfoInputArray, - allUsersSupportThickThreads: newUserInfoInputArray.every(userInfo => - usersSupportingThickThreads.has(userInfo.id), - ), + allUsersSupportThickThreads: + user.id === viewerID + ? true + : usersSupportingThickThreads.has(user.id), }); dispatch({ type: updateNavInfoActionType, @@ -133,6 +139,7 @@ [ checkUsersThickThreadSupport, dispatch, + viewerID, existingThreadInfoFinderForCreatingThread, pushModal, userInfoInputArray,