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
)
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package com.giraffe.api.details

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

@Stable
interface DetailsApi {
@Composable
fun MovieDetailsContainer(movieId: Int, onBackClick: () -> Unit)
fun launchMovieDetails(context: Context, movieId: Int)

@Composable
fun SeriesDetailsContainer(seriesId: Int, onBackClick: () -> Unit)
fun launchSeriesDetails(context: Context, seriesId: Int)

@Composable
fun CastDetailsContainer(castId: Int, onBackClick: () -> Unit)
fun launchCastDetails(context: Context, castId: Int)
}
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)
fun navigateToExploreScreen()
@Composable
fun MainContainer()
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import com.giraffe.api.profile.ProfileApi
import com.giraffe.match.MatchApi
import com.giraffe.match.navigation.MatchApiImp
import com.giraffe.presentation.authentication.nav.AuthenticationApiImp
import com.giraffe.presentation.details.navigation.DetailsApiImp
import com.giraffe.presentation.details.navigation.api.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
26 changes: 26 additions & 0 deletions presentation/details/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.details"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true
}
}

dependencies {
Expand All @@ -16,9 +29,22 @@ dependencies {
implementation(projects.domain.user)
implementation(projects.api.details)
implementation(projects.api.authentication)
//serialization
implementation(libs.kotlinx.serialization.json)
//android youtube player
implementation(libs.core)
//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)
}
11 changes: 10 additions & 1 deletion presentation/details/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application>
<activity
android:name=".navigation.main.DetailsActivity"
android:exported="false"
android:label="@string/title_activity_details"
android:theme="@style/Theme.CineVerseApp" />
</application>

</manifest>

This file was deleted.

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

import android.content.Context
import android.content.Intent
import com.giraffe.api.details.DetailsApi
import com.giraffe.presentation.details.navigation.main.DetailsActivity
import com.giraffe.presentation.details.navigation.routes.CastDetailsRoute
import com.giraffe.presentation.details.navigation.routes.MovieDetailsRoute
import com.giraffe.presentation.details.navigation.routes.SeriesDetailsRoute
import com.giraffe.presentation.details.navigation.routes.StartDestination
import kotlinx.serialization.json.Json
import javax.inject.Inject

class DetailsApiImp @Inject constructor() : DetailsApi {

override fun launchMovieDetails(context: Context, movieId: Int) {
val startDestination: StartDestination = MovieDetailsRoute(movieId)
launchDetailsActivity(context, startDestination)
}

override fun launchSeriesDetails(context: Context, seriesId: Int) {
val startDestination: StartDestination = SeriesDetailsRoute(seriesId)
launchDetailsActivity(context, startDestination)
}

override fun launchCastDetails(context: Context, castId: Int) {
val startDestination: StartDestination = CastDetailsRoute(castId)
launchDetailsActivity(context, startDestination)
}

private fun launchDetailsActivity(context: Context, startDestination: StartDestination) {
val intent = Intent(context, DetailsActivity::class.java).apply {
putExtra(DetailsActivity.START_DESTINATION, Json.encodeToString(startDestination))
}
context.startActivity(intent)
}
}
Loading