El reproductor es un monoton de módulo, no un valor de React

Refactorkamo-internal
Se descapó
14 de agosto de 2026 a las 23:20 UTC
Autor
kamo
Compromit
a2db801

Disparar un sonido leyó un contexto, que hizo la POSITION de cada sitio de llamadas EN LA TREE parte de su corrección. Un componente representado por encima de SoundProvider obtuvo un no-op y no hizo ruido y ese es el peor fracaso posible para esta característica, porque El silencio es exactamente lo que produce un "off" correctamente configurado. El insecto es invisible de la misma manera que la chimea que causa es. Así que la pila resuelta ahora vive en lib/sound/soundStore, un módulo singleton, y el trabajo del proveedor es mantenerlo actual en lugar de repartirlo. playEventSound es importable desde cualquier lugar y se comporta de forma idéntica donde está llamar al proveedor, debajo de él, o de una llamada de enchufe registrada antes se montó. Sin proveedor en absoluto juega el catálogo por defecto, que es el Degradación honesta: una página no tiene ningún miembro cuyas preferencias se aplican. Eso también borra un lenguaje. usePlaySound se ha ido: un gancho que no lee contexto y ningún estado no es un gancho, es una función simple usando la forma de un gancho, lo que implica semántica de suscripción que no tiene. Y cada sitio de llamadas de enchufe lo sobraba en un árbitro con un comentario explicando que la devolución de la llamada de lo contrario fijaría el primero la función de renders es verdad cuando vino de un contexto, falso en el momento en que lo hace No. Quince archivos pierden el árbitro, la llamada de gancho y el comentario ahora equivocado. También aquí: - El desmontaje en usoSoundLayerDraft dependía de la identidad de la identidad cambios con la capa, es decir, en cada pulsación de teclado. Cada re-corrido despejaba a la espera temporizador y escribió inmediatamente - convirtiendo el rebote en un PUT por cambio, el lo exacto existe para prevenir, y silenciosamente: los ajustes aún guardados, sólo cuarenta veces en vez de una. Sostuvo en un árbitro, depende de [] ahora. - Ambos interruptores tienen nombres accesibles explícitos. Sus etiquetas visibles se sientan en hermanos columnas, por lo que un lector de pantalla anunció cincuenta conmutaciones sin etiquetar en una fila. - Código de Muertos eliminado: CATEGORY-ICON, categoríaCounts, eventosInCategory, esAudioUnlocked, closeAudioContext, y EventSoundSoundEditor's hideMaster prop, que nunca pasó ninguna llamada. 16 nuevas pruebas cubren lo que la tienda decide, porque cada regla que aplica produce SILENCE y silencio es indistinguible de "correctamente apagarse" a menos que algo lo afirma: ventanas del acelerador (incluyendo que un evento silenciado no gasta su presupuesto propio), la regla ya pareada y su fuerza escapan de la escotilla, amo y Volumen de llamada, teclas desconocidas, y jugar sin ajustes en absoluto cargados. Puertas: tsc clean, 1867 test pass, siguiente compilación compila, i18n guardia limpia.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios