Estanterías: ordenación por título + más datos por libro #14

Closed
HBB wants to merge 0 commits from HBB:feat/shelf-title-sort into main
First-time contributor

Reemplaza a #13, que se rompió por un fallo de Gitea («missing fork information») tras un force-push. Es la misma rama, ahora rebasada sobre la v1.1.8.

Contiene dos commits:

  • Ordenación por título (A–Z / Z–A) en las estanterías.
  • Muestra autor, valoración, páginas, idioma y fecha en las estanterías (+ opción de re-sincronizar).

Una nota sobre el orden: mi propuesta de seguimiento (la ficha del libro como página con pestañas) está construida encima de esta rama. Como las PR van desde mi fork, no puedo apilarlas de forma limpia. Si esta te convence, lo ideal sería fusionarla primero; en cuanto esté en main, rebaso la ficha a un único commit limpio y abro su PR enseguida. ¡Gracias!

Reemplaza a #13, que se rompió por un fallo de Gitea («missing fork information») tras un force-push. Es la misma rama, ahora rebasada sobre la v1.1.8. Contiene dos commits: - Ordenación por título (A–Z / Z–A) en las estanterías. - Muestra autor, valoración, páginas, idioma y fecha en las estanterías (+ opción de re-sincronizar). Una nota sobre el orden: mi propuesta de seguimiento (la ficha del libro como página con pestañas) está construida encima de esta rama. Como las PR van desde mi fork, no puedo apilarlas de forma limpia. Si esta te convence, lo ideal sería fusionarla primero; en cuanto esté en main, rebaso la ficha a un único commit limpio y abro su PR enseguida. ¡Gracias!
Añade un menú de ordenación en la cabecera del listado de una estantería
con tres opciones: orden predeterminado (el que devuelve el servidor),
título A-Z y título Z-A.

La ordenación se hace en el cliente sobre el campo `sortTitle` que ya
incluye el `.json` de la estantería (con reserva a `title`), usando un
Collator con nivel PRIMARY para respetar el orden alfabético del idioma
(p. ej. æ/ø/å en danés) e ignorar mayúsculas y acentos. El endpoint
`.json` ignora el parámetro `?sort=`, por lo que la ordenación no puede
delegarse en el servidor.

Cuando hay una ordenación activa se cargan automáticamente las páginas
restantes para ordenar la estantería completa y no solo la porción
visible. El orden predeterminado conserva el comportamiento actual.

Textos traducidos a todos los idiomas disponibles, adaptando el rango
alfabético donde procede (Α–Ω griego, А–Я ucraniano, A–Ö sueco/finés,
A–Å danés).
Enriquece las tarjetas de los estantes con datos que no están en el .json de
la estantería (solo trae id, título y portada):

- Autor, valoración del usuario (con medias estrellas) y fechas de lectura en
  ISO se obtienen raspando la página HTML de cada libro (BookWyrmScraper.
  scrapeBookEnrichment) y se cachean localmente por id (TimelineCache).
- Nº de páginas e idioma se leen del propio Edition del .json, que ya los trae
  (ShelfBookItem ampliado); el idioma se muestra como bandera con reserva a texto.

Relleno de los datos: la primera vez que se abre un estante se obtienen los
libros que falten uno a uno, de forma secuencial y suave, con una barra de
progreso etiquetada («Cargando datos… X/Y»); después queda cacheado. Al abrir
un libro se refrescan sus datos de forma oportunista usando la misma barra
(1/1), y hay una opción de «Actualizar datos» para resincronizar.

Nuevas ordenaciones en el estante de leídos: por fecha de fin (recientes/
antiguos) y por valoración (alta/baja); los libros sin dato quedan al final.
Como el .json ignora ?sort=, la ordenación y el enriquecimiento requieren
cargar todas las páginas, por lo que el detalle deja de paginar de forma
perezosa y carga la estantería completa (adecuado para estanterías personales).

Tarjeta rediseñada: título centrado arriba con las estrellas centradas debajo,
y a la izquierda autor (con icono), páginas seguidas de la bandera del idioma y
la fecha. En leídos, si hay fecha de inicio y de fin, se añade la duración de
lectura «(N días)» (inclusiva). Textos traducidos a todos los idiomas disponibles.
Owner

Añadido, muchas gracias por toda la aportación

Añadido, muchas gracias por toda la aportación
ferlagod closed this pull request 2026-07-25 06:40:04 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ferlagod/rocinante_android!14
No description provided.