Skip to content

Commit 4c00240

Browse files
authored
Merge pull request #715 from Cairo-Squad/fix/contiue-as-a-guest
fix/continue as a guest
2 parents 632ae55 + f5e302a commit 4c00240

20 files changed

Lines changed: 175 additions & 87 deletions

File tree

.github/workflows/cd-firebase.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ on:
55
branches:
66
- develop
77
- master
8+
- fix/contine-as-a-guest
89

910
jobs:
1011
deploy:

app/src/main/java/com/cairosquad/movio/di/DaggerLocalDataSourceModule.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.cairosquad.local.cache.series.SeasonEpisodeCacheDao
1515
import com.cairosquad.local.cache.series.SeasonEpisodeLocalDataSourceImpl
1616
import com.cairosquad.local.cache.series.SeriesCacheDao
1717
import com.cairosquad.local.cache.series.SeriesLocalDataSourceImpl
18+
import com.cairosquad.local.guest.GuestDataSourceImpl
1819
import com.cairosquad.local.language.LanguageDataStoreSourceImpl
1920
import com.cairosquad.local.login.LocalAuthenticationDataSourceImpl
2021
import com.cairosquad.local.login.dao.LoginDao
@@ -26,6 +27,7 @@ import com.cairosquad.local.utils.MovioDataBase
2627
import com.cairosquad.local.version.VersionDataSourceImpl
2728
import com.cairosquad.repository.account.data_source.local.AccountLocalDataSource
2829
import com.cairosquad.repository.artists.data_source.local.ArtistsLocalDataSource
30+
import com.cairosquad.repository.guest.data_source.local.GuestDataSource
2931
import com.cairosquad.repository.language.LanguageDataSource
3032
import com.cairosquad.repository.login.data_source.local.LocalAuthenticationDataSource
3133
import com.cairosquad.repository.movie.data_source.local.MoviesLocalDataSource
@@ -153,6 +155,14 @@ object LocalDataSourceModule {
153155
context = context
154156
)
155157

