Tema oscuro y frameworks iOS

Ahora que tengo un poco más de tiempo libre le he dado una vuelta al aspecto de TurnoClase modificando el fondo a color negro. Cansa menos la vista y ahora batería en pantallas OLED, así que son todo ventajas.

Además, las partes de código que estaban repetidas entre las dos aplicaciones iOS ahora están en un framework aparte, lo que me ha permitido aprender cómo funcionan.

TurnoClaseProfesor (izquierda) y TurnoClase (derecha) con el nuevo aspecto.

TurnoClase meltdown

Ayer en clase la aplicación se volvió loca y descubrí que no está preparada para que 40 usuarios le pidan simultáneamente el turno.

¿Qué ocurre? Que el código que desarrollé en su día para Parse funciona bien siempre y cuando no haya dos accesos a la vez al aula.

En Firestore, la cola se almacena como un array y el cliente actualiza ese array cuando pide el turno, añadiendo su ID al final. El problema es que en el tiempo que pasa desde que lee, actualiza y vuelve a escribir, otro cliente puede haber leído el mismo estado de la cola, añadirse a sí mismo, actualizar y, sin enterarse, ver sus datos sobrescritos por la primera petición que todavía no había llegado a la base de datos. Un desastre.

Toca rehacer el proceso usando una colección de turnos, en vez de un array simple.