Skip to content

Instantly share code, notes, and snippets.

class MovieRemoteDataSourceImpl(private val movieApi: MovieApi):MovieRemoteDataSource {
override suspend fun getPopularMovies()= movieApi.getPopularMovies(BuildConfig.API_KEY)
}
data class Movie(
@SerializedName("id")
val id: Int,
@SerializedName("overview")
val overview: String?,
@SerializedName("poster_path")
val posterPath: String?,
@SerializedName("title")
val title: String?,
@SerializedName("vote_average")
class MovieRepositoryImpl(private val movieRemoteDataSource: MovieRemoteDataSource) :
MovieRepository {
override suspend fun getPopularMovies() = responseToRequest(movieRemoteDataSource.getPopularMovies())
private fun responseToRequest(response: Response<MovieList>):Result<MovieList>{
if(response.isSuccessful){
response.body()?.let {result->
return Result.Success(result)
}
}
@HiltViewModel
class HomeViewModel @Inject constructor(
private val getPopularMoviesUseCase: GetPopularMoviesUseCase
) : ViewModel() {
private val _movieState = mutableStateOf<Result<MovieList>>(Result.Loading())
val movieState: State<Result<MovieList>> = _movieState
init {
getPopularMovies()
}
@Composable
fun HomeScreen(navController: NavHostController, viewModel: HomeViewModel = hiltViewModel()) {
val systemUiController = rememberSystemUiController()
val systemBarColor = MaterialTheme.colors.statusBarColor
val titleColor = MaterialTheme.colors.titleColor
val topAppbarBackgroundColor = MaterialTheme.colors.topAppbarBackgroundColor
SideEffect {
systemUiController.setStatusBarColor(
@Farhandroid
Farhandroid / User.kt
Last active February 7, 2022 23:03
User data model
@Entity(tableName = "users")
data class User(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "user_id")
var id: Int,
@ColumnInfo(name = "user_name")
var name: String,
@Farhandroid
Farhandroid / UserDatabase.kt
Created February 7, 2022 09:41
Initial database key
@Database(
entities = [User::class],
version = 1,
)
@Farhandroid
Farhandroid / data.kt
Last active February 7, 2022 10:26
new column
@ColumnInfo(name = "user_address")
var address: String? = null
@Farhandroid
Farhandroid / UserDatabase.kt
Last active February 7, 2022 10:03
Automigration DB section
@Database(
entities = [User::class],
version = 2,
autoMigrations = [AutoMigration(from = 1, to = 2)],
exportSchema = true
)
@Farhandroid
Farhandroid / Schema.kt
Created February 7, 2022 09:59
Schema location
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
}