158+
@Provides
159+
@Singleton
160+
fun provideGuestDataSource(
161+
@ApplicationContext context: Context
162+
): GuestDataSource = GuestDataSourceImpl(
163+
context = context
164+
)
165+
156166
@Provides
157167
@Singleton
158168
fun provideAccountLocalDataSource(

app/src/main/java/com/cairosquad/movio/di/DaggerRepositoryModule.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.cairosquad.movio.di
22

33
import com.cairosquad.domain.repository.AccountRepository
44
import com.cairosquad.domain.repository.ArtistsRepository
5+
import com.cairosquad.domain.repository.GuestRepository
56
import com.cairosquad.domain.repository.LanguageRepository
67
import com.cairosquad.domain.repository.LoginRepository
78
import com.cairosquad.domain.repository.MoviesRepository
@@ -13,6 +14,7 @@ import com.cairosquad.domain.repository.ThemeRepository
1314
import com.cairosquad.domain.repository.VersionRepository
1415
import com.cairosquad.repository.account.AccountRepositoryImpl
1516
import com.cairosquad.repository.artists.ArtistsRepositoryImpl
17+
import com.cairosquad.repository.guest.GuestRepositoryImpl
1618
import com.cairosquad.repository.language.LanguageRepositoryImpl
1719
import com.cairosquad.repository.login.LoginRepositoryImpl
1820
import com.cairosquad.repository.movie.MovieRepositoryImpl
@@ -74,6 +76,12 @@ abstract class RepositoryModule {
7476
impl: OnboardingRepositoryImpl
7577
): OnboardingRepository
7678

79+
@Binds
80+
@Singleton
81+
abstract fun bindGuestRepository(
82+
impl: GuestRepositoryImpl
83+
): GuestRepository
84+
7785
@Binds
7886
@Singleton
7987
abstract fun bindAccountRepository(
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.cairosquad.domain.repository
2+
3+
interface GuestRepository {
4+
suspend fun setGuestState(enteredAsGuest: Boolean)
5+
suspend fun getGuestState(): Boolean
6+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.cairosquad.domain.usecase
2+
3+
import com.cairosquad.domain.repository.GuestRepository
4+
import javax.inject.Inject
5+
6+
class ManageGuestUseCase @Inject constructor(
7+
private val guestRepository: GuestRepository
8+
) {
9+
suspend fun setGuestState(enteredAsGuest: Boolean) {
10+
guestRepository.setGuestState(enteredAsGuest)
11+
}
12+
suspend fun getGuestState(): Boolean {
13+
return guestRepository.getGuestState()
14+
}
15+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cairosquad.local.data_store
22

33
object DataStoreConstants {
4-
const val ONBOARDING_STATE = "onboarding_state"
4+
const val ONBOARDING_STATE = "ONBOARDING_STATE"
5+
const val GUEST_STATE = "GUEST_STATE"
56
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.cairosquad.local.guest
2+
3+
import android.content.Context
4+
import com.cairosquad.local.data_store.DataStoreConstants
5+
import com.cairosquad.local.data_store.MovioDataStore
6+
import com.cairosquad.repository.guest.data_source.local.GuestDataSource
7+
import dagger.hilt.android.qualifiers.ApplicationContext
8+
import javax.inject.Inject
9+
10+
class GuestDataSourceImpl @Inject constructor(
11+
@ApplicationContext private val context: Context
12+
) : GuestDataSource {
13+
override suspend fun setGuestState(enteredAsGuest: Boolean) {
14+
MovioDataStore.setPrefValue(
15+
context = context,
16+
key = DataStoreConstants.GUEST_STATE,
17+
value = enteredAsGuest
18+
)
19+
}
20+
21+
override suspend fun getGuestState(): Boolean {
22+
return MovioDataStore.getPrefValue(
23+
context = context,
24+
key = DataStoreConstants.GUEST_STATE,
25+
defaultValue = false
26+
) as Boolean
27+
}
28+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.cairosquad.repository.guest
2+
3+
import com.cairosquad.domain.repository.GuestRepository
4+
import com.cairosquad.repository.guest.data_source.local.GuestDataSource
5+
import javax.inject.Inject
6+
7+
class GuestRepositoryImpl @Inject constructor(
8+
private val dataSource: GuestDataSource
9+
) : GuestRepository {
10+
override suspend fun setGuestState(enteredAsGuest: Boolean) {
11+
dataSource.setGuestState(enteredAsGuest)
12+
}
13+
14+
override suspend fun getGuestState(): Boolean {
15+
return dataSource.getGuestState()
16+
}
17+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.cairosquad.repository.guest.data_source.local
2+
3+
interface GuestDataSource {
4+
suspend fun setGuestState(enteredAsGuest: Boolean)
5+
suspend fun getGuestState(): Boolean
6+
}

ui/src/main/java/com/cairosquad/ui/AppScreen.kt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@ import com.cairosquad.ui.home.HomeScreen
1717
import com.cairosquad.ui.library.LibraryScreen
1818
import com.cairosquad.ui.more.MoreScreen
1919
import com.cairosquad.ui.navigation.LocalNavController
20-
import com.cairosquad.ui.navigation.LoginRoute
2120
import com.cairosquad.ui.search.SearchScreen
2221

2322
@Composable
24-
fun AppScreen(isUserLoggedIn: Boolean) {
23+
fun AppScreen() {
2524
val navigationItems = remember {
2625
listOf(
2726
BottomNavItem(
@@ -71,23 +70,11 @@ fun AppScreen(isUserLoggedIn: Boolean) {
7170
isNavBarVisible = isNavBarVisible,
7271
content = {
7372
when (selectedScreenIndex) {
74-
0 -> HomeScreen(navigateToProfile = {
75-
if (isUserLoggedIn) {
76-
selectedScreenIndex = 3
77-
} else {
78-
navController.navigate(LoginRoute)
79-
}
80-
})
73+
0 -> HomeScreen(navigateToProfile = { selectedScreenIndex = 3 })
8174
1 -> SearchScreen()
8275
2 -> LibraryScreen()
8376
3 -> MoreScreen(setNavBarVisibility = { isNavBarVisible = it })
84-
else -> HomeScreen(navigateToProfile = {
85-
if (isUserLoggedIn) {
86-
selectedScreenIndex = 3
87-
} else {
88-
navController.navigate(LoginRoute)
89-
}
90-
})
77+
else -> HomeScreen(navigateToProfile = { selectedScreenIndex = 3 })
9178
}
9279
})
9380
}

0 commit comments

Comments
 (0)