Il giocatore è un singleton del modulo, non un valore React

Refactorkamo-internal
Shipped
14 agosto 2026 alle ore 23:20 UTC
Author
kamo
Commit
a2db801

Registrare un suono leggere un contesto, che ha fatto POSIZIONE di ogni sito di chiamata nel TREE parte della sua correttezza. Un componente reso sopra SoundProvider ha ottenuto un no-op e non ha fatto rumore — e questo è il peggior fallimento possibile per questa funzione, perché il silenzio è esattamente ciò che un "off" correttamente configurato produce. Il bug è invisibile allo stesso modo il chime mancante che provoca è. Così lo stack risolto ora vive in lib/sound/soundStore, un singleton del modulo, e il lavoro del fornitore è quello di tenerlo attuale piuttosto che consegnarlo. playEventSound è importabile da qualsiasi luogo e si comporta in modo identico ovunque si trovi chiamato — al di sopra del fornitore, al di sotto di esso, o da un richiamo di presa registrato prima montato. Senza alcun fornitore, suona il catalogo predefinito, che è il degrado onesto: una pagina non autenticata non ha membri le cui preferenze si applicano. Questo elimina anche un idioma. usePlaySound è andato: un gancio che legge nessun contesto e nessun stato non è un gancio, è una funzione normale che indossa la forma di un gancio, implicando sottoscrizione semantica che non ha. E ogni luogo di chiamata di presa lo teneva. in una ref con un commento spiegando che il callback sarebbe altrimenti pin il primo funzione di render — vero quando è venuto da un contesto, falso il momento che fa No. Quindici file perdono la ref, la chiamata del gancio e il commento ora sbagliato. Anche qui: - Il colore non montato in usoSoundLayerDraft dipendeva da `flush`, la cui identità cambia con lo strato, cioè su ogni tasto. Ogni regata ha sgomberato il pendente timer e ha scritto immediatamente — trasformando il debounce in un PUT per cambiamento, il esatta cosa esiste per prevenire, e silenziosamente: le impostazioni ancora salvate, solo Quaranta volte invece di una volta. Tenuto in una ref, dipende da [] ora. - Entrambi gli interruttori ottengono nomi espliciti accessibili. Le loro etichette visibili siedono in fratelli colonne, così un lettore di schermo ha annunciato cinquanta toggles unlabelled in una riga. - Codice morto rimosso: CATEGORY ICON, categoriaPaesi, eventiIncategoria, èAudioUnlocked, closeAudioContext, and EventSoundEditor's hideMaster prop, che nessun chiamante è mai passato. 16 nuovi test coprono quello che il negozio decide, perché ogni regola che applica produce SILENZA e silenzio sono indistinguibili da "correttamente fuori" a meno che qualcosa afferma su di esso: serramenti (compreso che un evento muto non spende la sua proprio bilancio), la regola già attraente e la sua forza di fuga hatch, padrone e per-call volume, chiavi sconosciute e giocare senza impostazioni caricate affatto. Gates: tsc clean, 1867 test pass, compilazione successiva, i18n guard clean.

All changes

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo