Skip to content

Commit

Permalink
Fixing video player
Browse files Browse the repository at this point in the history
  • Loading branch information
kl3jvi committed Mar 20, 2022
1 parent f006ba0 commit 8dfb614
Show file tree
Hide file tree
Showing 17 changed files with 298 additions and 92 deletions.
4 changes: 3 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 13 additions & 8 deletions app/src/main/java/com/kl3jvi/animity/bindings/ViewBindings.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,21 @@ object ViewBindings {
}

@JvmStatic
@BindingAdapter("drawable")
fun setImageDrawable(image: ImageView, drawable: Drawable?) {
if (drawable != null) {
GlideApp.with(image.context)
.load(R.drawable.ic_play_tv)
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.into(image)
}
@BindingAdapter(value = ["imageUrl", "placeholder", "error"], requireAll = false)
fun loadImage(
imageView: ImageView,
imageUrl: String?,
placeholder: Drawable?,
error: Drawable?
) {
imageView
.load(imageUrl) {
placeholder(placeholder)
error(error)
}
}


@JvmStatic
@BindingAdapter("avatarImage")
fun setAvatarImage(image: ImageView, url: String?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class GetAnimesUseCase @Inject constructor(
private val homeRepository: HomeRepositoryImpl,
private val ioDispatcher: CoroutineDispatcher
) {
suspend operator fun invoke(): Flow<Resource<List<HomeRecyclerViewItem>>> = flow {
operator fun invoke(): Flow<Resource<List<HomeRecyclerViewItem>>> = flow {
coroutineScope {
try {
val mutableListOfAnimeMetaModel = mutableListOf<HomeRecyclerViewItem>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.kl3jvi.animity.data.model.ui_models.AnimeMetaModel
import com.kl3jvi.animity.databinding.ItemCardAnimeBinding
import com.kl3jvi.animity.databinding.ItemCardAnimeExperimentalBinding
import com.kl3jvi.animity.ui.fragments.home.HomeFragmentDirections
import com.kl3jvi.animity.ui.fragments.profile.ProfileFragmentDirections

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ class DetailsFragment : BaseFragment<DetailsViewModel, FragmentDetailsBinding>()
when (res) {
is Resource.Success -> {
res.data?.let { info ->
binding.expandTextView.text = info.plotSummary
binding.animeInfoLayout.textOverview.text = info.plotSummary
binding.releaseDate.text = info.releasedTime
binding.status.text = info.status
binding.type.text = info.type

binding.expandTextView.visibility = VISIBLE
binding.animeInfoLayout.textOverview.visibility = VISIBLE
binding.releaseDate.visibility = VISIBLE
binding.status.visibility = VISIBLE
binding.type.visibility = VISIBLE
Expand Down Expand Up @@ -129,7 +129,7 @@ class DetailsFragment : BaseFragment<DetailsViewModel, FragmentDetailsBinding>()
}
}
is Resource.Loading -> {
binding.expandTextView.visibility = GONE
binding.animeInfoLayout.textOverview.visibility = GONE
binding.releaseDate.visibility = GONE
binding.status.visibility = GONE
binding.type.visibility = GONE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import javax.inject.Inject

@HiltViewModel
Expand Down Expand Up @@ -60,22 +59,22 @@ class DetailsViewModel @Inject constructor(


val lastEpisodeReleaseTime = Transformations.switchMap(_url) {
getAnimeDetailsUseCase.fetchEpisodeReleaseTime(it.split("/").last()).asLiveData(Dispatchers.IO + viewModelScope.coroutineContext)
getAnimeDetailsUseCase.fetchEpisodeReleaseTime(it.split("/").last())
.asLiveData(Dispatchers.IO + viewModelScope.coroutineContext)
}

val isOnDatabase = Transformations.switchMap(_url) { url ->
getAnimeDetailsUseCase.checkIfExists(url).asLiveData(Dispatchers.IO + viewModelScope.coroutineContext)
getAnimeDetailsUseCase.checkIfExists(url)
.asLiveData(Dispatchers.IO + viewModelScope.coroutineContext)
}

fun passUrl(url: String) {
_url.value = url
Log.e("Category URL", url)
}

fun insert(anime: AnimeMetaModel) = viewModelScope.launch {
withContext(Dispatchers.IO) { // Dispatchers.IO (main-safety block)
animeRepository.insertFavoriteAnime(anime) // Dispatchers.IO (main-safety block)
}
fun insert(anime: AnimeMetaModel) = viewModelScope.launch(Dispatchers.IO) {
animeRepository.insertFavoriteAnime(anime)
}

fun updateAnimeFavorite(id: Int?): Flow<ApolloResponse<ToggleFavouriteMutation.Data>> {
Expand All @@ -86,10 +85,8 @@ class DetailsViewModel @Inject constructor(
return getAnimeDetailsFromAnilistUseCase(anime?.title.toString())
}

fun delete(anime: AnimeMetaModel) = viewModelScope.launch {
withContext(Dispatchers.IO) { // Dispatchers.IO (main-safety block)
animeRepository.deleteAnime(anime) // Dispatchers.IO (main-safety block)
}
fun delete(anime: AnimeMetaModel) = viewModelScope.launch(Dispatchers.IO) {
animeRepository.deleteAnime(anime)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,10 @@ class FavoritesFragment : Fragment(R.layout.fragment_favorites) {


private fun observeAniList() {
collectFlow(viewModel.favoriteAnimesList) { animeList ->
val list = animeList.data?.user?.favourites?.anime?.edges?.map {
Log.e("HASHED",
collectFlow(viewModel.favoriteAnimeList) { animeList ->
val list = animeList?.data?.user?.favourites?.anime?.edges?.map {
Log.e(
"HASHED",
it?.node?.title?.romaji?.lowercase(Locale.getDefault()).hashCode().toString()
)
AnimeMetaModel(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package com.kl3jvi.animity.ui.fragments.favorites

import androidx.lifecycle.*
import android.util.Log
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope
import com.apollographql.apollo3.api.ApolloResponse
import com.kl3jvi.animity.FavoritesAnimeQuery
import com.kl3jvi.animity.data.model.ui_models.AnimeMetaModel
import com.kl3jvi.animity.data.repository.fragment_repositories.UserRepositoryImpl
import com.kl3jvi.animity.data.repository.persistence_repository.PersistenceRepositoryImpl
Expand All @@ -9,6 +15,7 @@ import com.kl3jvi.animity.domain.use_cases.GetUserSessionUseCase
import com.kl3jvi.animity.persistence.AnimeRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
Expand All @@ -24,15 +31,29 @@ class FavoritesViewModel @Inject constructor(
private val userRepo: UserRepositoryImpl,
private val ioDispatcher: CoroutineDispatcher
) : ViewModel() {
private val _listOfIds = MutableLiveData<List<Int>>()
val listOfIds: LiveData<List<Int>> = _listOfIds
private var _favoriteAnimeList =
MutableStateFlow<ApolloResponse<FavoritesAnimeQuery.Data>?>(null)
val favoriteAnimeList = _favoriteAnimeList.asStateFlow()

val favoriteFromDatabase: LiveData<List<AnimeMetaModel>> =
animeRepository.getFavoriteAnimes.asLiveData(ioDispatcher + viewModelScope.coroutineContext)

val favoriteAnimesList = getUserSessionUseCase().flatMapLatest {
getFavoriteAnimesUseCase(it.data?.viewer?.id, 1)
}.flowOn(ioDispatcher)
init {
getFavoriteAnimes()
}

private fun getFavoriteAnimes() {
viewModelScope.launch(Dispatchers.IO) {
getUserSessionUseCase().flatMapLatest {
getFavoriteAnimesUseCase(it.data?.viewer?.id, 1)
}.flowOn(ioDispatcher)
.catch { e -> Log.e("Error", e.message.orEmpty()) }
.collect {
_favoriteAnimeList.value = it
}
}
}


fun insertRemoteToLocalDb(list: List<AnimeMetaModel>) = viewModelScope.launch {
persistenceRepository.insertAnimeList(list)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ class HomeFragment : Fragment(R.layout.fragment_home) {

private fun fetchHomeData() {
observeLiveData(viewModel.homeData, viewLifecycleOwner) { res ->

when (res) {
is Resource.Error -> {
binding.mainRv.hide()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@ import com.kl3jvi.animity.ui.adapters.homeAdapter.HomeRecyclerViewItem
import com.kl3jvi.animity.utils.Resource
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltViewModel
Expand All @@ -31,12 +29,12 @@ class HomeViewModel @Inject constructor(
}

private fun getHomePageData() {
viewModelScope.launch {
getAnimesUseCase().flowOn(Dispatchers.IO).catch { e ->
e.printStackTrace()
}.onEach {
_homeData.value = it
}.launchIn(viewModelScope)
}

getAnimesUseCase().flowOn(ioDispatcher).catch { e ->
e.printStackTrace()
}.onEach {
_homeData.value = it
}.launchIn(viewModelScope)

}
}
98 changes: 52 additions & 46 deletions app/src/main/res/layout/fragment_details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@

<TextView
android:id="@+id/result_title"
style="@style/Headline5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="50dp"
Expand Down Expand Up @@ -183,51 +184,56 @@
</LinearLayout>
</LinearLayout>

<TextView
android:id="@+id/result_plot_header2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/synopsis"
android:textColor="@color/textColor"
android:textSize="17sp"
android:textStyle="normal" />

<com.ms.square.android.expandabletextview.ExpandableTextView
android:id="@+id/expand_text_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
app:animDuration="200"
app:maxCollapsedLines="4">

<TextView
android:id="@id/expandable_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/grayTextColor"
android:textSize="15sp" />

<ImageButton
android:id="@id/expand_collapse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:padding="3dp" />
</com.ms.square.android.expandabletextview.ExpandableTextView>

<TextView
android:id="@+id/result_tag_holder2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/genre"
android:textColor="@color/textColor"
android:textSize="17sp"
android:textStyle="normal" />
<!-- <TextView-->
<!-- android:id="@+id/result_plot_header2"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="10dp"-->
<!-- android:layout_marginBottom="10dp"-->
<!-- android:text="@string/synopsis"-->
<!-- android:textColor="@color/textColor"-->
<!-- android:textSize="17sp"-->
<!-- android:textStyle="normal" />-->

<!-- <com.ms.square.android.expandabletextview.ExpandableTextView-->
<!-- android:id="@+id/expand_text_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_marginStart="20dp"-->
<!-- android:layout_marginEnd="20dp"-->
<!-- app:animDuration="200"-->
<!-- app:maxCollapsedLines="4">-->

<!-- <TextView-->
<!-- android:id="@id/expandable_text"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:textColor="@color/grayTextColor"-->
<!-- android:textSize="15sp" />-->

<!-- <ImageButton-->
<!-- android:id="@id/expand_collapse"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_gravity="center"-->
<!-- android:background="@android:color/transparent"-->
<!-- android:padding="3dp" />-->
<!-- </com.ms.square.android.expandabletextview.ExpandableTextView>-->

<!-- <TextView-->
<!-- android:id="@+id/result_tag_holder2"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="5dp"-->
<!-- android:text="@string/genre"-->
<!-- android:textColor="@color/textColor"-->
<!-- android:textSize="17sp"-->
<!-- android:textStyle="normal" />-->


<include
android:id="@+id/animeInfoLayout"
layout="@layout/item_anime_details" />

<com.google.android.material.chip.ChipGroup
android:id="@+id/genreGroup"
Expand Down Expand Up @@ -292,8 +298,8 @@
android:id="@+id/episode_list_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_marginTop="@dimen/dp_8"
android:visibility="gone"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
tools:listitem="@layout/item_episode_list"
tools:visibility="visible" />
Expand Down
Loading

0 comments on commit 8dfb614

Please sign in to comment.