LLS: expose way to enable live sharing labs flag from location dialog (#8416)
* add state for waiting for labs flag Signed-off-by: Kerry Archibald <kerrya@element.io> * add enable live share component Signed-off-by: Kerry Archibald <kerrya@element.io> * test enabling live share labs flag Signed-off-by: Kerry Archibald <kerrya@element.io>
This commit is contained in:
parent
45180111d0
commit
699a9aeaaf
7 changed files with 330 additions and 35 deletions
|
@ -27,6 +27,9 @@ import ShareDialogButtons from './ShareDialogButtons';
|
|||
import ShareType from './ShareType';
|
||||
import { LocationShareType } from './shareLocation';
|
||||
import { OwnProfileStore } from '../../../stores/OwnProfileStore';
|
||||
import { EnableLiveShare } from './EnableLiveShare';
|
||||
import { useFeatureEnabled } from '../../../hooks/useSettings';
|
||||
import { SettingLevel } from '../../../settings/SettingLevel';
|
||||
|
||||
type Props = Omit<ILocationPickerProps, 'onChoose' | 'shareType'> & {
|
||||
onFinished: (ev?: SyntheticEvent) => void;
|
||||
|
@ -37,11 +40,7 @@ type Props = Omit<ILocationPickerProps, 'onChoose' | 'shareType'> & {
|
|||
};
|
||||
|
||||
const getEnabledShareTypes = (): LocationShareType[] => {
|
||||
const enabledShareTypes = [LocationShareType.Own];
|
||||
|
||||
if (SettingsStore.getValue("feature_location_share_live")) {
|
||||
enabledShareTypes.push(LocationShareType.Live);
|
||||
}
|
||||
const enabledShareTypes = [LocationShareType.Own, LocationShareType.Live];
|
||||
|
||||
if (SettingsStore.getValue("feature_location_share_pin_drop")) {
|
||||
enabledShareTypes.push(LocationShareType.Pin);
|
||||
|
@ -60,6 +59,7 @@ const LocationShareMenu: React.FC<Props> = ({
|
|||
}) => {
|
||||
const matrixClient = useContext(MatrixClientContext);
|
||||
const enabledShareTypes = getEnabledShareTypes();
|
||||
const isLiveShareEnabled = useFeatureEnabled("feature_location_share_live");
|
||||
|
||||
const multipleShareTypesEnabled = enabledShareTypes.length > 1;
|
||||
|
||||
|
@ -73,19 +73,32 @@ const LocationShareMenu: React.FC<Props> = ({
|
|||
shareLiveLocation(matrixClient, roomId, displayName, openMenu) :
|
||||
shareLocation(matrixClient, roomId, shareType, relation, openMenu);
|
||||
|
||||
const onLiveShareEnableSubmit = () => {
|
||||
SettingsStore.setValue("feature_location_share_live", undefined, SettingLevel.DEVICE, true);
|
||||
};
|
||||
|
||||
const shouldAdvertiseLiveLabsFlag = shareType === LocationShareType.Live && !isLiveShareEnabled;
|
||||
|
||||
return <ContextMenu
|
||||
{...menuPosition}
|
||||
onFinished={onFinished}
|
||||
managed={false}
|
||||
>
|
||||
<div className="mx_LocationShareMenu">
|
||||
{ shareType ?
|
||||
{ shouldAdvertiseLiveLabsFlag &&
|
||||
<EnableLiveShare
|
||||
onSubmit={onLiveShareEnableSubmit}
|
||||
/>
|
||||
}
|
||||
{ !shouldAdvertiseLiveLabsFlag && !!shareType &&
|
||||
<LocationPicker
|
||||
sender={sender}
|
||||
shareType={shareType}
|
||||
onChoose={onLocationSubmit}
|
||||
onFinished={onFinished}
|
||||
/> :
|
||||
/>
|
||||
}
|
||||
{ !shareType &&
|
||||
<ShareType setShareType={setShareType} enabledShareTypes={enabledShareTypes} />
|
||||
}
|
||||
<ShareDialogButtons displayBack={!!shareType && multipleShareTypesEnabled} onBack={() => setShareType(undefined)} onCancel={onFinished} />
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue