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 @@ -12,6 +12,10 @@ import { createSelector } from 'reselect'; import tinycolor from 'tinycolor2'; +import { + fetchPrimaryInviteLinkActionTypes, + useFetchPrimaryInviteLinks, +} from 'lib/actions/link-actions.js'; import { changeThreadMemberRolesActionTypes, changeThreadSettingsActionTypes, @@ -48,6 +52,7 @@ useResolvedOptionalThreadInfos, useResolvedThreadInfo, } from 'lib/utils/entity-helpers.js'; +import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js'; import ThreadSettingsAvatar from './thread-settings-avatar.react.js'; import type { CategoryType } from './thread-settings-category.react.js'; @@ -1310,9 +1315,24 @@ threadPermissions.DELETE_THREAD, ); - const { inviteLink, canManageLinks, canAddMembers } = + const { inviteLink, canManageLinks, canAddMembers, isCommunityRoot } = useAddUsersPermissions(threadInfo); + const callFetchPrimaryLinks = useFetchPrimaryInviteLinks(); + const dispatchActionPromise = useDispatchActionPromise(); + // Because we don't support updates and persistance for invite links, + // we have to fetch them whenever we want to display them. + // Here we need invite links for the "Add users" button in ThreadSettings + React.useEffect(() => { + if (!isCommunityRoot) { + return; + } + void dispatchActionPromise( + fetchPrimaryInviteLinkActionTypes, + callFetchPrimaryLinks(), + ); + }, [callFetchPrimaryLinks, dispatchActionPromise, isCommunityRoot]); + return (