| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | import {Translation} from "../../UI/i18n/Translation"; | 
					
						
							|  |  |  | import {TagsFilter} from "../../Logic/Tags/TagsFilter"; | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | import {DeleteConfigJson} from "./Json/DeleteConfigJson"; | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | import Translations from "../../UI/i18n/Translations"; | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | import {TagUtils} from "../../Logic/Tags/TagUtils"; | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class DeleteConfig { | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  |     public readonly extraDeleteReasons?: { | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  |         explanation: Translation, | 
					
						
							|  |  |  |         changesetMessage: string | 
					
						
							|  |  |  |     }[] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  |     public readonly nonDeleteMappings?: { if: TagsFilter, then: Translation }[] | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  |     public readonly softDeletionTags?: TagsFilter | 
					
						
							|  |  |  |     public readonly neededChangesets?: number | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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 { | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  |                 if: TagUtils.Tag(nonDelete.if, ctx + ".if"), | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  |                 then: Translations.T(nonDelete.then, ctx + ".then") | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-28 15:41:16 +02:00
										 |  |  |         this.softDeletionTags = undefined; | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  |         if (json.softDeletionTags !== undefined) { | 
					
						
							|  |  |  |             this.softDeletionTags = TagUtils.Tag(json.softDeletionTags, `${context}.softDeletionTags`) | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (json["hardDeletionTags"] !== undefined) { | 
					
						
							| 
									
										
										
										
											2021-08-05 16:20:25 +02:00
										 |  |  |             throw `You probably meant 'softDeletionTags' instead of 'hardDeletionTags' (at ${context})` | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  |         this.neededChangesets = json.neededChangesets | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-08-07 23:11:34 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-03 14:35:44 +02:00
										 |  |  | } |