El perfil: las cifras llevan a los libros, y lo que falta se puede poner #28

Closed
HBB wants to merge 0 commits from HBB:pr/perfil into main
First-time contributor

El perfil enseñaba cifras que no llevaban a ninguna parte y avisaba de datos que
faltaban sin dejar arreglarlos.

  • Las gráficas y los autores llevan a los libros que cuentan. Tocar un año,
    una nota, un idioma o un formato abre esos libros en la estantería.
  • Lo que falta se puede poner desde aquí: fechas de lectura, valoraciones,
    idioma y formato, como ya se hacía con las páginas. Se guarda de uno en uno,
    con lo escrito a la vista.
  • Para el idioma y el formato, las opciones se leen del formulario de edición
    de la instancia
    , no van escritas en la aplicación: qué formatos admite
    BookWyrm y cómo se llaman es cosa de la instancia y de su versión, y una lista
    copiada aquí envejecería sin avisar.
  • Un bloque nuevo: la lectura más rápida y la más lenta, con su portada y los
    días que llevó. Solo entran las que tienen fecha de inicio y de fin, que
    son las únicas que se pueden medir.
  • Un solo estilo de tarjeta. Convivían dos, unas con relieve y otras con
    contorno; pasan todas a contorno, como la del reto de lectura.

Ojo: lo que se escribe en el idioma, el formato o las páginas es del libro, no
de quien lo lee
, así que se guarda en la instancia y lo ve todo el mundo. El
diálogo lo dice antes de guardar.

Esta rama va encima de pr/ficha-libro.

El perfil enseñaba cifras que no llevaban a ninguna parte y avisaba de datos que faltaban sin dejar arreglarlos. - **Las gráficas y los autores llevan a los libros que cuentan.** Tocar un año, una nota, un idioma o un formato abre esos libros en la estantería. - **Lo que falta se puede poner desde aquí**: fechas de lectura, valoraciones, idioma y formato, como ya se hacía con las páginas. Se guarda de uno en uno, con lo escrito a la vista. - Para el idioma y el formato, **las opciones se leen del formulario de edición de la instancia**, no van escritas en la aplicación: qué formatos admite BookWyrm y cómo se llaman es cosa de la instancia y de su versión, y una lista copiada aquí envejecería sin avisar. - **Un bloque nuevo**: la lectura más rápida y la más lenta, con su portada y los días que llevó. Solo entran las que tienen fecha de inicio **y** de fin, que son las únicas que se pueden medir. - **Un solo estilo de tarjeta.** Convivían dos, unas con relieve y otras con contorno; pasan todas a contorno, como la del reto de lectura. Ojo: lo que se escribe en el idioma, el formato o las páginas **es del libro, no de quien lo lee**, así que se guarda en la instancia y lo ve todo el mundo. El diálogo lo dice antes de guardar. Esta rama va encima de `pr/ficha-libro`.
HBB added 13 commits 2026-08-14 21:54:54 +00:00
El formulario de la web manda la fecha del día al cambiar el estado de lectura;
la app no mandaba ninguna, así que la lectura quedaba dada de alta **sin fechas**
y había que escribirlas después a mano, libro por libro. Se manda la que
corresponda al paso que se da: inicio, fin o abandono.
Tocar una fila de la pestaña «Diverse» copia su valor al portapapeles, y
cada una copia lo suyo: con el ISBN, el OCLC y el de Open Library uno
debajo de otro, uno se lleva el que ha tocado y no los tres. La portada
copia el título.

El aviso dice lo que se ha copiado, para no tener que ir a pegarlo para
saberlo, recortado a sesenta letras. Desde Android 13 el sistema enseña
su propia confirmación al copiar y no se puede quitar, así que ahí se
pone el valor a secas —se lee «Dan Brown» y detrás el «copiado» del
sistema— y en las versiones anteriores, donde no hay tal confirmación,
se dice entero.

Va en la fila genérica y no en cada dato, así que vale también para el
autor, la serie, la editorial y las fechas. Una fila que se viera igual
que las demás pero no respondiera parecería estropeada.

Nada cambia de sitio ni de tamaño: la fila solo gana el toque.

(cherry picked from commit e87fb332c845da120f9026dbfbe7dd4dbf2ab7cc)
Resumen, Reseñas y Diverse solo se cambiaban tocando su nombre. Ahora se
pasan también de lado, como la barra de abajo de la aplicación: quien
está leyendo una reseña sigue con el dedo en vez de subir a buscar la
pestaña.

