Clean up error listener when location picker closes (#7902)

Signed-off-by: Robin Townsend <robin@robin.town>
pull/21833/head
Robin 2022-02-25 13:21:48 -05:00 committed by GitHub
parent ece2b8572a
commit 4ab59684c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 14 deletions

View File

@ -111,20 +111,7 @@ class LocationPicker extends React.Component<IProps, IState> {
this.geolocate.trigger();
});
this.geolocate.on('error', (e: GeolocationPositionError) => {
this.props.onFinished();
logger.error("Could not fetch location", e);
Modal.createTrackedDialog(
'Could not fetch location',
'',
ErrorDialog,
{
title: _t("Could not fetch location"),
description: positionFailureMessage(e.code),
},
);
});
this.geolocate.on('error', this.onGeolocateError);
this.geolocate.on('geolocate', this.onGeolocate);
} catch (e) {
logger.error("Failed to render map", e);
@ -133,6 +120,7 @@ class LocationPicker extends React.Component<IProps, IState> {
}
componentWillUnmount() {
this.geolocate?.off('error', this.onGeolocateError);
this.geolocate?.off('geolocate', this.onGeolocate);
this.context.off(ClientEvent.ClientWellKnown, this.updateStyleUrl);
}
@ -154,6 +142,20 @@ class LocationPicker extends React.Component<IProps, IState> {
);
};
private onGeolocateError = (e: GeolocationPositionError) => {
this.props.onFinished();
logger.error("Could not fetch location", e);
Modal.createTrackedDialog(
'Could not fetch location',
'',
ErrorDialog,
{
title: _t("Could not fetch location"),
description: positionFailureMessage(e.code),
},
);
};
private onOk = () => {
const position = this.state.position;