forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {OsmObject} from "../OsmObject";
 | |
| import OsmChangeAction from "./OsmChangeAction";
 | |
| import {Changes} from "../Changes";
 | |
| import {ChangeDescription} from "./ChangeDescription";
 | |
| import ChangeTagAction from "./ChangeTagAction";
 | |
| import {TagsFilter} from "../../Tags/TagsFilter";
 | |
| import {And} from "../../Tags/And";
 | |
| import {Tag} from "../../Tags/Tag";
 | |
| 
 | |
| export default class DeleteAction extends OsmChangeAction {
 | |
| 
 | |
|     private readonly _softDeletionTags: TagsFilter;
 | |
|     private readonly meta: {
 | |
|         theme: string,
 | |
|         specialMotivation: string,
 | |
|         changeType: "deletion"
 | |
|     };
 | |
|     private readonly _id: string;
 | |
|     private _hardDelete: boolean;
 | |
| 
 | |
| 
 | |
|     constructor(id: string,
 | |
|                 softDeletionTags: TagsFilter,
 | |
|                 meta: {
 | |
|                     theme: string,
 | |
|                     specialMotivation: string
 | |
|                 },
 | |
|                 hardDelete: boolean) {
 | |
|         super(id, true)
 | |
|         this._id = id;
 | |
|         this._hardDelete = hardDelete;
 | |
|         this.meta = {...meta, changeType: "deletion"};
 | |
|         this._softDeletionTags = new And([softDeletionTags,
 | |
|             new Tag("fixme", `A mapcomplete user marked this feature to be deleted (${meta.specialMotivation})`)
 | |
|         ]);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public async CreateChangeDescriptions(changes: Changes): Promise<ChangeDescription[]> {
 | |
| 
 | |
|         const osmObject = await OsmObject.DownloadObjectAsync(this._id)
 | |
| 
 | |
|         if (this._hardDelete) {
 | |
|             return [{
 | |
|                 meta: this.meta,
 | |
|                 doDelete: true,
 | |
|                 type: osmObject.type,
 | |
|                 id: osmObject.id,
 | |
|             }]
 | |
|         } else {
 | |
|             return await new ChangeTagAction(
 | |
|                 this._id, this._softDeletionTags, osmObject.tags,
 | |
|                 {
 | |
|                     ...this.meta,
 | |
|                     changeType: "soft-delete"
 | |
|                 }
 | |
|             ).CreateChangeDescriptions(changes)
 | |
|         }
 | |
|     }
 | |
| 
 | |
| } |