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,
 | 
						|
];
 |