72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| // Copyright (c) Solsynth
 | |
| // Sensitive content categories for content warnings, in fixed order.
 | |
| 
 | |
| enum SensitiveCategory {
 | |
|   language,
 | |
|   sexualContent,
 | |
|   violence,
 | |
|   profanity,
 | |
|   hateSpeech,
 | |
|   racism,
 | |
|   adultContent,
 | |
|   drugAbuse,
 | |
|   alcoholAbuse,
 | |
|   gambling,
 | |
|   selfHarm,
 | |
|   childAbuse,
 | |
|   other,
 | |
| }
 | |
| 
 | |
| extension SensitiveCategoryI18n on SensitiveCategory {
 | |
|   /// i18n key to look up localized label
 | |
|   String get i18nKey => switch (this) {
 | |
|     SensitiveCategory.language => 'sensitiveCategories.language',
 | |
|     SensitiveCategory.sexualContent => 'sensitiveCategories.sexualContent',
 | |
|     SensitiveCategory.violence => 'sensitiveCategories.violence',
 | |
|     SensitiveCategory.profanity => 'sensitiveCategories.profanity',
 | |
|     SensitiveCategory.hateSpeech => 'sensitiveCategories.hateSpeech',
 | |
|     SensitiveCategory.racism => 'sensitiveCategories.racism',
 | |
|     SensitiveCategory.adultContent => 'sensitiveCategories.adultContent',
 | |
|     SensitiveCategory.drugAbuse => 'sensitiveCategories.drugAbuse',
 | |
|     SensitiveCategory.alcoholAbuse => 'sensitiveCategories.alcoholAbuse',
 | |
|     SensitiveCategory.gambling => 'sensitiveCategories.gambling',
 | |
|     SensitiveCategory.selfHarm => 'sensitiveCategories.selfHarm',
 | |
|     SensitiveCategory.childAbuse => 'sensitiveCategories.childAbuse',
 | |
|     SensitiveCategory.other => 'sensitiveCategories.other',
 | |
|   };
 | |
| 
 | |
|   /// Optional symbol you can use alongside the label in UI
 | |
|   String get symbol => switch (this) {
 | |
|     SensitiveCategory.language => '🌐',
 | |
|     SensitiveCategory.sexualContent => '🔞',
 | |
|     SensitiveCategory.violence => '⚠️',
 | |
|     SensitiveCategory.profanity => '🗯️',
 | |
|     SensitiveCategory.hateSpeech => '🚫',
 | |
|     SensitiveCategory.racism => '✋',
 | |
|     SensitiveCategory.adultContent => '🍑',
 | |
|     SensitiveCategory.drugAbuse => '💊',
 | |
|     SensitiveCategory.alcoholAbuse => '🍺',
 | |
|     SensitiveCategory.gambling => '🎲',
 | |
|     SensitiveCategory.selfHarm => '🆘',
 | |
|     SensitiveCategory.childAbuse => '🛑',
 | |
|     SensitiveCategory.other => '❗',
 | |
|   };
 | |
| }
 | |
| 
 | |
| /// Ordered list for UI consumption, matching enum declaration order.
 | |
| const List<SensitiveCategory> kSensitiveCategoriesOrdered = [
 | |
|   SensitiveCategory.language,
 | |
|   SensitiveCategory.sexualContent,
 | |
|   SensitiveCategory.violence,
 | |
|   SensitiveCategory.profanity,
 | |
|   SensitiveCategory.hateSpeech,
 | |
|   SensitiveCategory.racism,
 | |
|   SensitiveCategory.adultContent,
 | |
|   SensitiveCategory.drugAbuse,
 | |
|   SensitiveCategory.alcoholAbuse,
 | |
|   SensitiveCategory.gambling,
 | |
|   SensitiveCategory.selfHarm,
 | |
|   SensitiveCategory.childAbuse,
 | |
|   SensitiveCategory.other,
 | |
| ];
 |