Feature: include username of the person closing a maproulette note

This commit is contained in:
Pieter Vander Vennet 2024-12-11 22:41:33 +01:00
parent c26b9ae7f7
commit b47d0f8c6a
4 changed files with 14 additions and 10 deletions

View file

@ -1,9 +1,12 @@
import Constants from "../Models/Constants"
import { SpecialVisualizationState } from "../UI/SpecialVisualization"
export interface MaprouletteTask {
name: string
description: string
instruction: string
}
export default class Maproulette {
public static readonly defaultEndpoint = "https://maproulette.org/api/v2"
@ -24,7 +27,7 @@ export default class Maproulette {
4: "Deleted",
5: "Already fixed",
6: "Too_Hard",
9: "Disabled",
9: "Disabled"
}
public static singleton = new Maproulette()
/*
@ -78,6 +81,7 @@ export default class Maproulette {
async closeTask(
taskId: number,
status = Maproulette.STATUS_FIXED,
state: SpecialVisualizationState,
options?: {
comment?: string
tags?: string
@ -86,13 +90,16 @@ export default class Maproulette {
}
): Promise<void> {
console.log("Maproulette: setting", `${this.endpoint}/task/${taskId}/${status}`, options)
options ??= {}
const userdetails = state.osmConnection.userDetails.data
options.tags = `MapComplete MapComplete:${state.theme.id}; userid: ${userdetails?.uid}; username: ${userdetails?.name}`
const response = await fetch(`${this.endpoint}/task/${taskId}/${status}`, {
method: "PUT",
headers: {
"Content-Type": "application/json",
apiKey: this.apiKey,
apiKey: this.apiKey
},
body: options !== undefined ? JSON.stringify(options) : undefined,
body: JSON.stringify(options)
})
if (response.status !== 204) {
console.log(`Failed to close task: ${response.status}`)

View file

@ -38,8 +38,7 @@
async function apply() {
const maproulette_id = tags.data[maproulette_id_key] ?? tags.data.mr_taskId ?? tags.data.id
try {
await Maproulette.singleton.closeTask(Number(maproulette_id), Number(statusToSet), {
tags: `MapComplete MapComplete:${state.theme.id}`,
await Maproulette.singleton.closeTask(Number(maproulette_id), Number(statusToSet), state, {
comment: feedback,
})
tags.data["mr_taskStatus"] = Maproulette.STATUS_MEANING[Number(statusToSet)]

View file

@ -19,7 +19,6 @@ export interface PointImportFlowArguments extends ImportFlowArguments {
export class PointImportFlowState extends ImportFlow<PointImportFlowArguments> {
public readonly startCoordinate: [number, number]
private readonly _originalFeature: Feature<Point>
constructor(
state: SpecialVisualizationState,
@ -29,7 +28,6 @@ export class PointImportFlowState extends ImportFlow<PointImportFlowArguments> {
originalFeatureTags: UIEventSource<Record<string, string>>
) {
super(state, args, tagsToApply, originalFeatureTags)
this._originalFeature = originalFeature
this.startCoordinate = GeoOperations.centerpointCoordinates(originalFeature)
}
@ -80,7 +78,7 @@ export class PointImportFlowState extends ImportFlow<PointImportFlowArguments> {
originalFeatureTags.ping()
}
let maproulette_id = originalFeatureTags.data[this.args.maproulette_id]
const maproulette_id = originalFeatureTags.data[this.args.maproulette_id]
if (maproulette_id !== undefined) {
if (this.state.featureSwitchIsTesting.data) {
console.log(
@ -90,7 +88,7 @@ export class PointImportFlowState extends ImportFlow<PointImportFlowArguments> {
)
} else {
console.log("Marking maproulette task as fixed")
await Maproulette.singleton.closeTask(Number(maproulette_id))
await Maproulette.singleton.closeTask(Number(maproulette_id), Maproulette.STATUS_FIXED, this.state)
originalFeatureTags.data["mr_taskStatus"] = "Fixed"
originalFeatureTags.ping()
}

View file

@ -159,7 +159,7 @@ export default class TagApplyButton implements AutoAction, SpecialVisualization
const maproulette_id = tags.data[maproulette_id_key]
const maproulette_feature = state.indexedFeatures.featuresById.data.get(maproulette_id)
const maproulette_task_id = Number(maproulette_feature.properties.mr_taskId)
await Maproulette.singleton.closeTask(maproulette_task_id, Maproulette.STATUS_FIXED, {
await Maproulette.singleton.closeTask(maproulette_task_id, Maproulette.STATUS_FIXED, state, {
comment: "Tags are copied onto " + targetId + " with MapComplete",
})
maproulette_feature.properties["mr_taskStatus"] = "Fixed"