Gostaria de esclarecer o meu entendimento desse método(ele faz o like de uma foto). Ele recebe como parâmetro o Id da foto para fazer a requisição post para a API e está usando o observe: 'response' (significa que receberemos a resposta completa, não só o corpo ou o cabeçalho dela?). Então, com o retorno da requisição que será um Observable do tipo Object, usamos o pipe para encadear a função map que transformará o Observable atual para um Observable do tipo boolean, que receberá o valor true. Usando outro pipe para encadear outra função que irá capturar um eventual erro e se esse erro tiver o status 304 o observable anterior será desconsiderado e um novo será criado do tipo boolean e com valor false, se for algum outro erro o erro continuará. Obs: o código 304 será retornado quando um usuário tentar curtir uma foto que ele já curtiu. Isso é configurado pelo backend(api)?
like(photoId:number) {
return this.http.post(API + '/photos' + photoId + '/like', {}, { observe: 'response'})
.pipe( map(res => true ))
.pipe( catchError(err => {
return err.status == '304' ? of(false) : throwError(err);
}))
}