forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {Translation} from "../../UI/i18n/Translation";
 | 
						|
import {TagsFilter} from "../../Logic/Tags/TagsFilter";
 | 
						|
import {DeleteConfigJson} from "./Json/DeleteConfigJson";
 | 
						|
import Translations from "../../UI/i18n/Translations";
 | 
						|
import {TagUtils} from "../../Logic/Tags/TagUtils";
 | 
						|
 | 
						|
export default class DeleteConfig {
 | 
						|
    public readonly extraDeleteReasons?: {
 | 
						|
        explanation: Translation,
 | 
						|
        changesetMessage: string
 | 
						|
    }[]
 | 
						|
 | 
						|
    public readonly nonDeleteMappings?: { if: TagsFilter, then: Translation }[]
 | 
						|
 | 
						|
    public readonly softDeletionTags?: TagsFilter
 | 
						|
    public readonly neededChangesets?: number
 | 
						|
 | 
						|
    constructor(json: DeleteConfigJson, context: string) {
 | 
						|
 | 
						|
        this.extraDeleteReasons = json.extraDeleteReasons?.map((reason, i) => {
 | 
						|
            const ctx = `${context}.extraDeleteReasons[${i}]`
 | 
						|
            if ((reason.changesetMessage ?? "").length <= 5) {
 | 
						|
                throw `${ctx}.explanation is too short, needs at least 4 characters`
 | 
						|
            }
 | 
						|
            return {
 | 
						|
                explanation: Translations.T(reason.explanation, ctx + ".explanation"),
 | 
						|
                changesetMessage: reason.changesetMessage
 | 
						|
            }
 | 
						|
        })
 | 
						|
        this.nonDeleteMappings = json.nonDeleteMappings?.map((nonDelete, i) => {
 | 
						|
            const ctx = `${context}.extraDeleteReasons[${i}]`
 | 
						|
            return {
 | 
						|
                if: TagUtils.Tag(nonDelete.if, ctx + ".if"),
 | 
						|
                then: Translations.T(nonDelete.then, ctx + ".then")
 | 
						|
            }
 | 
						|
        })
 | 
						|
 | 
						|
        this.softDeletionTags = undefined;
 | 
						|
        if (json.softDeletionTags !== undefined) {
 | 
						|
            this.softDeletionTags = TagUtils.Tag(json.softDeletionTags, `${context}.softDeletionTags`)
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        if (json["hardDeletionTags"] !== undefined) {
 | 
						|
            throw `You probably meant 'softDeletionTags' instead of 'hardDeletionTags' (at ${context})`
 | 
						|
        }
 | 
						|
        this.neededChangesets = json.neededChangesets
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
} |