Skip to content

Commit 84e56a0

Browse files
Multi user app state enhanced
unused val declaration removed
1 parent acbd7f7 commit 84e56a0

File tree

16 files changed

+118
-59
lines changed

16 files changed

+118
-59
lines changed

app/src/main/java/com/github/code/gambit/data/remote/services/file/FileServiceImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.github.code.gambit.data.remote.responses.ListResponse
55
import com.github.code.gambit.data.remote.services.ApiService
66
import com.github.code.gambit.utility.sharedpreference.LastEvaluatedKeyManager
77
import com.github.code.gambit.utility.sharedpreference.UserManager
8+
import java.lang.Exception
89

910
class FileServiceImpl(
1011
val apiService: ApiService,
@@ -17,6 +18,9 @@ class FileServiceImpl(
1718
override suspend fun getFiles(): List<FileNetworkEntity> {
1819
val lek: String = lekManager.getLastEvalKey(LastEvaluatedKeyManager.KeyType.FILE)
1920
val listResponse: ListResponse<FileNetworkEntity> = apiService.getFiles(userId, lek, null)
21+
if (listResponse.body == null) {
22+
throw Exception(listResponse.error)
23+
}
2024
if (listResponse.body?.lastEvaluatedKey != null) {
2125
lekManager.putLastEvalKey(
2226
listResponse.body?.lastEvaluatedKey!!,

app/src/main/java/com/github/code/gambit/di/RepositoryModule.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import com.github.code.gambit.data.mapper.aws.UserAttributeMapper
55
import com.github.code.gambit.data.remote.NetworkDataSource
66
import com.github.code.gambit.data.remote.services.auth.AuthService
77
import com.github.code.gambit.data.remote.services.auth.AuthServiceImpl
8-
import com.github.code.gambit.repositories.AuthRepository
8+
import com.github.code.gambit.repositories.auth.AuthRepository
9+
import com.github.code.gambit.repositories.auth.AuthRepositoryImpl
910
import com.github.code.gambit.repositories.fileupload.FileUploadRepository
1011
import com.github.code.gambit.repositories.fileupload.FileUploadRepositoryImpl
1112
import com.github.code.gambit.repositories.home.HomeRepository
1213
import com.github.code.gambit.repositories.home.HomeRepositoryImpl
1314
import com.github.code.gambit.repositories.profile.ProfileRepository
1415
import com.github.code.gambit.repositories.profile.ProfileRepositoryImpl
16+
import com.github.code.gambit.utility.sharedpreference.LastEvaluatedKeyManager
1517
import com.github.code.gambit.utility.sharedpreference.UserManager
1618
import dagger.Module
1719
import dagger.Provides
@@ -40,10 +42,19 @@ object RepositoryModule {
4042
fun provideAuthRepository(
4143
authService: AuthService,
4244
networkDataSource: NetworkDataSource,
45+
cacheDataSource: CacheDataSource,
4346
userManager: UserManager,
47+
lastEvaluatedKeyManager: LastEvaluatedKeyManager,
4448
userAttributeMapper: UserAttributeMapper
4549
): AuthRepository {
46-
return AuthRepository(authService, networkDataSource, userManager, userAttributeMapper)
50+
return AuthRepositoryImpl(
51+
authService,
52+
networkDataSource,
53+
cacheDataSource,
54+
userManager,
55+
lastEvaluatedKeyManager,
56+
userAttributeMapper
57+
)
4758
}
4859

4960
@Singleton

app/src/main/java/com/github/code/gambit/helper/profile/ProfileState.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.github.code.gambit.data.model.User
44

55
sealed class ProfileState {
66
object Loading : ProfileState()
7+
object LogOutSuccess : ProfileState()
78
data class Error(val message: String) : ProfileState()
89
data class ProfileLoaded(val user: User) : ProfileState()
910
object PasswordUpdated : ProfileState()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.github.code.gambit.repositories.auth
2+
3+
import com.github.code.gambit.data.model.User
4+
import com.github.code.gambit.helper.ServiceResult
5+
import com.github.code.gambit.helper.auth.AuthData
6+
7+
interface AuthRepository {
8+
9+
suspend fun login(authData: AuthData): ServiceResult<User>
10+
suspend fun signUp(authData: AuthData): ServiceResult<Unit>
11+
suspend fun logOut(): ServiceResult<Unit>
12+
suspend fun signUpConfirmation(authData: AuthData): ServiceResult<User>
13+
}

app/src/main/java/com/github/code/gambit/repositories/AuthRepository.kt renamed to app/src/main/java/com/github/code/gambit/repositories/auth/AuthRepositoryImpl.kt

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
1-
package com.github.code.gambit.repositories
1+
package com.github.code.gambit.repositories.auth
22

33
import com.amazonaws.mobileconnectors.cognitoidentityprovider.util.CognitoJWTParser
4+
import com.github.code.gambit.data.local.CacheDataSource
45
import com.github.code.gambit.data.mapper.aws.UserAttributeMapper
56
import com.github.code.gambit.data.model.User
67
import com.github.code.gambit.data.remote.NetworkDataSource
78
import com.github.code.gambit.data.remote.services.auth.AuthService
89
import com.github.code.gambit.helper.ServiceResult
910
import com.github.code.gambit.helper.auth.AuthData
11+
import com.github.code.gambit.utility.sharedpreference.LastEvaluatedKeyManager
1012
import com.github.code.gambit.utility.sharedpreference.UserManager
13+
import java.lang.Exception
1114

12-
class AuthRepository
15+
class AuthRepositoryImpl
1316

1417
constructor(
1518
private val authService: AuthService,
1619
private val networkDataSource: NetworkDataSource,
20+
private val cacheDataSource: CacheDataSource,
1721
private val userManager: UserManager,
22+
private val lastEvaluatedKeyManager: LastEvaluatedKeyManager,
1823
private val userAttributeMapper: UserAttributeMapper
19-
) {
24+
) : AuthRepository {
2025

21-
suspend fun login(authData: AuthData): ServiceResult<User> {
26+
override suspend fun login(authData: AuthData): ServiceResult<User> {
2227
val res = authService.login(authData)
2328
if (res is ServiceResult.Error) {
2429
return res
@@ -45,12 +50,10 @@ constructor(
4550

4651
userManager.updateUser(User.merge(user, user_in_db))
4752

48-
val update = userManager.getUser()
49-
5053
return ServiceResult.Success(user)
5154
}
5255

53-
suspend fun signUp(authData: AuthData): ServiceResult<Unit> {
56+
override suspend fun signUp(authData: AuthData): ServiceResult<Unit> {
5457
val signUpRes = authService.signUp(authData)
5558
if (signUpRes is ServiceResult.Error) {
5659
return signUpRes
@@ -59,7 +62,19 @@ constructor(
5962
return signUpRes
6063
}
6164

62-
suspend fun signUpConfirmation(authData: AuthData): ServiceResult<User> {
65+
override suspend fun logOut(): ServiceResult<Unit> {
66+
return try {
67+
authService.logOut()
68+
userManager.revokeAuthentication()
69+
lastEvaluatedKeyManager.flush()
70+
cacheDataSource.deleteFiles()
71+
return ServiceResult.Success(Unit)
72+
} catch (exception: Exception) {
73+
ServiceResult.Error(exception)
74+
}
75+
}
76+
77+
override suspend fun signUpConfirmation(authData: AuthData): ServiceResult<User> {
6378
val confirmationResult = authService.confirmSignUp(authData)
6479
if (confirmationResult is ServiceResult.Error) {
6580
return confirmationResult

app/src/main/java/com/github/code/gambit/repositories/home/HomeRepositoryImpl.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,12 @@ constructor(
2626
try {
2727
data = networkDataSource.getFiles()
2828
cacheDataSource.insertFiles(data)
29+
val files = cacheDataSource.getFiles()
30+
emit(ServiceResult.Success(files))
2931
} catch (internet: NoInternetException) {
3032
emit(ServiceResult.Error(internet))
3133
} catch (exception: Exception) {
3234
emit(ServiceResult.Error(exception))
33-
} finally {
34-
val files = cacheDataSource.getFiles()
35-
emit(ServiceResult.Success(files))
3635
}
3736
}
3837
}

app/src/main/java/com/github/code/gambit/repositories/profile/ProfileRepository.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@ interface ProfileRepository {
99
suspend fun getUser(): Flow<ServiceResult<User>>
1010
suspend fun updateUserName(name: String): ServiceResult<String>
1111
suspend fun updateUserPassword(oldPassword: String, newPassword: String): ServiceResult<Boolean>
12-
suspend fun logOut(): ServiceResult<Unit>
1312
}

app/src/main/java/com/github/code/gambit/repositories/profile/ProfileRepositoryImpl.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ constructor(
4949
}
5050
}
5151

52-
override suspend fun updateUserPassword(oldPassword: String, newPassword: String): ServiceResult<Boolean> {
52+
override suspend fun updateUserPassword(
53+
oldPassword: String,
54+
newPassword: String
55+
): ServiceResult<Boolean> {
5356
return try {
5457
val result = authService.resetPassword(oldPassword, newPassword)
5558
if (result is ServiceResult.Error) {
@@ -73,13 +76,4 @@ constructor(
7376
ServiceResult.Error(e)
7477
}
7578
}
76-
77-
override suspend fun logOut(): ServiceResult<Unit> {
78-
return try {
79-
authService.logOut()
80-
return ServiceResult.Success(Unit)
81-
} catch (exception: Exception) {
82-
ServiceResult.Error(exception)
83-
}
84-
}
8579
}

app/src/main/java/com/github/code/gambit/ui/activity/main/MainActivity.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ class MainActivity : AppCompatActivity(), BottomNavController {
8181
R.id.homeFragment -> {
8282
// info bottomNav is hiddent until data is loading in homeFragment
8383
// binding.bottomNavContainer.bottomNavShow()
84-
binding.root.getTransition(R.id.start_to_end).setEnable(true)
85-
binding.dragIcon.show()
84+
showMotionLayout()
8685
}
8786
R.id.authFragment -> {
8887
hideBottomNav()
@@ -161,6 +160,16 @@ class MainActivity : AppCompatActivity(), BottomNavController {
161160
viewModel.setEvent(MainEvent.UploadFileEvent(fileUri!!))
162161
}
163162

163+
private fun showMotionLayout() {
164+
binding.root.getTransition(R.id.start_to_end).setEnable(true)
165+
binding.dragIcon.show()
166+
}
167+
168+
private fun hideMotionLayout() {
169+
binding.root.getTransition(R.id.start_to_end).setEnable(false)
170+
binding.dragIcon.hide()
171+
}
172+
164173
private fun registerAmplifyCallback() {
165174
Amplify.Hub.subscribe(HubChannel.AUTH) { event ->
166175
when (event.name) {
@@ -172,8 +181,8 @@ class MainActivity : AppCompatActivity(), BottomNavController {
172181
AuthChannelEventName.SIGNED_IN ->
173182
Timber.tag("AuthQuickstart").i("Auth just became signed in")
174183
AuthChannelEventName.SIGNED_OUT -> {
175-
userManager.revokeAuthentication()
176184
Timber.tag("AuthQuickstart").i("Auth just became signed out")
185+
runOnUiThread { hideMotionLayout() }
177186
}
178187
AuthChannelEventName.SESSION_EXPIRED -> {
179188
userManager.revokeAuthentication()
@@ -187,6 +196,10 @@ class MainActivity : AppCompatActivity(), BottomNavController {
187196
}
188197

189198
override fun onBackPressed() {
199+
if (!userManager.isAuthenticated()) {
200+
super.onBackPressed()
201+
return
202+
}
190203
val hostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment_container)
191204
if (hostFragment is NavHostFragment) {
192205
when (val fragment = hostFragment.childFragmentManager.fragments.first()) {

app/src/main/java/com/github/code/gambit/ui/fragment/auth/AuthFragmentAdapter.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,8 @@ class AuthFragmentAdapter(
1313
private var fragments: List<Fragment> = listOf(SignUpFragment(), LoginFragment())
1414

1515
companion object {
16-
private var adapter: AuthFragmentAdapter? = null
1716
fun getInstance(fragmentManager: FragmentManager, lifecycle: Lifecycle): AuthFragmentAdapter {
18-
if (adapter == null) {
19-
adapter = AuthFragmentAdapter(fragmentManager, lifecycle)
20-
}
21-
return adapter as AuthFragmentAdapter
17+
return AuthFragmentAdapter(fragmentManager, lifecycle)
2218
}
2319
}
2420

0 commit comments

Comments
 (0)