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 @@ -11,8 +11,8 @@ import { usePromoteSidebar } from 'lib/hooks/promote-sidebar.react.js'; import { childThreadInfos } from 'lib/selectors/thread-selectors.js'; import { - threadHasPermission, threadIsChannel, + useThreadHasPermission, viewerIsMember, } from 'lib/shared/thread-utils.js'; import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; @@ -135,9 +135,9 @@ ); }, [hasSidebars, onClickSidebars]); - const canCreateSubchannels = React.useMemo( - () => threadHasPermission(threadInfo, threadPermissions.CREATE_SUBCHANNELS), - [threadInfo], + const canCreateSubchannels = useThreadHasPermission( + threadInfo, + threadPermissions.CREATE_SUBCHANNELS, ); const hasSubchannels = React.useMemo(() => { @@ -214,11 +214,11 @@ [popModal, onConfirmLeaveThread, pushModal, threadInfo], ); + const canLeaveThread = useThreadHasPermission( + threadInfo, + threadPermissions.LEAVE_THREAD, + ); const leaveThreadItem = React.useMemo(() => { - const canLeaveThread = threadHasPermission( - threadInfo, - threadPermissions.LEAVE_THREAD, - ); if (!viewerIsMember(threadInfo) || !canLeaveThread) { return null; } @@ -231,7 +231,7 @@ onClick={onClickLeaveThread} /> ); - }, [onClickLeaveThread, threadInfo]); + }, [onClickLeaveThread, threadInfo, canLeaveThread]); const onClickPromoteSidebarToThread = React.useCallback( () =>