Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[architecture & improvement] improvement application architecture and update room version #10

Merged
merged 33 commits into from
May 7, 2024

Conversation

aleixo-dev
Copy link
Owner

@aleixo-dev aleixo-dev commented May 2, 2024

Motivação, Contexto e Descrição

  • Implementação de camada de data source, tanto para remote quanto para local (database).
  • Ajuste no componente de card categories em HomeScreen.kt.
  • Adicionar novo logo da aplicação.
  • Remoção e refatoração de métodos, classes e imports não utilizados.
  • Sistema de cache: evitar fazer chamada na api toda vez que o aplicativo é inicializado pelo usuário, a chamada vai acontecer a cada time > x minutos (somente quando inicializado) e salvar os dados no banco de dados local, se estiver dentro do range desses time < x minutos, os dados vão ser diretamente mostrado pelo db, no qual foi salvo da última vez que ocorreu a chamada via api, caso contrário deve realizar chamada via api e atualizar os dados no db
  • Implementação de testes unitários e testes instrumentados (database)

🛠️ Data Layer

A ideia de implementar a arquitetura utilizando uma camada de dados é pelo simples motivos de:

  • Separação de interesses tanto remote (chamadas api e afins) quanto local (database, data store e afins) sendo assim, deixando claro e direito para a classe de repository qual interface ou classe está implementando, além de deixar mais simples e organizada.
  • Facilidade na hora da implementação de testes unitários.
  • Abstrair fontes de dados do restante da aplicação.
  • Centralizar mudanças de dados.
  • Resolver conflitos entre diferentes data source.

Exemplo:

class FreeGameRepository @Inject constructor(
    private val remote : GameRemoteDataSource, // network
    private val local : GameLocalDataSource, // database
) : FreeGameRepository {
 /* ... */ 
}

@aleixo-dev aleixo-dev added enhancement New feature or request improvements labels May 2, 2024
@aleixo-dev aleixo-dev added this to the 1.1.0 milestone May 2, 2024
@aleixo-dev aleixo-dev force-pushed the feat/improvement-application-architecture branch from ee04ddb to 1643fdd Compare May 2, 2024 14:59
@aleixo-dev aleixo-dev changed the base branch from main to feat/implement-offline-data May 2, 2024 15:02
@aleixo-dev aleixo-dev changed the base branch from feat/implement-offline-data to main May 2, 2024 15:02
@aleixo-dev aleixo-dev added package package of improvements and features and removed enhancement New feature or request improvements labels May 2, 2024
@aleixo-dev aleixo-dev force-pushed the feat/improvement-application-architecture branch from 1c2158e to f0eda93 Compare May 6, 2024 18:02
@aleixo-dev aleixo-dev self-assigned this May 7, 2024
@aleixo-dev aleixo-dev changed the base branch from main to release/1.1.0 May 7, 2024 13:29
@aleixo-dev aleixo-dev marked this pull request as ready for review May 7, 2024 13:31
@aleixo-dev aleixo-dev merged commit 55f1535 into release/1.1.0 May 7, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package package of improvements and features
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant