Feature: image upload now uses the indexedDB-backed queue (formerly known as EmergencyBackup), rework (and simplify) counter logic (fix #2186; fix #1942; helps #2022)

This commit is contained in:
Pieter Vander Vennet 2025-04-07 02:53:21 +02:00
parent 55c015ad84
commit 3d3a72a70a
19 changed files with 402 additions and 503 deletions

View file

@ -14,7 +14,6 @@
import LoginButton from "../Base/LoginButton.svelte"
import { Translation } from "../i18n/Translation"
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
import NoteCommentElement from "../Popup/Notes/NoteCommentElement"
import type { Feature } from "geojson"
import Camera from "@babeard/svelte-heroicons/mini/Camera"
@ -38,7 +37,7 @@
let errors = new UIEventSource<Translation[]>([])
async function handleFiles(files: FileList, ignoreGps: boolean = false) {
async function handleFiles(files: FileList, ignoreGPS: boolean = false) {
const errs = []
for (let i = 0; i < files.length; i++) {
const file = files.item(i)
@ -49,31 +48,7 @@
errs.push(canBeUploaded.error)
continue
}
if (layer?.id === "note") {
const uploadResult = await state?.imageUploadManager.uploadImageWithLicense(
tags.data.id,
state.osmConnection.userDetails.data?.name ?? "Anonymous",
file,
"image",
noBlur,
feature,
{
ignoreGps
}
)
if (!uploadResult) {
return
}
const url = uploadResult.absoluteUrl
await state.osmConnection.addCommentToNote(tags.data.id, url)
NoteCommentElement.addCommentTo(url, <UIEventSource<OsmTags>>tags, {
osmConnection: state.osmConnection,
})
return
}
await state?.imageUploadManager?.uploadImageAndApply(file, tags, targetKey, noBlur, feature)
await state?.imageUploadManager?.uploadImageAndApply(file, tags, targetKey, noBlur, feature, { ignoreGPS })
} catch (e) {
console.error(e)
state.reportError(e, "Could not upload image")
@ -100,7 +75,7 @@
<Tr t={error} cls="alert" />
{/each}
<FileSelector
accept="image/*"
accept=".jpg,.jpeg,image/jpeg"
capture="environment"
cls="button border-2 flex flex-col"
multiple={true}