Skip to content

Commit

Permalink
hide live location option when composer has relation (matrix-org#8746)
Browse files Browse the repository at this point in the history
Signed-off-by: Kerry Archibald <kerrya@element.io>
  • Loading branch information
Kerry authored and JanBurp committed Jun 14, 2022
1 parent a45f754 commit 774ea38
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
14 changes: 11 additions & 3 deletions src/components/views/location/LocationShareMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,16 @@ type Props = Omit<ILocationPickerProps, 'onChoose' | 'shareType'> & {
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);
Expand All @@ -57,7 +65,7 @@ const LocationShareMenu: React.FC<Props> = ({
relation,
}) => {
const matrixClient = useContext(MatrixClientContext);
const enabledShareTypes = getEnabledShareTypes();
const enabledShareTypes = getEnabledShareTypes(relation);
const isLiveShareEnabled = useFeatureEnabled("feature_location_share_live");

const multipleShareTypesEnabled = enabledShareTypes.length > 1;
Expand Down
17 changes: 14 additions & 3 deletions test/components/views/location/LocationShareMenu-test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -375,6 +376,16 @@ describe('<LocationShareMenu />', () => {
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 });
Expand Down

0 comments on commit 774ea38

Please sign in to comment.