Tocar el nombre sigue funcionando y ahora se desliza hasta allí en vez
de saltar. La pestaña marcada la dice el carrusel, así que no hay dos
sitios donde apuntar cuál está abierta y no pueden discrepar.

El carrusel lleva `weight(1f)`: la columna que lo contiene ya llena la
pantalla, y sin acotarlo la página querría ser infinita.

(cherry picked from commit 29c9a645bae0f5453d5ff130b22765498624681d)
Dos campos que el .json del ejemplar ya traía y se tiraban.

**Copias enlazadas**: los enlaces que alguien ha puesto desde la
instancia —Standard Ebooks, Project Gutenberg y sitios así—, con el
sitio, el formato y si es gratis, de pago o en préstamo. Se enseña el
sitio y no la dirección entera, porque «standardebooks.org» dice más que
setenta caracteres de URL. El mismo enlace sale una vez aunque lo hayan
añadido varias personas.

Van encima de los números: solo uno de cada cincuenta libros los tiene,
pero cuando están son lo que se quiere pulsar.

**Inventaire**: otro identificador del ejemplar, que trae uno de cada
cinco. Va con el ISBN y los demás, así que se copia al tocarlo como
ellos.

Los dos se leen con Gson por el nombre del campo, y un cambio de forma
no daría error: dejaría el campo vacío y la ficha no enseñaría nada. Por
eso van cuatro pruebas sobre la respuesta tal cual la da la instancia,
incluido el caso corriente de que no haya ni lo uno ni lo otro.

(cherry picked from commit dc1de492169f82543269d1dc3857014c8b1032f6)
El .json del libro solo trae las direcciones de sus autores; el nombre, la
biografía y los sitios están en la ficha de cada uno. Se piden **después** de
abrir la ficha y aparecen cuando llegan, así que el libro no espera por esto, y
se guardan por autor: el segundo libro de la misma persona no cuesta nada.
«Actualizar datos» las rehace.

Un bloque por persona y no una lista: con dos autores juntos habría que adivinar
de quién es cada cosa. Los sitios van como botones con icono, centrados. No se
usan los logotipos de Wikipedia ni de Wikidata: son marcas de Wikimedia, fuera
de la licencia libre de los artículos, y meterlas en el paquete es justo donde
da problemas en F-Droid. El icono dice de qué clase de sitio se trata y el texto
dice cuál.
La gráfica de «autores más leídos» decía cuántos libros hay de cada uno
pero no dejaba verlos. Al tocar una barra se abre «Mis libros» en la
estantería de leídos, con los libros de ese autor y las tarjetas de
siempre. Siempre esa estantería: la gráfica se calcula solo con ella,
así que llevar a otra enseñaría una cuenta distinta de la que se acaba
de tocar.

El perfil no cambia de aspecto: la barra solo gana el toque.

Volver deshace un paso cada vez, con el botón de la pantalla o con el
del móvil, porque es el camino que ya existía para los autores.

El objetivo viaja en `ShelfTarget`, que ya llevaba el libro al que salta
la búsqueda. Va el nombre visible y no una clave: es lo que tienen tanto
el perfil como la estantería, y cada uno lo normaliza igual por su
cuenta. Los grupos de autores se arman con los datos por libro, que
tardan un momento en llegar de la caché, así que se espera a que haya
autores antes de decidir; mientras tanto se ve la lista de autores, que
es a dónde lleva ese camino. Si el nombre no cuadra con ningún grupo, se
queda en esa lista en vez de en una pantalla vacía.

(cherry picked from commit 11c9c43509e83feec7a7d390bf492dc7654077bb)
Tocar un año de «libros por año», una nota, un idioma, un formato o la
barra del reto de lectura abre «Mis libros» con esos libros, en las
tarjetas de siempre. El reto lleva al año en curso, que es lo que cuenta.

El perfil no cambia de aspecto: las barras solo ganan el toque. Las que
están a cero no lo tienen, porque llevarían a una lista vacía.

Volver deshace el recorte y deja la estantería entera, con el botón de
la pantalla o con el del móvil.

La regla de qué libros entran vive en `ShelfFiltering`, aparte de la
pantalla y con sus pruebas, porque tiene que quedarse exactamente con
los que contó la gráfica y eso no es lo obvio en tres casos: una
relectura cuenta en el año en que terminó y no en el de la lectura
anterior; una estantería mezcla «Danish» y «Dansk» para el mismo idioma,
y la gráfica los cuenta juntos; y un libro del que aún no se han leído
los datos no tiene ni nota ni fecha, así que no entra en esos dos
recortes en vez de colarse. Si la lista dijera siete donde la barra dice
ocho, la gráfica dejaría de ser de fiar.

