Skip to content
This repository was archived by the owner on Dec 16, 2023. It is now read-only.

Commit e6261d2

Browse files
committed
Handle no internet connection
1 parent 1cd853f commit e6261d2

18 files changed

Lines changed: 90 additions & 48 deletions

File tree

app/src/main/java/com/marknkamau/justjava/JustJavaApp.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.google.android.libraries.places.api.Places
55
import com.marknjunge.core.data.local.PreferencesRepository
66
import com.marknjunge.core.data.repository.UsersRepository
77
import com.marknjunge.core.di.repositoriesModule
8-
import com.marknkamau.justjava.data.network.FirebaseService
98
import com.marknkamau.justjava.di.appModule
109
import com.marknkamau.justjava.di.dbModule
1110
import com.marknkamau.justjava.di.viewModelModule
@@ -24,7 +23,6 @@ import timber.log.Timber
2423
open class JustJavaApp : Application() {
2524
private val preferencesRepository: PreferencesRepository by inject()
2625
private val usersRepository: UsersRepository by inject()
27-
private val firebaseService: FirebaseService by inject()
2826

2927
private val coroutineScope = CoroutineScope(Dispatchers.IO)
3028

@@ -57,8 +55,8 @@ open class JustJavaApp : Application() {
5755

5856
if (preferencesRepository.isSignedIn) {
5957
coroutineScope.launch {
60-
usersRepository.updateFcmToken(firebaseService.getFcmToken())
61-
usersRepository.getCurrentUser().collect { }
58+
usersRepository.updateFcmToken()
59+
usersRepository.getCurrentUser().collect { }
6260
}
6361
}
6462
}

app/src/main/java/com/marknkamau/justjava/data/network/FirebaseService.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package com.marknkamau.justjava.data.network
22

33
import com.google.firebase.iid.FirebaseInstanceId
4+
import com.marknjunge.core.data.network.FirebaseService
45
import kotlinx.coroutines.tasks.await
56

6-
interface FirebaseService {
7-
suspend fun getFcmToken(): String
8-
}
9-
107
class AppFirebaseService : FirebaseService {
118
private val firebaseInstanceId by lazy { FirebaseInstanceId.getInstance() }
129

app/src/main/java/com/marknkamau/justjava/data/network/JustJavaFirebaseMessagingService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class JustJavaFirebaseMessagingService : FirebaseMessagingService(), KoinCompone
7373

7474
override fun onNewToken(token: String) {
7575
coroutineScope.launch {
76-
when (val resource = usersRepository.updateFcmToken(token)) {
76+
when (val resource = usersRepository.updateFcmToken()) {
7777
is Resource.Success -> Timber.d("FCM token updated")
7878
is Resource.Failure -> Timber.d("FCM token update failed: ${resource.message}")
7979
}

app/src/main/java/com/marknkamau/justjava/di/Modules.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import com.google.android.gms.auth.api.signin.GoogleSignIn
55
import com.google.android.gms.auth.api.signin.GoogleSignInClient
66
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
77
import com.marknjunge.core.data.local.PreferencesRepository
8+
import com.marknjunge.core.data.network.FirebaseService
89
import com.marknjunge.core.data.network.GoogleSignInClientStub
910
import com.marknkamau.justjava.BuildConfig
1011
import com.marknkamau.justjava.data.db.AppDatabase
1112
import com.marknkamau.justjava.data.db.DbRepository
1213
import com.marknkamau.justjava.data.db.DbRepositoryImpl
1314
import com.marknkamau.justjava.data.network.AppFirebaseService
14-
import com.marknkamau.justjava.data.network.FirebaseService
1515
import com.marknkamau.justjava.data.network.GoogleSignInClientStubImpl
1616
import com.marknkamau.justjava.data.preferences.PreferencesRepositoryImpl
1717
import com.marknkamau.justjava.ui.addressBook.AddressBookViewModel
@@ -65,9 +65,9 @@ val viewModelModule = module {
6565
viewModel { MainViewModel(get()) }
6666
viewModel { ProductDetailsViewModel(get()) }
6767
viewModel { CartViewModel(get(), get(), get()) }
68-
viewModel { SignInViewModel(get(), get(), get()) }
69-
viewModel { CompleteSignUpViewModel(get(), get()) }
70-
viewModel { SignUpViewModel(get(), get(), get()) }
68+
viewModel { SignInViewModel(get(), get()) }
69+
viewModel { CompleteSignUpViewModel(get()) }
70+
viewModel { SignUpViewModel(get(), get()) }
7171
viewModel { ProfileViewModel(get(), get()) }
7272
viewModel { AddressBookViewModel(get()) }
7373
viewModel { CheckoutViewModel(get(), get(), get(), get()) }

app/src/main/java/com/marknkamau/justjava/ui/completeSignUp/CompleteSignUpViewModel.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
77
import com.marknjunge.core.data.model.Resource
88
import com.marknjunge.core.data.repository.UsersRepository
9-
import com.marknkamau.justjava.data.network.FirebaseService
109
import kotlinx.coroutines.launch
1110

12-
class CompleteSignUpViewModel(private val usersRepository: UsersRepository, private val firebaseService: FirebaseService) : ViewModel() {
11+
class CompleteSignUpViewModel(private val usersRepository: UsersRepository) : ViewModel() {
1312
private val _loading = MutableLiveData<Boolean>()
1413
val loading: LiveData<Boolean> = _loading
1514

app/src/main/java/com/marknkamau/justjava/ui/login/SignInViewModel.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,11 @@ import com.marknjunge.core.data.model.Resource
88
import com.marknjunge.core.data.model.User
99
import com.marknjunge.core.data.repository.AuthRepository
1010
import com.marknjunge.core.data.repository.UsersRepository
11-
import com.marknkamau.justjava.data.network.FirebaseService
1211
import kotlinx.coroutines.launch
1312

1413
class SignInViewModel(
1514
private val authRepository: AuthRepository,
16-
private val usersRepository: UsersRepository,
17-
private val firebaseService: FirebaseService
15+
private val usersRepository: UsersRepository
1816
) : ViewModel() {
1917
private val _loading = MutableLiveData<Boolean>()
2018
val loading: LiveData<Boolean> = _loading
@@ -27,7 +25,7 @@ class SignInViewModel(
2725
liveData.value = authRepository.signInWithGoogle(idToken)
2826

2927
if(liveData.value is Resource.Success){
30-
usersRepository.updateFcmToken(firebaseService.getFcmToken())
28+
usersRepository.updateFcmToken()
3129
}
3230

3331
_loading.value = false
@@ -44,7 +42,7 @@ class SignInViewModel(
4442
liveData.value = authRepository.signIn(email, password)
4543

4644
if(liveData.value is Resource.Success){
47-
usersRepository.updateFcmToken(firebaseService.getFcmToken())
45+
usersRepository.updateFcmToken()
4846
}
4947

5048
_loading.value = false

app/src/main/java/com/marknkamau/justjava/ui/signup/SignUpViewModel.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,11 @@ import com.marknjunge.core.data.model.Resource
88
import com.marknjunge.core.data.model.User
99
import com.marknjunge.core.data.repository.AuthRepository
1010
import com.marknjunge.core.data.repository.UsersRepository
11-
import com.marknkamau.justjava.data.network.FirebaseService
1211
import kotlinx.coroutines.launch
1312

1413
class SignUpViewModel(
1514
private val authRepository: AuthRepository,
16-
private val usersRepository: UsersRepository,
17-
private val firebaseService: FirebaseService
15+
private val usersRepository: UsersRepository
1816
) : ViewModel() {
1917
private val _loading = MutableLiveData<Boolean>()
2018
val loading: LiveData<Boolean> = _loading
@@ -33,7 +31,7 @@ class SignUpViewModel(
3331
livedata.value = authRepository.signUp(firstName, lastName, mobile, email, password)
3432

3533
if(livedata.value is Resource.Success){
36-
usersRepository.updateFcmToken(firebaseService.getFcmToken())
34+
usersRepository.updateFcmToken()
3735
}
3836

3937
_loading.value = false

app/src/test/java/com/marknkamau/justjava/ui/completeSignUp/CompleteSignUpViewModelTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.marknkamau.justjava.ui.completeSignUp
33
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
44
import androidx.lifecycle.Observer
55
import com.marknjunge.core.data.model.Resource
6+
import com.marknjunge.core.data.network.FirebaseService
67
import com.marknjunge.core.data.repository.UsersRepository
7-
import com.marknkamau.justjava.data.network.FirebaseService
88
import io.mockk.MockKAnnotations
99
import io.mockk.coEvery
1010
import io.mockk.impl.annotations.MockK
@@ -40,11 +40,11 @@ class CompleteSignUpViewModelTest {
4040
@Before
4141
fun setup() {
4242
MockKAnnotations.init(this, relaxUnitFun = true)
43-
viewModel = CompleteSignUpViewModel(usersRepository, firebaseService)
43+
viewModel = CompleteSignUpViewModel(usersRepository)
4444
Dispatchers.setMain(testDispatcher)
4545

4646
coEvery { firebaseService.getFcmToken() } returns ""
47-
coEvery { usersRepository.updateFcmToken(any()) } returns Resource.Success(Unit)
47+
coEvery { usersRepository.updateFcmToken() } returns Resource.Success(Unit)
4848
}
4949

5050
@ExperimentalCoroutinesApi

app/src/test/java/com/marknkamau/justjava/ui/login/SignInViewModelTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule
44
import androidx.lifecycle.Observer
55
import com.marknjunge.core.data.model.Resource
66
import com.marknjunge.core.data.model.User
7+
import com.marknjunge.core.data.network.FirebaseService
78
import com.marknjunge.core.data.repository.AuthRepository
89
import com.marknjunge.core.data.repository.UsersRepository
9-
import com.marknkamau.justjava.data.network.FirebaseService
1010
import io.mockk.MockKAnnotations
1111
import io.mockk.coEvery
1212
import io.mockk.impl.annotations.MockK
@@ -45,11 +45,11 @@ class SignInViewModelTest {
4545
@Before
4646
fun setup() {
4747
MockKAnnotations.init(this, relaxUnitFun = true)
48-
viewModel = SignInViewModel(authRepository, usersRepository, firebaseService)
48+
viewModel = SignInViewModel(authRepository, usersRepository)
4949
Dispatchers.setMain(testDispatcher)
5050

5151
coEvery { firebaseService.getFcmToken() } returns ""
52-
coEvery { usersRepository.updateFcmToken(any()) } returns Resource.Success(Unit)
52+
coEvery { usersRepository.updateFcmToken() } returns Resource.Success(Unit)
5353
}
5454

5555
@ExperimentalCoroutinesApi

app/src/test/java/com/marknkamau/justjava/ui/profile/ProfileViewModelTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule
44
import androidx.lifecycle.Observer
55
import com.marknjunge.core.data.model.Resource
66
import com.marknjunge.core.data.model.User
7+
import com.marknjunge.core.data.repository.AuthRepository
78
import com.marknjunge.core.data.repository.UsersRepository
89
import com.marknkamau.justjava.utils.SampleData
910
import io.mockk.MockKAnnotations
@@ -33,14 +34,17 @@ class ProfileViewModelTest {
3334
@MockK
3435
private lateinit var usersRepository: UsersRepository
3536

37+
@MockK
38+
private lateinit var authRepository: AuthRepository
39+
3640
private lateinit var viewModel: ProfileViewModel
3741

3842
@ExperimentalCoroutinesApi
3943
@Before
4044
fun setup() {
4145
MockKAnnotations.init(this, relaxUnitFun = true)
4246
Dispatchers.setMain(testDispatcher)
43-
viewModel = ProfileViewModel(usersRepository)
47+
viewModel = ProfileViewModel(usersRepository, authRepository)
4448
}
4549

4650
@ExperimentalCoroutinesApi

0 commit comments

Comments
 (0)