Skip to content

Commit

Permalink
Merge pull request #115 from pravinyo/fix_saveState_bug
Browse files Browse the repository at this point in the history
Fix save state bug
  • Loading branch information
pravinyo committed May 25, 2020
2 parents 3130f25 + 021afac commit 4efbe89
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 28 deletions.
3 changes: 3 additions & 0 deletions app/src/main/java/com/allsoftdroid/audiobook/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.allsoftdroid.audiobook.di

import android.app.Activity
import androidx.lifecycle.SavedStateHandle
import com.allsoftdroid.audiobook.domain.usecase.GetLastPlayedUsecase
import com.allsoftdroid.audiobook.feature_downloader.data.Downloader
import com.allsoftdroid.audiobook.feature_downloader.domain.IDownloaderCore
Expand Down Expand Up @@ -41,7 +42,9 @@ object AppModule {

private val viewModelModule: Module = module{
viewModel {
(state: SavedStateHandle) ->
MainActivityViewModel(
stateHandle = state,
application = get(),
sharedPref = get(),
audioManager = get(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ class MainActivity : BaseActivity() {
const val MINI_PLAYER_TAG = "MiniPlayer"
}

private val mainActivityViewModel : MainActivityViewModel by viewModel()
private val mainActivityViewModel : MainActivityViewModel by viewModel{
parametersOf(Bundle(), "vm_main")
}
private val connectionListener: ConnectionLiveData by inject{parametersOf(this)}
private val downloadEventStore:DownloadEventStore by inject()
private val downloader: IDownloaderCore by inject{parametersOf(this)}
Expand Down Expand Up @@ -132,7 +134,7 @@ class MainActivity : BaseActivity() {

Timber.d("Main Activity start")
mainActivityViewModel.showPlayer.observe(this, Observer {
it.peekContent().let { shouldShow ->
it.let { shouldShow ->
Timber.d("Player state event received from view model:shouldShow->$shouldShow")
miniPlayerViewState(shouldShow)
}
Expand Down Expand Up @@ -334,29 +336,32 @@ class MainActivity : BaseActivity() {
val controller = findNavController(R.id.navHostFragment)
val playingTrackDetails = mainActivityViewModel.getPlayingTrack()

val bundle = bundleOf(
"bookId" to playingTrackDetails.bookIdentifier,
"bookTitle" to playingTrackDetails.bookTitle,
"trackName" to playingTrackDetails.trackName,
"chapterIndex" to playingTrackDetails.chapterIndex,
"totalChapter" to playingTrackDetails.totalChapter,
"isPlaying" to playingTrackDetails.isPlaying)

controller.currentDestination?.let {
when(it.id){
R.id.AudioBookDetailsFragment ->{
controller.navigate(R.id.action_AudioBookDetailsFragment_to_MainPlayerFragment,bundle)
}
playingTrackDetails?.let {trackDetails ->
val bundle = bundleOf(
"bookId" to trackDetails.bookIdentifier,
"bookTitle" to trackDetails.bookTitle,
"trackName" to trackDetails.trackName,
"chapterIndex" to trackDetails.chapterIndex,
"totalChapter" to trackDetails.totalChapter,
"isPlaying" to trackDetails.isPlaying)

controller.currentDestination?.let {
when(it.id){
R.id.AudioBookDetailsFragment ->{
controller.navigate(R.id.action_AudioBookDetailsFragment_to_MainPlayerFragment,bundle)
}

R.id.AudioBookListFragment ->{
controller.navigate(R.id.action_AudioBookListFragment_to_MainPlayerFragment,bundle)
}
R.id.AudioBookListFragment ->{
controller.navigate(R.id.action_AudioBookListFragment_to_MainPlayerFragment,bundle)
}

else -> {
Timber.d("Operation not allowed")
Toast.makeText(this,"Can't navigate to Player",Toast.LENGTH_SHORT).show()
else -> {
Timber.d("Operation not allowed")
Toast.makeText(this,"Can't navigate to Player",Toast.LENGTH_SHORT).show()
}
}
}
}

}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.allsoftdroid.audiobook.presentation.viewModel

import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.*
import com.allsoftdroid.audiobook.domain.model.LastPlayedTrack
import com.allsoftdroid.audiobook.domain.usecase.GetLastPlayedUsecase
import com.allsoftdroid.audiobook.feature.feature_playerfullscreen.data.PlayingTrackDetails
Expand All @@ -22,14 +19,19 @@ import kotlinx.coroutines.launch
import timber.log.Timber

class MainActivityViewModel(application : Application,
private val stateHandle : SavedStateHandle,
private val handler: UseCaseHandler,
private val lastPlayedUsecase: GetLastPlayedUsecase,
private val sharedPref: BookDetailsSharedPreferenceRepository,
private val eventStore : AudioPlayerEventStore,
private val audioManager : AudioManager) : AndroidViewModel(application){

companion object{
private const val MINI_PLAYER_KEY = "MiniPlayerKey"
}

private val _showMiniPlayer = MutableLiveData<Event<Boolean>>()
val showPlayer :LiveData<Event<Boolean>> = _showMiniPlayer
val showPlayer :LiveData<Boolean> = stateHandle.getLiveData(MINI_PLAYER_KEY)

private var disposable : Disposable

Expand All @@ -41,10 +43,11 @@ class MainActivityViewModel(application : Application,

private lateinit var _playingTrackDetails:PlayingTrackDetails

fun getPlayingTrack() = _playingTrackDetails
fun getPlayingTrack():PlayingTrackDetails? = _playingTrackDetails

fun playerStatus( showPlayer : Boolean){
_showMiniPlayer.value = Event(showPlayer)
stateHandle.set(MINI_PLAYER_KEY,showPlayer)
}

init {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
Lazily initialize the view model
*/
private val bookDetailsViewModel: BookDetailsViewModel by viewModel{
parametersOf(Bundle(), "vm1")
parametersOf(Bundle(), "vm_audio_book_details")
}
private val eventStore : AudioPlayerEventStore by inject()
private val downloadStore : DownloadEventStore by inject()
Expand Down

0 comments on commit 4efbe89

Please sign in to comment.