La estantería deja de pedir la misma página sin parar #23
Loading…
Reference in a new issue
No description provided.
Delete branch "HBB:fix/enrichment-sweep-blocked"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Dos arreglos sobre
main(v1.2.0), los dos enMyBooksScreen.La paginación no terminaba nunca
Se daba por acabada la estantería al llegar una página con menos de diez libros
(
fetchedItems.size < 10, ahí desdeefe49b3). Pero las páginas vienen de quince, y a unapágina que no existe la instancia responde con la última otra vez. Si la última página
trae justo diez libros —una estantería de 70, por ejemplo— la condición no se cumple jamás:
la app sigue pidiendo la misma página, una cada medio segundo, mientras la pantalla esté
abierta. En una prueba llegó a la página 56 antes de cerrarla.
Con la estantería sin darse por completa:
paginación: los libros se quedan sin autor, sin fechas de lectura y sin serie;
Ahora el final lo marca que una página no traiga ningún libro nuevo, que es cierto tanto
si la instancia repite la última como si devuelve una vacía, y no depende del tamaño de
página. Con un tope de 200 páginas como red de seguridad.
El relleno de datos podía bloquearse a sí mismo
Abrir un libro nada más entrar en la estantería levanta la misma bandera con la que se dibuja
la barra de progreso, y el recorrido que iba a empezar la miraba, se daba media vuelta y no
volvía. Lo mismo al pedir «actualizar datos» mientras uno estaba en marcha: cancelaba el que
había y el nuevo se encontraba la bandera levantada. Quedaban libros a medio rellenar hasta
volver a entrar sin tocar nada.
Lo que impide ahora que dos recorridos se pisen es un candado y no la bandera: el segundo
espera al primero y, como recuenta lo que falta al entrar, no rehace su trabajo. De paso, el
refresco de un libro suelto guarda solo ese libro en vez de volcar el mapa entero, que borraba
lo que el recorrido acabara de guardar mientras tanto.
Comprobado
En un Galaxy S23 contra bookwyrm.social, con una estantería «Leídos» de 70 libros —el caso que
lo dispara—. Antes: páginas repetidas sin fin y la caché parada en 15 libros. Después: los 70
libros traídos y guardados en menos de cinco segundos, las peticiones paran, y el relleno de
datos llega hasta el final (70 de 70).
./gradlew testDebugUnitTestpasa.Pull request closed