Aller au contenu principal

TP4 - Raidite - Hot-doye 🌭

Cet énoncé précise les fonctionalités du membre 🌭 et donne quelques pistes pour réussir.

Étape C​

Lorsqu’on crée un commentaire, on doit être capable d’y joindre zéro à plusieurs images, qui seront sauvegardées en taille originale et en miniature.

Que ce soit pour créer un commentaire ou un sous-commentaire, cela se passe dans le composant réutilisable nommé Reply :

Créer un commentaire

Voici quelques pistes non exhaustives pour savoir où donner de la tête. Cette étape sera de loin la plus longue, entre autres car il faut explorer le projet et s'y retrouver !

đź“¶ Envoyer des images au serveur :

  • Le composant Reply, en utilisant le hook useComment, devra maintenant envoyer un FormData plutĂ´t qu'un DTO pour pouvoir y joindre 0 Ă  plusieurs images en plus du texte du commentaire.
  • L'action PostComment du CommentsController devra recevoir ce FormData plutĂ´t qu'un CommentDTO. La classe Comment devra avoir une relation One-To-Many avec la classe Picture. Il faudra modifier la mĂ©thode CreateComment du CommentService et ajouter la mĂ©thode CreatePicture dans le PictureService.

đź–Ľ Afficher les images sur le client :

  • Le serveur n'envoie pas de Comment au client, mais plutĂ´t des CommentDisplayDTO. (C'est dĂ©jĂ  le cas) Ajouter la liste des ids des images d'un commentaire dans le CommentDisplayDTO et dans la classe comment.ts devrait facilement permettre de rendre accessibles tous les ids nĂ©cessaires au projet Next.js.
  • Pour pouvoir afficher les images dans le composant rĂ©utilisable CommentBox, il faudra une action GetPicture dans le CommentsController et il faudra glisser une requĂŞte directement dans le HTML de CommentBox pour afficher chaque image du commentaire Ă  l'aide des ids reçus.
Créer un commentaire
attention

Il est pas mal incontournable de faire le merge de la branche de cette étape en présence de votre partenaire ! (Seulement lorsque la 2e personne fera son merge) Il y aura beaucoup de conflits, et il faut que les deux partenaires soient présents pour bien comprendre comment résoudre ces conflits.

Étape D​

Les utilisateurs doivent pouvoir choisir un avatar personnalisé. L’avatar peut être changé / remplacé à tout moment. On doit pouvoir prévisualiser l'image choisie quand on change son avatar.

Avatar
  • Ceci se dĂ©roule surtout dans le composant Profile et dans le UsersController.
  • â›” N’utilisez pas la classe Picture pour les avatars, ajoutez seulement un FileName et un MimeType dans la classe User, c’est plus simple. Exceptionnellement, vous pouvez vous en tirer sans utiliser de service cĂ´tĂ© serveur pour cette fois. (Ă€ l’aide de UserManager)
  • La requĂŞte pour afficher l’avatar sera plus simple si le paramètre dans l’URL est le pseudo de l’utilisateur.
  • Attention ! L'avatar est affichĂ© Ă  quatre endroits : Reply, CommentBox, PostThumbnail et Profile. Ne vous mĂ©langez pas avec les icĂ´nes des forums (hubs), qui sont affichĂ©s Ă  plusieurs endroits aussi.
Avatar
  • Un avatar par dĂ©faut doit ĂŞtre affichĂ© pour ceux qui n'ont pas choisi d'avatar.
Avatar

Étape E​

Cliquer sur une image dans une publication ou un commentaire doit permettre de l’afficher en pleine taille, dans un autre onglet.

  • Ne vous compliquez pas la vie : Ajoutez une balise <a> avec un href qui contient la requĂŞte vers l’image en pleine taille. Cela redirigera vers une autre page qui contient seulement l’image. C’est suffisant. Vous devez ouvrir l’image dans un nouvel onglet.
  • Ceci concerne TOUTES les images qui ne sont pas des avatars ou des icĂ´nes de forum. (Donc ça inclut les images du message principal d'une publication !)

Étape F​

On doit pouvoir supprimer les images d’un commentaire et d'une publication, individuellement.

  • L’image doit disparaĂ®tre immĂ©diatement de la page lorsqu’on le fait.
  • Cette suppression concerne une seule image Ă  la fois. Les autres ne sont pas touchĂ©es.
  • Bien entendu, on peut seulement supprimer les images de nos propres commentaires / publications. On ne veut pas voir le petit X si on n’est pas l’auteur du message.
Commentaire avec images
danger

Une image supprimée de la base de données doit aussi être supprimée du File System !

Étape G​

Les utilisateurs peuvent signaler (Report) les commentaires / publications des autres utilisateurs.

  • Les publications ne pourront pas vraiment ĂŞtre signalĂ©es, mais plutĂ´t le commentaire principal (mainComment) d'une publication. Bref, c'est la mĂŞme requĂŞte au serveur, que ce soit une publication, un commentaire ou un sous-commentaire.
  • Le signalement d'un commentaire peut ĂŞtre un simple bool mis Ă  true ou encore une List<User> Reporters si vous voulez faire ça proprement.
  • Un utilisateur ne peut pas signaler ses propres commentaires. Si on est l'auteur d'un message, on ne peut pas voir l'option « Signaler ».
  • Si on n'est pas connectĂ©, on ne peut pas signaler un message et utiliser l'option « Signaler » nous dĂ©place vers /account/login.
Signalement

Étape H​

Un rôle modérateur doit être créé. (Sauf si votre partenaire l'a déjà créé) Les modérateurs peuvent voir la liste des commentaires signalés dans l'onglet Modération de leur profil. Ils peuvent supprimer les commentaires de leur choix via cette liste. Un utilisateur avec le rôle modérateur doit être ajouté dans le seed.

Il suffira de remplir une liste de commentaires dans le composant Profile avec tous les commentaires ayant été signalés si on est un modérateur. Le bouton Supprimer appelera exactement la même action du serveur que si un utilisateur supprimait son propre message. Il faudra donc permettre aux modérateurs ET à l'auteur d'un message de le supprimer.

Commentaires signalés

Étape I​

  • Lorsque votre partenaire fera ses derniers merges dans dev, vĂ©rifiez vos fonctionnalitĂ©s ! Votre partenaire les a peut-ĂŞtre brisĂ©...
  • N'oubliez pas de faire le merge ultime dans main lorsque votre partenaire et vous aurez terminĂ© le TP.