Olá, estou curioso sobre como funciona, a parte do código a seguir, no primeiro click:
favorita: fotoDaGaleria.id === foto.id ? !foto.favorita : fotoDaGaleria.favorita
As fotos, antes do primeiro click no favorito, não possuem a propriedade favorita, então nesse momento além de definir o valor a propriedade está sendo criada. Contudo, na criação desta, para o valor ser estabelecido, o operador ternário utiliza a própria propriedade favorita para estabelecer o valor.
A questão é: como no primeiro click a propriedade favorita não existe ainda, logo na parte do código (!foto.favorita : fotoDaGaleria.favorita), o valor de foto.favorita e fotoDaGaleria.favorita seriam undefined, porém como estamos em uma validação esse valor passaria a ser false por causa do falsy values do JS? Desse modo, na primeira parte (? !foto.favorita) passaria de undefined para false e como está invertendo o valor, no final ficaria true? Já na segunda parte (: fotoDaGaleria.favorita) passaria de undefined para false?
Gostaria de saber se a minha explicação estaria certa, se não, como seria.