Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import androidx.compose.runtime.Composable
interface AuthenticationApi {
@Composable
fun LoginContainer(
onBack: () -> Unit,
isOnboardingFirstTime: Boolean,
isLoggedIn: Boolean
)
}
5 changes: 2 additions & 3 deletions api/home/src/main/java/com/giraffe/api/home/HomeApi.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.giraffe.api.home


import androidx.compose.runtime.Composable
import android.content.Context

interface HomeApi {

fun launchHome(context: Context)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can inject the context directly into the HomeApiImp

fun navigateToExploreScreen()
@Composable
fun MainContainer()
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import com.giraffe.match.navigation.MatchApiImp
import com.giraffe.presentation.authentication.nav.AuthenticationApiImp
import com.giraffe.presentation.details.navigation.DetailsApiImp
import com.giraffe.presentation.explore.navigation.ExploreApiImp
import com.giraffe.presentation.home.navigation.HomeApiImp
import com.giraffe.presentation.home.navigation.api.HomeApiImp
import com.giraffe.presentation.profile.navigation.ProfileApiImp
import dagger.Binds
import dagger.Module
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@ fun CineVerseRoot(
}

authenticationApi.LoginContainer(
onBack = {},
isOnboardingFirstTime = state.isOnBoardingFirstTime == true,
isLoggedIn = state.isLoggedIn == true
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.giraffe.api.authentication.AuthenticationApi
import com.giraffe.api.home.HomeApi
import com.giraffe.presentation.profile.utils.FilePicker
import dagger.hilt.android.AndroidEntryPoint
import jakarta.inject.Inject
Expand All @@ -26,6 +27,8 @@ class MainActivity : AppCompatActivity() {
@Inject
lateinit var authenticationApi: AuthenticationApi

@Inject lateinit var homeApi: HomeApi

private val mainViewModel: MainViewModel by viewModels()

private val fileChooserLauncher: ActivityResultLauncher<String> =
Expand Down Expand Up @@ -60,6 +63,10 @@ class MainActivity : AppCompatActivity() {

setContent {
val state by mainViewModel.state.collectAsState()

if (state.isLoggedIn == true) {
homeApi.launchHome(this)
}
CineVerseRoot(
enableEdgeToEdge = ::enableEdgeToEdge,
state = state,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,14 @@ class AuthenticationApiImp @Inject constructor(

@Composable
override fun LoginContainer(
onBack: () -> Unit,
isOnboardingFirstTime: Boolean,
isLoggedIn: Boolean
) {
val navController = rememberNavController()

AuthenticationNavGraph(
navController = navController,
homeApi = homeApi,
isOnboardingFirstTime = isOnboardingFirstTime,
isLoggedIn = isLoggedIn,
)
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
package com.giraffe.presentation.authentication.nav

import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import com.giraffe.api.home.HomeApi
import com.giraffe.presentation.authentication.nav.routes.LoginRoute
import com.giraffe.presentation.authentication.nav.routes.loginRoute
import com.giraffe.presentation.authentication.nav.routes.HomeRoute
import com.giraffe.presentation.authentication.nav.routes.homeRoute
import com.giraffe.presentation.authentication.nav.routes.resetPasswordRoute
import com.giraffe.presentation.authentication.nav.routes.webViewRoute

import com.giraffe.api.home.HomeApi

@Composable
internal fun AuthenticationNavGraph(
navController: NavHostController,
homeApi: HomeApi,
isOnboardingFirstTime: Boolean,
isLoggedIn: Boolean
) {
val context = LocalContext.current
val startDestination = when {
isOnboardingFirstTime -> OnBoardingRoute
isLoggedIn -> HomeRoute
else -> LoginRoute()
}

Expand All @@ -31,12 +28,13 @@ internal fun AuthenticationNavGraph(
) {
webViewRoute(navController)

loginRoute(navController)
loginRoute(
navController,
navigateToHome = { homeApi.launchHome(context) }
)

resetPasswordRoute(navController)

homeRoute(homeApi)

onBoardingRoute(navController)
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ fun NavController.navigateLoginScreen(fromRoute: Boolean = false){
}

fun NavGraphBuilder.loginRoute(
navController: NavController
navController: NavController,
navigateToHome: () -> Unit
){
composable<LoginRoute> {
LoginScreen(
navigateToWebViewScreen = navController::navigateToWebView,
navigateToHomeScreen = navController::navigateHomeScreen,
navigateToHomeScreen = navigateToHome,
navigateToResetPasswordScreen = navController::navigateToResetPassword,
onBackClick = navController::popBackStack
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ fun NavGraphBuilder.loginRoute(
) {
composable<LoginRoute> {
authApi.LoginContainer(
onBack = {},
isOnboardingFirstTime = false,
isLoggedIn = false
)
}
}
24 changes: 24 additions & 0 deletions presentation/home/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,23 @@ plugins {
alias(libs.plugins.kotlin.android)
alias(libs.plugins.cineVerse.android.compose.module)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
namespace = "com.giraffe.presentation.home"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true
}
}

dependencies {
Expand All @@ -22,4 +35,15 @@ dependencies {
//pagination
implementation(libs.androidx.paging.runtime.ktx)
implementation(libs.androidx.paging.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
9 changes: 8 additions & 1 deletion presentation/home/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application>
<activity
android:name=".navigation.main.HomeActivity"
android:exported="false"
android:label="@string/title_activity_home"
android:theme="@style/Theme.CineVerseApp" />
</application>

</manifest>

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.giraffe.presentation.home.navigation.api

import android.app.Activity
import android.content.Context
import android.content.Intent
import androidx.navigation.NavHostController
import com.giraffe.api.home.HomeApi
import com.giraffe.presentation.home.navigation.main.HomeActivity
import com.giraffe.presentation.home.navigation.main.routes.navigateToExplore
import javax.inject.Inject

class HomeApiImp @Inject constructor() : HomeApi {
private var navController: NavHostController? = null

override fun launchHome(context: Context) {
val intent = Intent(context, HomeActivity::class.java)
context.startActivity(intent)
if (context is Activity) context.finish()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we dont need this line?

}

fun setNavController(navController: NavHostController) {
this.navController = navController
}

override fun navigateToExploreScreen() {
navController?.navigateToExplore()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.giraffe.presentation.home.navigation.main

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.navigation.compose.rememberNavController
import com.giraffe.api.details.DetailsApi
import com.giraffe.api.explore.ExploreApi
import com.giraffe.api.home.HomeApi
import com.giraffe.api.profile.ProfileApi
import com.giraffe.designsystem.theme.CineVerseTheme
import com.giraffe.match.MatchApi
import com.giraffe.presentation.home.navigation.api.HomeApiImp
import com.giraffe.presentation.home.screen.home.HomeViewModel
import dagger.hilt.android.AndroidEntryPoint
import jakarta.inject.Inject


@AndroidEntryPoint
class HomeActivity : ComponentActivity() {

@Inject
lateinit var detailsApi: DetailsApi

@Inject
lateinit var exploreApi: ExploreApi

@Inject
lateinit var profileApi: ProfileApi

@Inject
lateinit var matchApi: MatchApi

@Inject
lateinit var homeApi: HomeApi

private val viewModel: HomeViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContent {
val navController = rememberNavController()
val state by viewModel.state.collectAsState()
val isDarkTheme = state.isDarkTheme

val systemBarsColor = if (isDarkTheme)
SystemBarStyle.dark(Color.Transparent.toArgb())
else
SystemBarStyle.light(
Color.Transparent.toArgb(),
Color.Transparent.toArgb()
)

enableEdgeToEdge(systemBarsColor, systemBarsColor)

LaunchedEffect(Unit) {
(homeApi as HomeApiImp).setNavController(navController)
}

CineVerseTheme(isDarkTheme = isDarkTheme) {

MainNavGraph(
navController = navController,
detailsApi = detailsApi,
exploreApi = exploreApi,
profileApi = profileApi,
matchApi = matchApi
)
}
}
}
}
Loading