Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ android {

dependencies {

//Testes Unitarios e Instrumentados
testImplementation("io.mockk:mockk:1.13.10")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")


//Room
implementation(libs.room.runtime)
implementation(libs.room.ktx)
Expand Down
10 changes: 8 additions & 2 deletions app/src/main/java/com/delecrode/devhub/App.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.delecrode.devhub

import android.app.Application
import com.delecrode.devhub.di.appModule
import com.delecrode.devhub.di.dataModule
import com.delecrode.devhub.di.repositoryModule
import com.delecrode.devhub.di.useCaseModule
import com.delecrode.devhub.di.viewModelModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.GlobalContext.startKoin

Expand All @@ -10,7 +13,10 @@ class App : Application() {
super.onCreate()
startKoin {
androidContext(this@App)
modules(appModule)
modules( dataModule,
repositoryModule,
useCaseModule,
viewModelModule)
}
}
}
74 changes: 0 additions & 74 deletions app/src/main/java/com/delecrode/devhub/di/AppModule.kt

This file was deleted.

42 changes: 42 additions & 0 deletions app/src/main/java/com/delecrode/devhub/di/DataModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.delecrode.devhub.di

import androidx.room.Room
import com.delecrode.devhub.data.local.dataStore.AuthLocalDataSource
import com.delecrode.devhub.data.local.dataStore.AuthLocalDataSourceImpl
import com.delecrode.devhub.data.local.database.AppDatabase
import com.delecrode.devhub.data.local.database.MIGRATION_1_2
import com.delecrode.devhub.data.local.database.data.RepoLocalDataSource
import com.delecrode.devhub.data.local.database.data.RepoLocalDataSourceImpl
import com.delecrode.devhub.data.remote.firebase.UserExtraData
import com.delecrode.devhub.data.remote.webApi.instance.RetrofitInstance
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore
import org.koin.android.ext.koin.androidContext
import org.koin.dsl.module

val dataModule = module {

single { FirebaseAuth.getInstance() }
single { FirebaseFirestore.getInstance() }

single { RetrofitInstance.userApi }
single { RetrofitInstance.repoApi }

single {
Room.databaseBuilder(
androidContext(),
AppDatabase::class.java,
"app_database"
)
.addMigrations(MIGRATION_1_2)
.build()
}

single { get<AppDatabase>().repoDao() }

single<AuthLocalDataSource> { AuthLocalDataSourceImpl(get()) }
single<RepoLocalDataSource> { RepoLocalDataSourceImpl(get()) }

single { com.delecrode.devhub.data.remote.firebase.FirebaseAuth(get()) }
single { UserExtraData(get()) }
}
24 changes: 24 additions & 0 deletions app/src/main/java/com/delecrode/devhub/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.delecrode.devhub.di

import com.delecrode.devhub.data.repository.AuthRepositoryImpl
import com.delecrode.devhub.data.repository.RepoRepositoryImpl
import com.delecrode.devhub.data.repository.UserRepositoryImpl
import com.delecrode.devhub.domain.repository.AuthRepository
import com.delecrode.devhub.domain.repository.RepoRepository
import com.delecrode.devhub.domain.repository.UserRepository
import org.koin.dsl.module

val repositoryModule = module {

single<UserRepository> {
UserRepositoryImpl(get(), get(), get())
}

single<RepoRepository> {
RepoRepositoryImpl(get(), get(), get())
}

single<AuthRepository> {
AuthRepositoryImpl(get(), get(), get())
}
}
11 changes: 11 additions & 0 deletions app/src/main/java/com/delecrode/devhub/di/UseCaseModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.delecrode.devhub.di

import com.delecrode.devhub.domain.useCase.AuthUseCase
import com.delecrode.devhub.domain.useCase.FetchUserDataUseCase
import org.koin.dsl.module

val useCaseModule = module {

factory { FetchUserDataUseCase(get()) }
factory { AuthUseCase(get()) }
}
24 changes: 24 additions & 0 deletions app/src/main/java/com/delecrode/devhub/di/ViewModelModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.delecrode.devhub.di

import HomeViewModel
import com.delecrode.devhub.domain.session.SessionViewModel
import com.delecrode.devhub.presentation.ui.favoritos.RepoFavViewModel
import com.delecrode.devhub.presentation.ui.forgot.ForgotPasswordViewModel
import com.delecrode.devhub.presentation.ui.login.AuthViewModel
import com.delecrode.devhub.presentation.ui.profile.ProfileViewModel
import com.delecrode.devhub.presentation.ui.register.RegisterViewModel
import com.delecrode.devhub.presentation.ui.repo.RepoDetailViewModel
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module

val viewModelModule = module {

viewModel { HomeViewModel(get(), get()) }
viewModel { ProfileViewModel(get(), get()) }
viewModel { AuthViewModel(get()) }
viewModel { SessionViewModel(get()) }
viewModel { RegisterViewModel(get(), get()) }
viewModel { RepoDetailViewModel(get()) }
viewModel { RepoFavViewModel(get()) }
viewModel { ForgotPasswordViewModel(get()) }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.delecrode.devhub.domain.useCase

import com.delecrode.devhub.domain.repository.AuthRepository

class AuthUseCase (
private val authRepository: AuthRepository

){
suspend fun signOut() =
authRepository.signOut()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.delecrode.devhub.domain.useCase

import com.delecrode.devhub.domain.repository.UserRepository

class FetchUserDataUseCase(
private val userRepository: UserRepository,
) {
suspend fun loadUserFromFirebase() =
userRepository.getUserForFirebase()

suspend fun loadUserFromGit(username: String) =
userRepository.getUserForGitHub(username)

suspend fun loadRepos(username: String) =
userRepository.getRepos(username)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.delecrode.devhub.presentation.navigation

import HomeViewModel
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.navigation.NavType
Expand All @@ -13,7 +14,6 @@ import com.delecrode.devhub.presentation.ui.favoritos.ReposFavScreen
import com.delecrode.devhub.presentation.ui.forgot.ForgotPasswordScreen
import com.delecrode.devhub.presentation.ui.forgot.ForgotPasswordViewModel
import com.delecrode.devhub.presentation.ui.home.HomeScreen
import com.delecrode.devhub.presentation.ui.home.HomeViewModel
import com.delecrode.devhub.presentation.ui.login.AuthViewModel
import com.delecrode.devhub.presentation.ui.login.LoginScreen
import com.delecrode.devhub.presentation.ui.profile.ProfileScreen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ fun ForgotPasswordScreen(navController: NavController, viewModel: ForgotPassword

var email by remember { mutableStateOf("") }

LaunchedEffect(state.success) {
if (state.success) {
LaunchedEffect(state.isSuccess) {
if (state.isSuccess) {
navController.navigate(AppDestinations.Login.route){
popUpTo(AppDestinations.Login.route){
inclusive = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ package com.delecrode.devhub.presentation.ui.forgot
data class ForgotPasswordState(
val isLoading: Boolean = false,
val error: String? = null,
val success: Boolean = false,
val isSuccess: Boolean = false,
val emailError: String? = null
)
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ForgotPasswordViewModel(private val authRepository: AuthRepository) : View
is Result.Success -> {
_state.value = _state.value.copy(
isLoading = false,
success = true
isSuccess = true
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.delecrode.devhub.presentation.ui.home

import HomeViewModel
import android.widget.Toast
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
Expand Down Expand Up @@ -89,7 +90,7 @@ fun HomeScreen(navController: NavController, homeViewModel: HomeViewModel) {
}
}
LaunchedEffect(Unit) {
homeViewModel.getUserForFirebase()
homeViewModel.loadHome()
}

Scaffold(
Expand Down
Loading