Skip to content

Commit

Permalink
Merge branch 'development' into development_movie
Browse files Browse the repository at this point in the history
  • Loading branch information
gab-stargazer committed Jun 8, 2023
2 parents 4bc1460 + 720cf92 commit d1c10f3
Show file tree
Hide file tree
Showing 13 changed files with 299 additions and 301 deletions.
6 changes: 4 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ android {
namespace 'com.satyamthakur.silver'
compileSdk 33

def Properties properties = new Properties()
properties.load(project.rootProject.file("local.properties").newDataInputStream())
Properties properties = new Properties()
if (project.rootProject.file("local.properties").exists()) {
properties.load(project.rootProject.file("local.properties").newDataInputStream())
}

defaultConfig {
applicationId "com.satyamthakur.silver"
Expand Down
68 changes: 53 additions & 15 deletions app/src/main/java/com/satyamthakur/silver/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,74 @@ package com.satyamthakur.silver
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.CenterAlignedTopAppBar
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
import com.satyamthakur.silver.ui.screen.dashboard.DashboardScreen
import com.satyamthakur.silver.ui.screen.dashboard.viewmodel.DashboardViewModel
import com.satyamthakur.silver.ui.theme.SilverTheme
import com.satyamthakur.silver.utility.Screen
import org.koin.androidx.compose.koinViewModel

@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberAnimatedNavController()
SilverTheme {
Surface(
modifier = Modifier.fillMaxSize()
) {
val viewModel = koinViewModel<DashboardViewModel>()
val nowShowingMovies by viewModel.nowShowingMovies.collectAsStateWithLifecycle()
val popularMovies by viewModel.popularMovies.collectAsStateWithLifecycle()
DashboardScreen(
onMovieClicked = {},
nowShowingMovies = nowShowingMovies,
onNowShowingMoviesRetry = {},
onSeeMoreNowShowingMovies = {},
popularMovies = popularMovies,
onSeeMorePopularMoviesClicked = {},
onPopularMoviesRetry = {}
)
Surface {
Scaffold(
topBar = {
CenterAlignedTopAppBar(title = {
Text(
text = stringResource(id = R.string.app_name),
style = MaterialTheme.typography.titleMedium.copy(
fontWeight = FontWeight.Black,
fontSize = 16.sp
)
)
})
}
) { paddingValues ->
NavHost(
navController = navController,
startDestination = Screen.Dashboard.route
) {
composable(route = Screen.Dashboard.route) {
val viewModel = koinViewModel<DashboardViewModel>()
val nowShowingMovies by viewModel.nowShowingMovies.collectAsStateWithLifecycle()
val popularMovies by viewModel.popularMovies.collectAsStateWithLifecycle()
DashboardScreen(
onMovieClicked = {},
onSeeMoreNowShowingMovies = {},
nowShowingMovies = nowShowingMovies,
onNowShowingMoviesRetry = viewModel::getNowShowingMovies,
onSeeMorePopularMoviesClicked = {},
popularMovies = popularMovies,
onPopularMoviesRetry = viewModel::getPopularMovies,
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
)
}
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import retrofit2.http.Query

interface MovieEndpoint {

@GET("movie/now_playing")
@GET("movie/now_playing")
suspend fun getNowShowingMovies(
@Query("page") page: Int = 1,
@Query("language") language: String = "en-US"
Expand All @@ -25,14 +25,11 @@ interface MovieEndpoint {
@GET("person/{id}")
suspend fun getCastMovie(
@Path(value = "id") id: Int,
@Query("language") language: String = "en-Us",

@Query("language") language: String = "en-Us"
): ActorDTO

@GET("movie/{movie_id}")
suspend fun getCreditsMovie(
@Path(value = "movie_id") movieId: Int
): CreditsDTO


}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.satyamthakur.silver.data.repository

import com.satyamthakur.silver.domain.model.cast.Actor
import com.satyamthakur.silver.domain.model.Movie
import com.satyamthakur.silver.domain.model.cast.Actor
import com.satyamthakur.silver.domain.model.cast.Credits
import com.satyamthakur.silver.utility.Resource
import kotlinx.coroutines.flow.Flow
Expand All @@ -12,3 +12,4 @@ interface IMovieRepository {
fun getActor(actorId: Int): Flow<Resource<Actor>>
fun getCredits(movieId: Int): Flow<Resource<Credits>>
}

Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package com.satyamthakur.silver.data.repository

import com.satyamthakur.silver.data.model.MovieDTO
import com.satyamthakur.silver.data.remote.MovieEndpoint
import com.satyamthakur.silver.domain.mapper.asMovie
import com.satyamthakur.silver.domain.mapper.asActor
import com.satyamthakur.silver.domain.mapper.asCredits
import com.satyamthakur.silver.domain.mapper.asMovie
import com.satyamthakur.silver.domain.model.cast.Actor
import com.satyamthakur.silver.domain.model.Movie
import com.satyamthakur.silver.domain.model.cast.Actor
import com.satyamthakur.silver.domain.model.cast.Credits
import com.satyamthakur.silver.utility.ErrorParser
import com.satyamthakur.silver.utility.Resource
Expand Down Expand Up @@ -58,13 +58,15 @@ class MovieRepository(
}.flowOn(ioDispatcher)
}

override fun getActor(actorId: Int): Flow<Resource<Actor>>{
return flow<Resource<Actor>>{
override fun getActor(actorId: Int): Flow<Resource<Actor>> {
return flow<Resource<Actor>> {
val apiResult = movieApiService.getCastMovie(actorId)
emit(Resource.Success(
data = apiResult.asActor()
))
}.catch {
emit(
Resource.Success(
data = apiResult.asActor()
)
)
}.catch { t ->
Timber.w(t)
emit(
Resource.Error(
Expand All @@ -77,13 +79,15 @@ class MovieRepository(
}.flowOn(ioDispatcher)
}

override fun getCredits(movieId: Int): Flow<Resource<Credits>>{
return flow<Resource<Credits>>{
override fun getCredits(movieId: Int): Flow<Resource<Credits>> {
return flow<Resource<Credits>> {
val apiResult = movieApiService.getCreditsMovie(movieId)
emit(Resource.Success(
data = apiResult.asCredits()
))
}.catch {
emit(
Resource.Success(
data = apiResult.asCredits()
)
)
}.catch { t ->
Timber.w(t)
emit(
Resource.Error(
Expand All @@ -95,5 +99,4 @@ class MovieRepository(
emit(Resource.Loading)
}.flowOn(ioDispatcher)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ fun ActorDTO.asActor() = Actor(
name = actorName,
place_of_birth = placeOfBirth,
popularity = popularity,
profile_path = profilePath,
profile_path = profilePath
)

fun CrewDTO.asCrew() = Crew(
Expand All @@ -56,7 +56,7 @@ fun CrewDTO.asCrew() = Crew(
name = name,
originalName = originalName,
popularity = popularity,
profilePath = profilePath,
profilePath = profilePath
)

fun CastDTO.asCast() = Cast(
Expand All @@ -71,7 +71,7 @@ fun CastDTO.asCast() = Cast(
order = order,
originalName = originalName,
popularity = popularity,
profilePath = profilePath,
profilePath = profilePath
)

fun CreditsDTO.asCredits(): Credits {
Expand All @@ -92,8 +92,3 @@ fun CreditsDTO.asCredits(): Credits {
movieId = movieId
)
}





Loading

0 comments on commit d1c10f3

Please sign in to comment.