From 91cbd4dc8ad8e9c51d460438ea469fefde02b0ab Mon Sep 17 00:00:00 2001 From: Kerry Date: Fri, 3 Jun 2022 10:28:19 +0200 Subject: [PATCH] hide live location option when composer has relation (#8746) Signed-off-by: Kerry Archibald --- .../views/location/LocationShareMenu.tsx | 14 +++++++++++--- .../views/location/LocationShareMenu-test.tsx | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/components/views/location/LocationShareMenu.tsx b/src/components/views/location/LocationShareMenu.tsx index 795a780237..7b31b45b04 100644 --- a/src/components/views/location/LocationShareMenu.tsx +++ b/src/components/views/location/LocationShareMenu.tsx @@ -38,8 +38,16 @@ type Props = Omit & { relation?: IEventRelation; }; -const getEnabledShareTypes = (): LocationShareType[] => { - const enabledShareTypes = [LocationShareType.Own, LocationShareType.Live]; +const getEnabledShareTypes = (relation): LocationShareType[] => { + const enabledShareTypes = [ + LocationShareType.Own, + ]; + + // live locations cannot have a relation + // hide the option when composer has a relation + if (!relation) { + enabledShareTypes.push(LocationShareType.Live); + } if (SettingsStore.getValue("feature_location_share_pin_drop")) { enabledShareTypes.push(LocationShareType.Pin); @@ -57,7 +65,7 @@ const LocationShareMenu: React.FC = ({ relation, }) => { const matrixClient = useContext(MatrixClientContext); - const enabledShareTypes = getEnabledShareTypes(); + const enabledShareTypes = getEnabledShareTypes(relation); const isLiveShareEnabled = useFeatureEnabled("feature_location_share_live"); const multipleShareTypesEnabled = enabledShareTypes.length > 1; diff --git a/test/components/views/location/LocationShareMenu-test.tsx b/test/components/views/location/LocationShareMenu-test.tsx index eca076d705..3445d49450 100644 --- a/test/components/views/location/LocationShareMenu-test.tsx +++ b/test/components/views/location/LocationShareMenu-test.tsx @@ -16,12 +16,13 @@ limitations under the License. import React from 'react'; import { mount, ReactWrapper } from 'enzyme'; +import { mocked } from 'jest-mock'; import { RoomMember } from 'matrix-js-sdk/src/models/room-member'; import { MatrixClient } from 'matrix-js-sdk/src/client'; -import { mocked } from 'jest-mock'; -import { act } from 'react-dom/test-utils'; -import { M_ASSET, LocationAssetType } from 'matrix-js-sdk/src/@types/location'; +import { RelationType } from 'matrix-js-sdk/src/matrix'; import { logger } from 'matrix-js-sdk/src/logger'; +import { M_ASSET, LocationAssetType } from 'matrix-js-sdk/src/@types/location'; +import { act } from 'react-dom/test-utils'; import LocationShareMenu from '../../../../src/components/views/location/LocationShareMenu'; import MatrixClientContext from '../../../../src/contexts/MatrixClientContext'; @@ -375,6 +376,16 @@ describe('', () => { describe('Live location share', () => { beforeEach(() => enableSettings(["feature_location_share_live"])); + it('does not display live location share option when composer has a relation', () => { + const relation = { + rel_type: RelationType.Thread, + event_id: '12345', + }; + const component = getComponent({ relation }); + + expect(getShareTypeOption(component, LocationShareType.Live).length).toBeFalsy(); + }); + it('creates beacon info event on submission', () => { const onFinished = jest.fn(); const component = getComponent({ onFinished });