(cherry picked from commit 3ed61ea78a68e86007e878e69df3ae915cfa3310)
Al entrar en «Mis libros» desde una gráfica del perfil, el recorte —o el
autor— se quedaba puesto: volver a la pestaña desde la barra de abajo y
abrir cualquier estantería lo aplicaba otra vez, y un recorte que se
acababa de deshacer reaparecía solo.

Ahora la estantería avisa en cuanto se ha quedado con él. El aviso va
después de guardarlo y no antes, porque quitarlo de en medio recompone
la pantalla y, al revés, borraría lo que se acaba de coger.

(cherry picked from commit 3de52fa67b952bd30f041dcc8d8edd260065ad23)
Los dos avisos que hablaban de fechas —los libros que no salen en la
gráfica por años y el «calculado sobre X de Y libros con las dos
fechas»— ahora llevan a la lista de esos libros, con los dos huecos para
ponerlas. Antes había que abrir la ficha de cada uno, y son justo los
libros viejos, que suelen ser muchos.

A diferencia de las páginas, las fechas son de quien lee y no del libro:
esto solo toca la lectura propia. El texto del diálogo lo dice, porque
la otra pantalla se parece y allí sí se cambia la ficha para todos.

Se guarda de uno en uno. Cada libro cuesta una petición para saber si ya
tiene una lectura dada de alta —hay que corregir esa y no crear otra al
lado—, y así se ve cuál ha entrado y cuál no, en vez de un botón que o
todo o nada. Los guardados se quedan en la lista pero apagados: sacarlos
de debajo del dedo haría saltar la fila siguiente al hueco.

El selector de fecha es el mismo que el de la ficha del libro, que ya
existía; solo ha dejado de ser privado.

(cherry picked from commit b28b9e80d11538273311480802b2a4b982a44dd2)
El aviso «X libros sin valorar» lleva ahora a esos libros, con las cinco
estrellas a mano. Tocar otra vez la misma estrella la deja a la mitad,
porque BookWyrm admite medias y el reparto del perfil las enseña.

**Puntuar publica.** En BookWyrm una valoración es una publicación como
otra cualquiera, así que ponerle estrellas a veinte libros viejos manda
veinte cosas a quien te siga. Por eso la visibilidad se elige arriba,
vale para todo el diálogo y viene puesta en privado: rellenar huecos es
querer arreglar las cifras propias, no contárselo a nadie. El texto lo
dice, para que nadie se entere después.

Se guarda de uno en uno, como las páginas y las fechas: cada libro
cuesta una petición para saber su edición y su usuario. `postReviewRating`
ya estaba escrito y no lo llamaba nadie.

(cherry picked from commit f07973b5a613b5240f14eee2ea142cfa341dcd81)
Como las páginas: se listan los libros a los que les falta y se guarda de uno en
uno. Las opciones no van escritas en la aplicación, se leen del formulario de
edición de la instancia, que es quien decide qué formatos admite y cómo se
llaman; una lista copiada aquí envejecería sin avisar. Si el campo no es una
lista, se escribe a mano.

Escribir un campo suelto de la ficha pasa a ser genérico en vez de una copia por
campo, así que páginas, idioma y formato van todos por el mismo sitio.
Un bloque nuevo con los dos extremos: qué se leyó de un tirón y qué costó más,
cada uno con su portada y los días que llevó. Se puede mover y apagar como los
demás desde «Editar página».

Solo entran las lecturas con fecha de inicio **y** de fin, que son las únicas que
se pueden medir; sin ninguna, el bloque no sale en vez de salir vacío. Los días
cuentan los dos extremos, como en la estantería, para que el mismo libro no diga
una cosa aquí y otra allí. Un libro releído cuenta como dos lecturas, igual que
en la media de arriba.

(cherry picked from commit 9091a6620e5b9b226b2928075f622c94ac508c82)
Convivían dos: unas con relieve y otras con contorno. Pasan todas a contorno,
como la del reto de lectura. Eran cinco: la cabecera, la biografía, «a quién
seguir», «mejor valorados» y la de las lecturas más rápida y más lenta.

Dos llevaban además 12 dp de aire por arriba sobre los 16 que ya reparte la
columna, así que se separaban más de la vecina que las demás.

(cherry picked from commit d44f252f22ae933ebced8c823a4eb8e7adcd2d12)
ferlagod closed this pull request 2026-08-15 18:24:23 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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!28
No description provided.