From 7cb545f7c9eb8e5d6ecc44bdf00ad6d651d14b60 Mon Sep 17 00:00:00 2001 From: LagradOst Date: Fri, 5 Nov 2021 22:39:56 +0100 Subject: [PATCH] viewmodel fix I think + small fixes --- .../cloudstream3/ui/home/HomeFragment.kt | 8 +++---- .../cloudstream3/ui/player/PlayerFragment.kt | 19 ++++++++------- .../cloudstream3/ui/result/ResultFragment.kt | 9 +++---- .../cloudstream3/ui/result/ResultViewModel.kt | 24 +++++++++++++++---- .../lagradost/cloudstream3/utils/AppUtils.kt | 4 +++- .../drawable/ic_baseline_play_arrow_24.xml | 2 +- app/src/main/res/layout/fragment_home.xml | 14 +++++------ 7 files changed, 50 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt index 39b2c9c7..3d636e86 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt @@ -13,7 +13,7 @@ import android.widget.FrameLayout import android.widget.TextView import androidx.core.view.isVisible import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager @@ -97,15 +97,15 @@ class HomeFragment : Fragment() { } } - private lateinit var homeViewModel: HomeViewModel + private val homeViewModel: HomeViewModel by activityViewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - homeViewModel = - ViewModelProvider(this).get(HomeViewModel::class.java) + //homeViewModel = + // ViewModelProvider(this).get(HomeViewModel::class.java) return inflater.inflate(R.layout.fragment_home, container, false) } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerFragment.kt index 89d4a228..108ad85f 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/PlayerFragment.kt @@ -34,7 +34,7 @@ import android.widget.Toast.LENGTH_SHORT import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels import androidx.preference.PreferenceManager import androidx.transition.Fade import androidx.transition.Transition @@ -86,7 +86,6 @@ import com.lagradost.cloudstream3.utils.CastHelper.startCast import com.lagradost.cloudstream3.utils.DataStore.getKey import com.lagradost.cloudstream3.utils.DataStore.setKey import com.lagradost.cloudstream3.utils.DataStoreHelper.setLastWatched -import com.lagradost.cloudstream3.utils.DataStoreHelper.setViewPos import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showDialog import com.lagradost.cloudstream3.utils.UIHelper.colorFromAttribute import com.lagradost.cloudstream3.utils.UIHelper.getNavigationBarHeight @@ -248,7 +247,7 @@ class PlayerFragment : Fragment() { private var isFullscreen = false private var isPlayerPlaying = true - private lateinit var viewModel: ResultViewModel + private val viewModel: ResultViewModel by activityViewModels() private lateinit var playerData: PlayerData private lateinit var uriData: UriData private var isDownloadedFile = false @@ -791,20 +790,20 @@ class PlayerFragment : Fragment() { if (this::exoPlayer.isInitialized) { if (exoPlayer.duration > 0 && exoPlayer.currentPosition > 0) { context?.let { ctx -> - if (this::viewModel.isInitialized) { + //if (this::viewModel.isInitialized) { viewModel.setViewPos( ctx, if (isDownloadedFile) uriData.id else getEpisode()?.id, exoPlayer.currentPosition, exoPlayer.duration ) - } else { + /*} else { ctx.setViewPos( if (isDownloadedFile) uriData.id else getEpisode()?.id, exoPlayer.currentPosition, exoPlayer.duration ) - } + }*/ if (isDownloadedFile) { ctx.setLastWatched(uriData.parentId, uriData.id, uriData.episode, uriData.season, true) @@ -880,6 +879,7 @@ class PlayerFragment : Fragment() { val isClick = !isLocked exo_play?.isClickable = isClick + sources_btt?.isClickable = isClick exo_pause?.isClickable = isClick exo_ffwd?.isClickable = isClick exo_rew?.isClickable = isClick @@ -1055,8 +1055,9 @@ class PlayerFragment : Fragment() { showToast(activity, resizeModes[resizeMode].second, LENGTH_SHORT) } PlayerEventType.ShowSpeed.value -> { - val speedsText = listOf("0.5x", "0.75x", "1x", "1.25x", "1.5x", "1.75x", "2x") - val speedsNumbers = listOf(0.5f, 0.75f, 1f, 1.25f, 1.5f, 1.75f, 2f) + val speedsText = + listOf("0.5x", "0.75x", "0.85x", "1x", "1.15x", "1.25x", "1.4x", "1.5x", "1.75x", "2x") + val speedsNumbers = listOf(0.5f, 0.75f, 0.85f, 1f, 1.15f, 1.25f, 1.4f, 1.5f, 1.75f, 2f) val speedIndex = speedsNumbers.indexOf(playbackSpeed) context?.let { ctx -> @@ -1383,7 +1384,7 @@ class PlayerFragment : Fragment() { } if (!isDownloadedFile) { - viewModel = ViewModelProvider(activity ?: this).get(ResultViewModel::class.java) + //viewModel = ViewModelProvider(activity ?: this).get(ResultViewModel::class.java) observeDirectly(viewModel.episodes) { _episodes -> episodes = _episodes diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt index 382ceb01..caa9009b 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt @@ -23,7 +23,7 @@ import androidx.core.text.color import androidx.core.view.isVisible import androidx.core.widget.NestedScrollView import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider +import androidx.fragment.app.activityViewModels import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -165,7 +165,7 @@ class ResultFragment : Fragment() { } private var currentLoadingCount = 0 // THIS IS USED TO PREVENT LATE EVENTS, AFTER DISMISS WAS CLICKED - private lateinit var viewModel: ResultViewModel + private val viewModel: ResultViewModel by activityViewModels() private var allEpisodes: HashMap> = HashMap() private var allEpisodesSubs: HashMap> = HashMap() private var currentHeaderName: String? = null @@ -178,8 +178,8 @@ class ResultFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - viewModel = - ViewModelProvider(activity ?: this).get(ResultViewModel::class.java) + // viewModel = + // ViewModelProvider(activity ?: this).get(ResultViewModel::class.java) return inflater.inflate(R.layout.fragment_result, container, false) } @@ -1161,6 +1161,7 @@ class ResultFragment : Fragment() { } if (restart || viewModel.resultResponse.value == null) { + viewModel.clear() viewModel.load(ctx, tempUrl, apiName, showFillers) } } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt index c6a09143..02f21e2d 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel.kt @@ -37,6 +37,22 @@ const val EPISODE_RANGE_SIZE = 50 const val EPISODE_RANGE_OVERLOAD = 60 class ResultViewModel : ViewModel() { + fun clear() { + repo = null + _resultResponse.value = null + _episodes.value = null + episodeById.value = null + _publicEpisodes.value = null + _publicEpisodesCount.value = null + _rangeOptions.value = null + selectedRange.value = null + selectedRangeInt.value = null + _dubStatus.value = null + id.value = null + selectedSeason.value = -2 + _dubSubEpisodes.value = null + } + private var repo: APIRepository? = null private val _resultResponse: MutableLiveData> = MutableLiveData() @@ -55,7 +71,7 @@ class ResultViewModel : ViewModel() { val publicEpisodes: LiveData>> get() = _publicEpisodes val publicEpisodesCount: LiveData get() = _publicEpisodesCount - val dubStatus: MutableLiveData get() = _dubStatus + val dubStatus: LiveData get() = _dubStatus private val _dubStatus: MutableLiveData = MutableLiveData() private val page: MutableLiveData = MutableLiveData() @@ -63,10 +79,10 @@ class ResultViewModel : ViewModel() { val selectedSeason: MutableLiveData = MutableLiveData(-2) val seasonSelections: MutableLiveData> = MutableLiveData() - val dubSubSelections: MutableLiveData> get() = _dubSubSelections + val dubSubSelections: LiveData> get() = _dubSubSelections private val _dubSubSelections: MutableLiveData> = MutableLiveData() - val dubSubEpisodes: MutableLiveData>?> get() = _dubSubEpisodes + val dubSubEpisodes: LiveData>?> get() = _dubSubEpisodes private val _dubSubEpisodes: MutableLiveData>?> = MutableLiveData() private val _watchStatus: MutableLiveData = MutableLiveData() @@ -180,7 +196,7 @@ class ResultViewModel : ViewModel() { fun changeDubStatus(context: Context, status: DubStatus?) { dubSubEpisodes.value?.get(status)?.let { episodes -> - dubStatus.postValue(status) + _dubStatus.postValue(status) updateEpisodes(context, null, episodes, null) } } diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt index 03089644..facb9b8e 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/AppUtils.kt @@ -75,9 +75,11 @@ object AppUtils { return "" } + //private val viewModel: ResultViewModel by activityViewModels() + fun AppCompatActivity.loadResult(url: String, apiName: String, startAction: Int = 0, startValue: Int = 0) { this.runOnUiThread { - viewModelStore.clear() + // viewModelStore.clear() this.navigate(R.id.global_to_navigation_results, ResultFragment.newInstance(url, apiName, startAction, startValue)) } } diff --git a/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml b/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml index 0870be8f..f880379f 100644 --- a/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml +++ b/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml @@ -1,4 +1,4 @@ - diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index b7b0d60d..1f0b805c 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -25,16 +25,16 @@ + android:layout_height="70dp"> @@ -146,9 +146,9 @@ android:layout_gravity="center|end" android:background="?android:attr/selectableItemBackgroundBorderless" - android:src="@drawable/ic_outline_settings_24" - android:layout_width="25dp" - android:layout_height="25dp" + android:src="@drawable/ic_baseline_keyboard_arrow_down_24" + android:layout_width="30dp" + android:layout_height="30dp" android:contentDescription="@string/home_change_provider_img_des">