Skip to content

Commit bc19d3a

Browse files
fixed App build issue + network calls (#2383)
Co-authored-by: Aditya3815 <tiadiaditya@gmail.com> Co-authored-by: Aditya Tiadi <84711122+Aditya3815@users.noreply.github.com>
1 parent da4389b commit bc19d3a

10 files changed

Lines changed: 54 additions & 65 deletions

File tree

cmp-navigation/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ plugins {
1111
alias(libs.plugins.mifos.kmp.library)
1212
alias(libs.plugins.mifos.cmp.feature)
1313
alias(libs.plugins.mifos.kmp.koin)
14+
alias(libs.plugins.kotlin.serialization)
1415
}
1516

1617
android {
@@ -20,6 +21,8 @@ android {
2021
kotlin {
2122
sourceSets {
2223
commonMain.dependencies{
24+
implementation(libs.kotlinx.serialization.json)
25+
2326
implementation(projects.core.domain)
2427
implementation(projects.core.common)
2528
implementation(projects.core.data)
@@ -29,7 +32,7 @@ kotlin {
2932

3033
// implementation(projects.feature.about)
3134
// implementation(projects.feature.activate)
32-
// implementation(projects.feature.auth)
35+
implementation(projects.feature.auth)
3336
// implementation(projects.feature.center)
3437
// implementation(projects.feature.checkerInboxTask)
3538
// implementation(projects.feature.client)

cmp-navigation/src/commonMain/kotlin/cmp/navigation/di/KoinModules.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.mifos.core.datastore.di.PreferencesModule
1515
import com.mifos.core.domain.di.UseCaseModule
1616
import com.mifos.core.network.di.DataManagerModule
1717
import com.mifos.core.network.di.NetworkModule
18+
import com.mifos.feature.auth.di.AuthModule
1819
import com.mifos.room.di.DaoModule
1920
import com.mifos.room.di.HelperModule
2021
import com.mifos.room.di.PlatformSpecificDatabaseModule
@@ -45,7 +46,7 @@ object KoinModules {
4546
includes(
4647
// AboutModule,
4748
// ActivateModule,
48-
// AuthModule,
49+
AuthModule,
4950
// CenterModule,
5051
// CheckerInboxTaskModule,
5152
// ClientModule,

cmp-navigation/src/commonMain/kotlin/cmp/navigation/navigation/RootNavGraph.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import androidx.navigation.compose.composable
1717
import cmp.navigation.App
1818
import cmp.navigation.navigation.NavGraphRoute.MAIN_GRAPH
1919
import com.mifos.core.data.util.NetworkMonitor
20+
import com.mifos.feature.auth.navigation.AuthScreens
21+
import com.mifos.feature.auth.navigation.authNavGraph
2022

2123
@Composable
2224
fun RootNavGraph(
@@ -26,10 +28,16 @@ fun RootNavGraph(
2628
) {
2729
NavHost(
2830
navController = navHostController,
29-
startDestination = MAIN_GRAPH,
31+
startDestination = AuthScreens.LoginScreenRoute.route,
3032
route = NavGraphRoute.ROOT_GRAPH,
3133
modifier = modifier,
3234
) {
35+
authNavGraph(
36+
navigateHome = { navHostController.navigate(MAIN_GRAPH) },
37+
navigatePasscode = { },
38+
updateServerConfig = {},
39+
)
40+
3341
composable(MAIN_GRAPH) {
3442
App(
3543
modifier = modifier,

core/database/src/appleMain/kotlin/com/mifos/room/di/DatabaseModule.apple.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@
99
*/
1010
package com.mifos.room.di
1111

12-
actual val PlatformSpecificDatabaseModule: org.koin.core.annotation.Module
12+
import org.koin.core.module.Module
13+
14+
actual val PlatformSpecificDatabaseModule: Module
1315
get() = TODO("Not yet implemented")

core/domain/src/commonMain/kotlin/com/mifos/core/domain/useCases/LoginUseCase.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.flow
2323
class LoginUseCase(
2424
private val loginRepository: LoginRepository,
2525
) {
26-
2726
operator fun invoke(
2827
username: String,
2928
password: String,

core/network/src/commonMain/kotlin/com/mifos/core/network/di/DataMangerModule.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package com.mifos.core.network.di
1111

12+
import com.mifos.core.network.BaseApiManager
1213
import com.mifos.core.network.DataManager
1314
import com.mifos.core.network.datamanager.DataManagerAuth
1415
import com.mifos.core.network.datamanager.DataManagerCenter
@@ -31,7 +32,7 @@ import org.koin.dsl.module
3132

3233
val DataManagerModule = module {
3334
single { DataManager() }
34-
single { DataManagerAuth(get()) }
35+
single { DataManagerAuth(get<BaseApiManager>()) }
3536
single { DataManagerCenter(get(), get(), get(), get()) }
3637
single { DataManagerCharge(get(), get(), get()) }
3738
single { DataManagerCheckerInbox(get()) }

core/network/src/commonMain/kotlin/com/mifos/core/network/di/NetworkModule.kt

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,34 @@
1010
package com.mifos.core.network.di
1111

1212
import coil3.ImageLoader
13-
import com.mifos.core.common.network.MifosDispatchers
1413
import com.mifos.core.common.utils.getInstanceUrl
1514
import com.mifos.core.datastore.UserPreferencesRepository
16-
import com.mifos.core.datastore.UserPreferencesRepositoryImpl
1715
import com.mifos.core.network.BaseApiManager
1816
import com.mifos.core.network.BaseUrl
17+
import com.mifos.core.network.KtorHttpClient
1918
import com.mifos.core.network.KtorfitClient
19+
import com.mifos.core.network.MifosInterceptor
2020
import com.mifos.core.network.utils.ImageLoaderUtils
21+
import de.jensklingenberg.ktorfit.Ktorfit
22+
import io.ktor.client.HttpClient
23+
import io.ktor.client.plugins.auth.Auth
2124
import kotlinx.coroutines.CoroutineScope
2225
import kotlinx.coroutines.Dispatchers
2326
import kotlinx.coroutines.flow.first
2427
import kotlinx.coroutines.launch
25-
import org.koin.core.qualifier.named
2628
import org.koin.dsl.module
2729

2830
val NetworkModule = module {
2931

30-
single<UserPreferencesRepository> {
31-
UserPreferencesRepositoryImpl(
32-
get(),
33-
get(
34-
named(
35-
MifosDispatchers.IO.name,
36-
),
37-
),
38-
get(named(MifosDispatchers.Unconfined)),
39-
)
32+
single<HttpClient>(MifosClient) {
33+
val preferencesRepository = get<UserPreferencesRepository>()
34+
35+
KtorHttpClient.config {
36+
install(Auth)
37+
install(MifosInterceptor) {
38+
repository = preferencesRepository
39+
}
40+
}
4041
}
4142

4243
single<KtorfitClient>(MifosClient) {
@@ -50,6 +51,13 @@ val NetworkModule = module {
5051

5152
single { BaseApiManager(get(), get()) }
5253

54+
single<Ktorfit> {
55+
Ktorfit.Builder()
56+
.baseUrl(BaseUrl().url)
57+
.httpClient(get<HttpClient>(MifosClient))
58+
.build()
59+
}
60+
5361
single {
5462
val prefManager: UserPreferencesRepository = get()
5563
val baseManager = com.mifos.core.network.apimanager.BaseApiManager.getInstance()

feature/auth/build.gradle.kts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ kotlin {
2121
implementation(compose.material3)
2222
implementation(compose.components.resources)
2323
implementation(compose.ui)
24-
implementation(libs.kermit.simple)
25-
implementation(libs.kermit.logging)
26-
api(projects.core.data)
27-
api(projects.core.domain)
24+
implementation(projects.core.data)
25+
implementation(projects.core.domain)
2826
}
2927
}
3028
}

feature/auth/src/commonMain/kotlin/com/mifos/feature/auth/login/LoginViewModel.kt

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ import com.mifos.core.domain.useCases.PasswordValidationUseCase
2323
import com.mifos.core.domain.useCases.UsernameValidationUseCase
2424
import com.mifos.core.model.objects.users.User
2525
import com.mifos.core.network.model.PostAuthenticationResponse
26-
import kotlinx.coroutines.Dispatchers
27-
import kotlinx.coroutines.IO
2826
import kotlinx.coroutines.flow.MutableStateFlow
2927
import kotlinx.coroutines.flow.SharingStarted
3028
import kotlinx.coroutines.flow.StateFlow
@@ -39,7 +37,6 @@ import kotlinx.coroutines.launch
3937

4038
class LoginViewModel(
4139
private val prefManager: UserPreferencesRepository,
42-
// private val context: Context,
4340
private val usernameValidationUseCase: UsernameValidationUseCase,
4441
private val passwordValidationUseCase: PasswordValidationUseCase,
4542
private val loginUseCase: LoginUseCase,
@@ -71,43 +68,12 @@ class LoginViewModel(
7168
return
7269
}
7370
viewModelScope.launch {
74-
setupPrefManger(username, password)
71+
login(username, password)
7572
}
7673
}
7774

78-
private fun setupPrefManger(username: String, password: String) {
75+
private fun login(username: String, password: String) {
7976
viewModelScope.launch {
80-
_loginUiState.value = LoginUiState.ShowProgress
81-
82-
loginUseCase(username, password).collect { result ->
83-
when (result) {
84-
is DataState.Error -> {
85-
_loginUiState.value =
86-
LoginUiState.ShowError(Res.string.feature_auth_error_login_failed)
87-
Logger.e("Login Error", result.exception)
88-
}
89-
90-
is DataState.Loading -> {
91-
_loginUiState.value = LoginUiState.ShowProgress
92-
}
93-
94-
is DataState.Success -> {
95-
result.data.let { user ->
96-
if (user.userId != null && user.authenticated == true) {
97-
onLoginSuccessful(user, username, password)
98-
} else {
99-
_loginUiState.value =
100-
LoginUiState.ShowError(Res.string.feature_auth_error_login_failed)
101-
}
102-
}
103-
}
104-
}
105-
}
106-
}
107-
}
108-
109-
fun login(username: String, password: String) {
110-
viewModelScope.launch(Dispatchers.IO) {
11177
loginUseCase(username, password).collect { result ->
11278
when (result) {
11379
is DataState.Error -> {
@@ -121,10 +87,13 @@ class LoginViewModel(
12187
}
12288

12389
is DataState.Success -> {
124-
result.data.let {
125-
if (it.userId != null && it.authenticated == true) {
126-
onLoginSuccessful(it, username, password)
127-
}
90+
if (result.data.authenticated == true) {
91+
onLoginSuccessful(result.data, username, password)
92+
} else {
93+
_loginUiState.value =
94+
LoginUiState.ShowError(Res.string.feature_auth_error_login_failed)
95+
96+
Logger.d("@@@", Throwable("login: ${result.data}"))
12897
}
12998
}
13099
}
@@ -156,7 +125,7 @@ class LoginViewModel(
156125
if (passcode.value != null) {
157126
_loginUiState.value = LoginUiState.HomeActivityIntent
158127
} else {
159-
_loginUiState.value = LoginUiState.PassCodeActivityIntent
128+
_loginUiState.value = LoginUiState.HomeActivityIntent
160129
}
161130
}
162131
}

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ include(":core:ui")
4747

4848
////include(":feature:about")
4949
//include(":feature:activate")
50-
//include(":feature:auth")
50+
include(":feature:auth")
5151
//include(":feature:center")
5252
//include(":feature:checker-inbox-task")
5353
//include(":feature:client")

0 commit comments

Comments
 (0)