mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-09-30 13:09:35 +02:00
Update existing node instead of creating new. DNU ANY COMMIT ON THIS BRANCH PRIOR TO HERE!!!!111!!!1!!
This commit is contained in:
1 parent
45bf73aeee
commit
d9f6c8c8e0
1 file changed
+26
-9
@@ -34,28 +34,45 @@ class Uploader {
|
|||||||
final csId = csResp.body.trim();
|
final csId = csResp.body.trim();
|
||||||
print('Uploader: Created changeset ID: $csId');
|
print('Uploader: Created changeset ID: $csId');
|
||||||
|
|
||||||
// 2. create node
|
// 2. create or update node
|
||||||
// Merge tags: direction in PendingUpload should always be present,
|
|
||||||
// and override any in the profile for upload purposes
|
|
||||||
final mergedTags = Map<String, String>.from(p.profile.tags)
|
final mergedTags = Map<String, String>.from(p.profile.tags)
|
||||||
..['direction'] = p.direction.round().toString();
|
..['direction'] = p.direction.round().toString();
|
||||||
final tagsXml = mergedTags.entries.map((e) =>
|
final tagsXml = mergedTags.entries.map((e) =>
|
||||||
'<tag k="${e.key}" v="${e.value}"/>').join('\n ');
|
'<tag k="${e.key}" v="${e.value}"/>').join('\n ');
|
||||||
final nodeXml = '''
|
|
||||||
|
final http.Response nodeResp;
|
||||||
|
final String nodeId;
|
||||||
|
|
||||||
|
if (p.isEdit) {
|
||||||
|
// Update existing node
|
||||||
|
final nodeXml = '''
|
||||||
|
<osm>
|
||||||
|
<node changeset="$csId" id="${p.originalNodeId}" lat="${p.coord.latitude}" lon="${p.coord.longitude}">
|
||||||
|
$tagsXml
|
||||||
|
</node>
|
||||||
|
</osm>''';
|
||||||
|
print('Uploader: Updating node ${p.originalNodeId}...');
|
||||||
|
nodeResp = await _put('/api/0.6/node/${p.originalNodeId}', nodeXml);
|
||||||
|
nodeId = p.originalNodeId.toString();
|
||||||
|
} else {
|
||||||
|
// Create new node
|
||||||
|
final nodeXml = '''
|
||||||
<osm>
|
<osm>
|
||||||
<node changeset="$csId" lat="${p.coord.latitude}" lon="${p.coord.longitude}">
|
<node changeset="$csId" lat="${p.coord.latitude}" lon="${p.coord.longitude}">
|
||||||
$tagsXml
|
$tagsXml
|
||||||
</node>
|
</node>
|
||||||
</osm>''';
|
</osm>''';
|
||||||
print('Uploader: Creating node...');
|
print('Uploader: Creating new node...');
|
||||||
final nodeResp = await _put('/api/0.6/node/create', nodeXml);
|
nodeResp = await _put('/api/0.6/node/create', nodeXml);
|
||||||
|
nodeId = nodeResp.body.trim();
|
||||||
|
}
|
||||||
|
|
||||||
print('Uploader: Node response: ${nodeResp.statusCode} - ${nodeResp.body}');
|
print('Uploader: Node response: ${nodeResp.statusCode} - ${nodeResp.body}');
|
||||||
if (nodeResp.statusCode != 200) {
|
if (nodeResp.statusCode != 200) {
|
||||||
print('Uploader: Failed to create node');
|
print('Uploader: Failed to ${p.isEdit ? "update" : "create"} node');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final nodeId = nodeResp.body.trim();
|
print('Uploader: ${p.isEdit ? "Updated" : "Created"} node ID: $nodeId');
|
||||||
print('Uploader: Created node ID: $nodeId');
|
|
||||||
|
|
||||||
// 3. close changeset
|
// 3. close changeset
|
||||||
print('Uploader: Closing changeset...');
|
print('Uploader: Closing changeset...');
|
||||||
|
|||||||
Reference in new issue
Block a user