diff --git a/src/Logic/Osm/OsmConnection.ts b/src/Logic/Osm/OsmConnection.ts index 24f803367..bffd61bf5 100644 --- a/src/Logic/Osm/OsmConnection.ts +++ b/src/Logic/Osm/OsmConnection.ts @@ -146,7 +146,7 @@ export class OsmConnection { this.UpdateCapabilities() this.isLoggedIn = this.userDetails.map( - (user) => user !== undefined && (this.apiIsOnline.data === "unknown" || this.apiIsOnline.data === "online"), + (user) => user !== undefined && this.apiIsOnline.data === "online", [this.apiIsOnline] ) @@ -578,8 +578,10 @@ export class OsmConnection { if (!(this.apiIsOnline.data === "unreachable" || this.apiIsOnline.data === "offline")) { return } + if (!this.isLoggedIn.data) { + return + } try { - console.log("Api is offline - trying to reconnect...") this.AttemptLogin() } catch (e) { console.log("Could not login due to", e) diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts index 4c078c5ca..7a763e346 100644 --- a/src/Models/ThemeConfig/TagRenderingConfig.ts +++ b/src/Models/ThemeConfig/TagRenderingConfig.ts @@ -5,10 +5,7 @@ import { TagUtils } from "../../Logic/Tags/TagUtils" import { And } from "../../Logic/Tags/And" import { Utils } from "../../Utils" import { Tag } from "../../Logic/Tags/Tag" -import { - MappingConfigJson, - QuestionableTagRenderingConfigJson, -} from "./Json/QuestionableTagRenderingConfigJson" +import { MappingConfigJson, QuestionableTagRenderingConfigJson } from "./Json/QuestionableTagRenderingConfigJson" import Validators, { ValidatorType } from "../../UI/InputElement/Validators" import { TagRenderingConfigJson } from "./Json/TagRenderingConfigJson" import { RegexTag } from "../../Logic/Tags/RegexTag" @@ -82,6 +79,7 @@ export default class TagRenderingConfig { public readonly classes: string[] | undefined public readonly onSoftDelete?: ReadonlyArray + public readonly alwaysForceSaveButton: boolean constructor( config: @@ -144,6 +142,7 @@ export default class TagRenderingConfig { this.question = Translations.T(json.question, translationKey + ".question") this.questionhint = Translations.T(json.questionHint, translationKey + ".questionHint") this.questionHintIsMd = json["questionHintIsMd"] ?? false + this.alwaysForceSaveButton = json["#force-save-button"] === "yes" this.description = Translations.T(json.description, translationKey + ".description") if (json.onSoftDelete && !Array.isArray(json.onSoftDelete)) { throw context + ".onSoftDelete Not an array: " + typeof json.onSoftDelete diff --git a/src/UI/BigComponents/MenuDrawer.svelte b/src/UI/BigComponents/MenuDrawer.svelte index 057cdacea..ba8c7079d 100644 --- a/src/UI/BigComponents/MenuDrawer.svelte +++ b/src/UI/BigComponents/MenuDrawer.svelte @@ -124,12 +124,6 @@ - -
- - - -
-
diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte index d12180e54..ea20fb8a7 100644 --- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte @@ -14,7 +14,6 @@ import TagHint from "../TagHint.svelte" import LoginToggle from "../../Base/LoginToggle.svelte" import SubtleButton from "../../Base/SubtleButton.svelte" - import Loading from "../../Base/Loading.svelte" import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte" import { Translation } from "../../i18n/Translation" import Constants from "../../../Models/Constants" @@ -119,7 +118,7 @@ seenFreeforms.push(newProps[confg.freeform.key]) } return matches - }), + }) ] if (tgs !== undefined && confg.freeform) { @@ -227,7 +226,7 @@ freeform: $freeformInput, selectedMapping, checkedMappings, - currentTags: tags.data, + currentTags: tags.data }, " --> ", selectedTags @@ -285,7 +284,7 @@ dispatch("saved", { config, applied: selectedTags }) const change = new ChangeTagAction(tags.data.id, selectedTags, tags.data, { theme: tags.data["_orig_theme"] ?? state.theme.id, - changeType: "answer", + changeType: "answer" }) freeformInput.set(undefined) selectedMapping = undefined @@ -329,7 +328,7 @@ const tagsToSet = settableKeys.data.map((k) => new Tag(k, "")) const change = new ChangeTagAction(tags.data.id, new And(tagsToSet), tags.data, { theme: tags.data["_orig_theme"] ?? state.theme.id, - changeType: "answer", + changeType: "answer" }) freeformInput.set(undefined) selectedMapping = undefined @@ -542,12 +541,25 @@ {/if} - - - state?.osmConnection?.AttemptLogin()}> - - - + +
+ {#if config.alwaysForceSaveButton} + + {:else} + state?.osmConnection?.AttemptLogin()}> + + + + {/if} +
{#if $feedback !== undefined}