FEAT : Pagination des commentaires / photos

This commit is contained in:
2025-12-02 19:43:29 +01:00
parent 6cb141293c
commit ce5ed0cbe3
115 changed files with 240 additions and 121 deletions

View File

@@ -51,7 +51,7 @@ public class PhotoController {
@PostMapping("/upload")
public String doUpload(@RequestParam("file") MultipartFile file,
@RequestParam(value="visibilite", defaultValue = "PRIVATE") String visibilite,
@RequestParam(value = "visibilite", defaultValue = "PRIVATE") String visibilite,
Authentication authentication,
Model model) {
try {
@@ -82,7 +82,8 @@ public class PhotoController {
String contentType = "application/octet-stream";
try {
contentType = Files.probeContentType(p);
} catch (Exception ignored) {}
} catch (Exception ignored) {
}
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(contentType))
@@ -92,14 +93,27 @@ public class PhotoController {
}
@GetMapping("/mes-photos")
public String mesPhotos(Model model, Authentication auth) {
public String mesPhotos(
@RequestParam(name = "pagePrivees", defaultValue = "0") int pagePrivees,
@RequestParam(name = "pagePubliques", defaultValue = "0") int pagePubliques,
@RequestParam(name = "pagePartagees", defaultValue = "0") int pagePartagees,
Model model,
Authentication auth
) {
String email = auth.getName();
model.addAttribute("photosPrivees", photoService.listPrivatePhotos(email));
model.addAttribute("photosPubliques", photoService.listPublicPhotos(email));
model.addAttribute("photosPartagees", photoService.listSharedWith(email));
// Chaque liste utilise sa propre pagination
model.addAttribute("photosPrivees", photoService.listPrivatePhotos(email, pagePrivees, 12));
model.addAttribute("photosPubliques", photoService.listPublicPhotos(email, pagePubliques, 12));
model.addAttribute("photosPartagees", photoService.listSharedWith(email, pagePartagees, 12));
// Ajouter les 3 index séparés
model.addAttribute("pagePrivees", pagePrivees);
model.addAttribute("pagePubliques", pagePubliques);
model.addAttribute("pagePartagees", pagePartagees);
return "mes-photos";
}
@GetMapping("/galerie")
public String galerie(@RequestParam(defaultValue = "0") int page, Model model) {
Page<Photo> photosPage = photoService.listPublic(page, 12);
@@ -112,28 +126,28 @@ public class PhotoController {
@GetMapping("/photo/{id}")
@PreAuthorize("@securityService.canAccessPhoto(authentication, #id)")
public String viewPhoto(@PathVariable Long id,
@RequestParam(defaultValue = "0") int page,
Model model,
Authentication auth) {
Photo photo = photoRepository.findById(id).orElse(null);
if (photo == null) {
return "redirect:/galerie";
}
model.addAttribute("photo", photo);
model.addAttribute("commentaires", commentaireService.listByPhoto(id));
// utilisateur connecté (peut être null si visiteur)
// Pagination des commentaires
model.addAttribute("commentairesPage",
commentaireService.listByPhoto(id, page, 10));
model.addAttribute("currentPage", page);
// utilisateur connecté (peut être null)
String currentUser = (auth != null ? auth.getName() : null);
model.addAttribute("currentUser", currentUser);
// Liste des partages
List<Partage> partages = partageRepository.findByPhoto_Id(id);
model.addAttribute("partages", partages);
return "photo-detail";
}
@PostMapping("/photo/{id}/comment")
public String addComment(@PathVariable Long id,
@RequestParam String contenu,