Skip to content

Commit

Permalink
Merge pull request #40865 from Expensify/revert-35226-fix/34442
Browse files Browse the repository at this point in the history
[CP Staging] Revert "Implement suggestion for edit composer"

(cherry picked from commit 95aa19a)
  • Loading branch information
danieldoglas authored and OSBotify committed Apr 24, 2024
1 parent 4f2ff72 commit a94f271
Show file tree
Hide file tree
Showing 18 changed files with 21 additions and 340 deletions.
2 changes: 0 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import {WindowDimensionsProvider} from './components/withWindowDimensions';
import Expensify from './Expensify';
import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop';
import OnyxUpdateManager from './libs/actions/OnyxUpdateManager';
import {SuggestionsContextProvider} from './pages/home/report/ReportActionCompose/ComposerWithSuggestionsEdit/SuggestionsContext';
import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsContext';
import type {Route} from './ROUTES';

Expand Down Expand Up @@ -80,7 +79,6 @@ function App({url}: AppProps) {
ActiveElementRoleProvider,
ActiveWorkspaceContextProvider,
PlaybackContextProvider,
SuggestionsContextProvider,
FullScreenContextProvider,
VolumeContextProvider,
VideoPopoverMenuContextProvider,
Expand Down
2 changes: 0 additions & 2 deletions src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ type OnboardingPurposeType = ValueOf<typeof onboardingChoices>;
const CONST = {
MERGED_ACCOUNT_PREFIX: 'MERGED_',
DEFAULT_POLICY_ROOM_CHAT_TYPES: [chatTypes.POLICY_ADMINS, chatTypes.POLICY_ANNOUNCE, chatTypes.DOMAIN_ALL],
DEFAULT_COMPOSER_PORTAL_HOST_NAME: 'suggestions_0',

// Note: Group and Self-DM excluded as these are not tied to a Workspace
WORKSPACE_ROOM_TYPES: [chatTypes.POLICY_ADMINS, chatTypes.POLICY_ANNOUNCE, chatTypes.DOMAIN_ALL, chatTypes.POLICY_ROOM, chatTypes.POLICY_EXPENSE_CHAT],
Expand Down Expand Up @@ -1172,7 +1171,6 @@ const CONST = {
EMOJI_PICKER_HEADER_HEIGHT: 32,
RECIPIENT_LOCAL_TIME_HEIGHT: 25,
AUTO_COMPLETE_SUGGESTER: {
EDIT_SUGGESTER_PADDING: 8,
SUGGESTER_PADDING: 6,
SUGGESTER_INNER_PADDING: 8,
SUGGESTION_ROW_HEIGHT: 40,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import PressableWithFeedback from '@components/Pressable/PressableWithFeedback';
import useStyleUtils from '@hooks/useStyleUtils';
import useThemeStyles from '@hooks/useThemeStyles';
import useWindowDimensions from '@hooks/useWindowDimensions';
import {useSuggestionsContext} from '@pages/home/report/ReportActionCompose/ComposerWithSuggestionsEdit/SuggestionsContext';
import variables from '@styles/variables';
import CONST from '@src/CONST';
import viewForwardedRef from '@src/types/utils/viewForwardedRef';
Expand Down Expand Up @@ -40,7 +39,6 @@ function BaseAutoCompleteSuggestions<TSuggestion>(
suggestions,
isSuggestionPickerLarge,
keyExtractor,
shouldBeDisplayedBelowParentContainer = false,
}: AutoCompleteSuggestionsProps<TSuggestion>,
ref: ForwardedRef<View | HTMLDivElement>,
) {
Expand All @@ -49,7 +47,6 @@ function BaseAutoCompleteSuggestions<TSuggestion>(
const StyleUtils = useStyleUtils();
const rowHeight = useSharedValue(0);
const scrollRef = useRef<FlashList<TSuggestion>>(null);
const {activeID} = useSuggestionsContext();
/**
* Render a suggestion menu item component.
*/
Expand All @@ -71,7 +68,7 @@ function BaseAutoCompleteSuggestions<TSuggestion>(
);

const innerHeight = CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT * suggestions.length;
const animatedStyles = useAnimatedStyle(() => StyleUtils.getAutoCompleteSuggestionContainerStyle(rowHeight.value, shouldBeDisplayedBelowParentContainer, Boolean(activeID)));
const animatedStyles = useAnimatedStyle(() => StyleUtils.getAutoCompleteSuggestionContainerStyle(rowHeight.value));
const estimatedListSize = useMemo(
() => ({
height: CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT * suggestions.length,
Expand Down
5 changes: 1 addition & 4 deletions src/components/AutoCompleteSuggestions/index.native.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import {Portal} from '@gorhom/portal';
import React from 'react';
import {useSuggestionsContext} from '@pages/home/report/ReportActionCompose/ComposerWithSuggestionsEdit/SuggestionsContext';
import CONST from '@src/CONST';
import BaseAutoCompleteSuggestions from './BaseAutoCompleteSuggestions';
import type {AutoCompleteSuggestionsProps} from './types';

function AutoCompleteSuggestions<TSuggestion>({measureParentContainer, ...props}: AutoCompleteSuggestionsProps<TSuggestion>) {
const {activeID} = useSuggestionsContext();
return (
<Portal hostName={activeID ? `suggestions_${activeID}` : CONST.DEFAULT_COMPOSER_PORTAL_HOST_NAME}>
<Portal hostName="suggestions">
{/* eslint-disable-next-line react/jsx-props-no-spreading */}
<BaseAutoCompleteSuggestions<TSuggestion> {...props} />
</Portal>
Expand Down
13 changes: 2 additions & 11 deletions src/components/AutoCompleteSuggestions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import {View} from 'react-native';
import useStyleUtils from '@hooks/useStyleUtils';
import useWindowDimensions from '@hooks/useWindowDimensions';
import * as DeviceCapabilities from '@libs/DeviceCapabilities';
import {measureHeightOfSuggestionsContainer} from '@libs/SuggestionUtils';
import BaseAutoCompleteSuggestions from './BaseAutoCompleteSuggestions';
import type {AutoCompleteSuggestionsProps} from './types';

Expand All @@ -19,13 +18,11 @@ function AutoCompleteSuggestions<TSuggestion>({measureParentContainer = () => {}
const StyleUtils = useStyleUtils();
const containerRef = React.useRef<HTMLDivElement>(null);
const {windowHeight, windowWidth} = useWindowDimensions();
const suggestionsContainerHeight = measureHeightOfSuggestionsContainer(props.suggestions.length, props.isSuggestionPickerLarge);
const [{width, left, bottom}, setContainerState] = React.useState({
width: 0,
left: 0,
bottom: 0,
});
const [shouldShowBelowContainer, setShouldShowBelowContainer] = React.useState(false);
React.useEffect(() => {
const container = containerRef.current;
if (!container) {
Expand All @@ -44,19 +41,13 @@ function AutoCompleteSuggestions<TSuggestion>({measureParentContainer = () => {}
if (!measureParentContainer) {
return;
}

measureParentContainer((x, y, w, h) => {
const currentBottom = y < suggestionsContainerHeight ? windowHeight - y - suggestionsContainerHeight - h : windowHeight - y;
setShouldShowBelowContainer(y < suggestionsContainerHeight);
setContainerState({left: x, bottom: currentBottom, width: w});
});
}, [measureParentContainer, windowHeight, windowWidth, suggestionsContainerHeight]);
measureParentContainer((x, y, w) => setContainerState({left: x, bottom: windowHeight - y, width: w}));
}, [measureParentContainer, windowHeight, windowWidth]);

const componentToRender = (
<BaseAutoCompleteSuggestions<TSuggestion>
// eslint-disable-next-line react/jsx-props-no-spreading
{...props}
shouldBeDisplayedBelowParentContainer={shouldShowBelowContainer}
ref={containerRef}
/>
);
Expand Down
5 changes: 1 addition & 4 deletions src/components/AutoCompleteSuggestions/types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type {ReactElement} from 'react';

type MeasureParentContainerCallback = (x: number, y: number, width: number, height: number) => void;
type MeasureParentContainerCallback = (x: number, y: number, width: number) => void;

type RenderSuggestionMenuItemProps<TSuggestion> = {
item: TSuggestion;
Expand Down Expand Up @@ -33,9 +33,6 @@ type AutoCompleteSuggestionsProps<TSuggestion> = {

/** Meaures the parent container's position and dimensions. */
measureParentContainer?: (callback: MeasureParentContainerCallback) => void;

/** Whether suggestion should be displayed below the parent container or not */
shouldBeDisplayedBelowParentContainer?: boolean;
};

export type {AutoCompleteSuggestionsProps, RenderSuggestionMenuItemProps};
2 changes: 1 addition & 1 deletion src/components/EmojiSuggestions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import getStyledTextArray from '@libs/GetStyledTextArray';
import AutoCompleteSuggestions from './AutoCompleteSuggestions';
import Text from './Text';

type MeasureParentContainerCallback = (x: number, y: number, width: number, height: number) => void;
type MeasureParentContainerCallback = (x: number, y: number, width: number) => void;

type EmojiSuggestionsProps = {
/** The index of the highlighted emoji */
Expand Down
23 changes: 1 addition & 22 deletions src/libs/SuggestionUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,4 @@ function hasEnoughSpaceForLargeSuggestionMenu(listHeight: number, composerHeight
return availableHeight > menuHeight;
}

const measureHeightOfSuggestionsContainer = (numRows: number, isSuggestionsPickerLarge: boolean): number => {
// Autocomplete suggestions has inner padding 8px and border-width 1px
const borderAndPadding = CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTER_INNER_PADDING + 2;
let suggestionsHeight = 0;

if (isSuggestionsPickerLarge) {
if (numRows > CONST.AUTO_COMPLETE_SUGGESTER.MAX_AMOUNT_OF_VISIBLE_SUGGESTIONS_IN_CONTAINER) {
// On large screens, if there are more than 5 suggestions, we display a scrollable window with a height of 5 items, indicating that there are more items available
suggestionsHeight = CONST.AUTO_COMPLETE_SUGGESTER.MAX_AMOUNT_OF_VISIBLE_SUGGESTIONS_IN_CONTAINER * CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT;
} else {
suggestionsHeight = numRows * CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT;
}
} else if (numRows > 2) {
// On small screens, we display a scrollable window with a height of 2.5 items, indicating that there are more items available beyond what is currently visible
suggestionsHeight = CONST.AUTO_COMPLETE_SUGGESTER.SMALL_CONTAINER_HEIGHT_FACTOR * CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT;
} else {
suggestionsHeight = numRows * CONST.AUTO_COMPLETE_SUGGESTER.SUGGESTION_ROW_HEIGHT;
}
return suggestionsHeight + borderAndPadding;
};

export {trimLeadingSpace, hasEnoughSpaceForLargeSuggestionMenu, measureHeightOfSuggestionsContainer};
export {trimLeadingSpace, hasEnoughSpaceForLargeSuggestionMenu};

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ type SuggestionsRef = {
updateShouldShowSuggestionMenuToFalse: (shouldShowSuggestionMenu?: boolean) => void;
setShouldBlockSuggestionCalc: (shouldBlock: boolean) => void;
getSuggestions: () => Mention[] | Emoji[];
updateShouldShowSuggestionMenuAfterScrolling: () => void;
};

type ReportActionComposeOnyxProps = {
Expand Down Expand Up @@ -379,7 +378,7 @@ function ReportActionCompose({
{shouldShowReportRecipientLocalTime && hasReportRecipient && <ParticipantLocalTime participant={reportRecipient} />}
</OfflineWithFeedback>
<View style={isComposerFullSize ? styles.flex1 : {}}>
<PortalHost name={CONST.DEFAULT_COMPOSER_PORTAL_HOST_NAME} />
<PortalHost name="suggestions" />
<OfflineWithFeedback
pendingAction={pendingAction}
style={isComposerFullSize ? styles.chatItemFullComposeRow : {}}
Expand Down
15 changes: 1 addition & 14 deletions src/pages/home/report/ReportActionCompose/SuggestionEmoji.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,6 @@ function SuggestionEmoji(
});
}, []);

const updateShouldShowSuggestionMenuAfterScrolling = useCallback(() => {
setSuggestionValues((prevState) => ({...prevState, shouldShowSuggestionMenu: !!prevState.suggestedEmojis.length}));
}, []);

/**
* Listens for keyboard shortcuts and applies the action
*/
Expand Down Expand Up @@ -219,17 +215,8 @@ function SuggestionEmoji(
setShouldBlockSuggestionCalc,
updateShouldShowSuggestionMenuToFalse,
getSuggestions,
updateShouldShowSuggestionMenuAfterScrolling,
}),
[
onSelectionChange,
resetSuggestions,
setShouldBlockSuggestionCalc,
triggerHotkeyActions,
updateShouldShowSuggestionMenuToFalse,
getSuggestions,
updateShouldShowSuggestionMenuAfterScrolling,
],
[onSelectionChange, resetSuggestions, setShouldBlockSuggestionCalc, triggerHotkeyActions, updateShouldShowSuggestionMenuToFalse, getSuggestions],
);

if (!isEmojiSuggestionsMenuVisible) {
Expand Down
Loading

0 comments on commit a94f271

Please sign in to comment.