Skip to content
This repository has been archived by the owner on Aug 14, 2020. It is now read-only.

#19 initial API calls config #92

Merged
merged 15 commits into from Mar 27, 2020
Merged

#19 initial API calls config #92

merged 15 commits into from Mar 27, 2020

Conversation

LucasGarcez
Copy link
Contributor

@LucasGarcez LucasGarcez commented Mar 27, 2020

Criei uma estrutura básica para concentrar as chamadas a API. Como ainda temos muita coisa para corrigir, achei q seria um pouco boilerplate subir essas chamadas já acoplada na estrutura do redux com sagas e tudo mais.
E já preparei as chamadas pra receber os dados tbm de suspeitos e recuperadas, então quando o backend incluir já vai aparecer lá sem precisar fazer qualquer modificação.

Adicionei Typescript ao projeto para facilitar o uso dos dados ao longo do app sem que os demais devs precisem ficar consultado os endpoins a todo momento.
Também criei algumas funções simples apenas para converter o nome das props e deixá-las mais amigáveis e tratar dados que possívelmente esperamos (como no casos de suspeitos e recuperados), mas q ainda não estão aparecendo no data do response:

function convertCasesResponse(casesResponse: CasesResponse): Cases {

    const _case: Cases = {
        active: casesResponse.totalCases ? casesResponse.totalCases : 0,
        recovered: casesResponse.recoveredCases ? casesResponse.recoveredCases : 0,
        suspected: casesResponse.suspectedCase ? casesResponse.suspectedCase : 0,
        deaths: casesResponse.deaths ? casesResponse.deaths : 0
    }

    return _case;

}

Então criei duas interfaces, uma que representa exatamente os dados vindos do Response:

interface stateCasesResponse {
    stateCode: string,
    stateName: string,
    lat: string,
    lng: string,
    cases: CasesResponse
}

E outra que será de fato utilizada na aplicação com os dados da maneira que queremos apresenta-los:

export interface StateCases {
    stateName: string,
    stateCode: string,
    latitude: string,
    longitude: string,
    cases: Cases
}

Na tela do Map utilizei o endpoint dos casos por estados ao invés do geral, por creio q em breve ele será necessário por lá.
Temos muita coisa pra mudar ainda, mas creio que essa seja uma boa estrutura para um ponto de partida e destravarmos essa parte.

OBS: Ainda enfrentamos o problema com o CORS para acessar a API, apesar da requisição me retornar 200 no status code, o axios ainda está lançando um network error. Para driblar esse problema usei a sugestão do amigo lá no Slack e instale a extensão do chrome CORS Unblock.

src/API/CasesService/index.ts Show resolved Hide resolved
src/API/CasesService/index.ts Outdated Show resolved Hide resolved
src/API/CasesService/index.ts Outdated Show resolved Hide resolved
@jeduardo824
Copy link
Contributor

jeduardo824 commented Mar 27, 2020

Resolve também os conflitos com a branch base, por favor.

@LucasGarcez
Copy link
Contributor Author

Resolve também os conflitos com a branch base, por favor.

Resolvido. Corrigi os demais problemas tbm que foram apontados.
Única coisa q falta é a questão do CORS q ainda não achei solução :(

function API() {

const baseURLs = {
cases: `https://api.covidzero.com.br/data_api/v1/data`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seria bom n deixar essa URL hardcoded, mas enfim, aceito.

@pabloklein pabloklein merged commit 544b596 into CovidZero:master Mar 27, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants