Allow to remove user location setting

Closes #671

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2021-04-16 17:18:41 +02:00
parent 30c81ee3a8
commit 1fff71ee0e
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
4 changed files with 41 additions and 6 deletions

View file

@ -150,7 +150,7 @@ export default class AddressAutoComplete extends Vue {
}
get queryText(): string {
if (this.value) {
if (this.value !== undefined) {
return new Address(this.value).fullName;
}
return this.initialQueryText;

View file

@ -46,6 +46,12 @@
</div>
</template>
</b-autocomplete>
<b-button
:disabled="!queryText"
@click="resetAddress"
class="reset-area"
icon-left="close"
/>
</b-field>
<div class="map" v-if="selected && selected.geom && selected.poiInfos">
<map-leaflet
@ -295,6 +301,12 @@ export default class FullAddressAutoComplete extends Vue {
);
});
}
resetAddress(): void {
this.$emit("input", null);
this.queryText = "";
this.selected = new Address();
}
}
</script>
<style lang="scss">

View file

@ -13,9 +13,9 @@ export interface ICurrentUser {
}
export interface IUserPreferredLocation {
range?: number;
name?: string;
geohash?: string;
range?: number | null;
name?: string | null;
geohash?: string | null;
}
export interface IUserSettings {

View file

@ -80,6 +80,12 @@
</option>
</b-select>
</b-field>
<b-button
:disabled="address == undefined"
@click="resetArea"
class="reset-area"
icon-left="close"
/>
</b-field>
<p>
{{
@ -239,11 +245,11 @@ export default class Preferences extends Vue {
}
}
get locationRange(): number | undefined {
get locationRange(): number | undefined | null {
return this.loggedUser?.settings?.location?.range;
}
set locationRange(locationRange: number | undefined) {
set locationRange(locationRange: number | undefined | null) {
if (locationRange) {
this.updateUserSettings({
location: {
@ -253,6 +259,16 @@ export default class Preferences extends Vue {
}
}
resetArea(): void {
this.updateUserSettings({
location: {
geohash: null,
name: null,
range: null,
},
});
}
private async updateUserSettings(userSettings: IUserSettings) {
await this.$apollo.mutate<{ setUserSetting: string }>({
mutation: SET_USER_SETTINGS,
@ -262,3 +278,10 @@ export default class Preferences extends Vue {
}
}
</script>
<style lang="scss" scoped>
.reset-area {
align-self: center;
position: relative;
top: 10px;
}
</style>