You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 line
2.8KB

  1. import 'dart:io';
  2. /// Enum pour le type de média
  3. enum MediaType {
  4. image,
  5. video;
  6. String get label => name.toUpperCase();
  7. }
  8. /// Enum pour les plateformes sociales
  9. enum SocialPlatform {
  10. instagram('Instagram', '📸', 0xFFE4405F),
  11. facebook('Facebook', '👍', 0xFF1877F2),
  12. tiktok('TikTok', '🎵', 0xFF000000),
  13. twitter('X', '𝕏', 0xFF1DA1F2),
  14. linkedin('LinkedIn', '💼', 0xFF0A66C2);
  15. final String displayName;
  16. final String emoji;
  17. final int colorValue;
  18. const SocialPlatform(this.displayName, this.emoji, this.colorValue);
  19. }
  20. /// Modèle pour un post de contenu (Dart 3.10)
  21. final class ContentPost {
  22. // CORRECTION 1 : Le mot-clé 'const' est retiré du constructeur.
  23. ContentPost({
  24. required this.mediaType, this.originalMedia,
  25. this.enhancedMedia,
  26. this.generatedText,
  27. this.includeEmojis = true,
  28. this.includeCommercialInfo = false,
  29. this.selectedPlatforms = const {},
  30. DateTime? createdAt,
  31. }) : createdAt = createdAt ?? DateTime.now();
  32. /// Modèle pour un post de contenu (Dart 3.10)final class ContentPost {
  33. final File? originalMedia;
  34. final File? enhancedMedia;
  35. final MediaType mediaType;
  36. final String? generatedText;
  37. final bool includeEmojis;
  38. final bool includeCommercialInfo;
  39. final Set<SocialPlatform> selectedPlatforms;
  40. final DateTime createdAt; // Cette ligne est maintenant valide.
  41. /// Utiliser records pour retourner plusieurs valeurs
  42. (File?, String?) getMediaAndText() => (enhancedMedia ?? originalMedia, generatedText);
  43. ContentPost copyWith({
  44. File? originalMedia,
  45. File? enhancedMedia,
  46. MediaType? mediaType,
  47. String? generatedText,
  48. bool? includeEmojis,
  49. bool? includeCommercialInfo,
  50. Set<SocialPlatform>? selectedPlatforms,
  51. // Note : On n'ajoute pas 'createdAt' dans les paramètres ici,
  52. // car on veut généralement conserver la date de création originale lors d'une copie.
  53. }) => ContentPost(
  54. originalMedia: originalMedia ?? this.originalMedia,
  55. enhancedMedia: enhancedMedia ?? this.enhancedMedia,
  56. mediaType: mediaType ?? this.mediaType,
  57. generatedText: generatedText ?? this.generatedText,
  58. includeEmojis: includeEmojis ?? this.includeEmojis,
  59. includeCommercialInfo: includeCommercialInfo ?? this.includeCommercialInfo,
  60. selectedPlatforms: selectedPlatforms ?? this.selectedPlatforms,
  61. // CORRECTION 2 : On passe explicitement la date de création de l'objet actuel ('this').
  62. createdAt: createdAt,
  63. );
  64. @override
  65. String toString() =>
  66. 'ContentPost(type: ${mediaType.label}, platforms: ${selectedPlatforms.length})';
  67. }
  68. /// Record pour les résultats d'API (Dart 3.10)
  69. typedef EnhancementResult = ({
  70. List<File> versions,
  71. DateTime processedAt,
  72. String? error,
  73. });
  74. typedef TextGenerationResult = ({
  75. List<String> proposals,
  76. DateTime generatedAt,
  77. String? error,
  78. });