Skip to content

Commit ce12c6e

Browse files
committed
handle navigation when app backgrounded on android
1 parent 593b4ac commit ce12c6e

File tree

3 files changed

+25
-12
lines changed

3 files changed

+25
-12
lines changed

app/src/main/java/com/willowtreeapps/namegame/AndroidNavigator.kt

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import android.app.Application
55
import android.os.Bundle
66
import androidx.appcompat.app.AppCompatActivity
77
import androidx.navigation.findNavController
8+
import com.willowtreeapps.common.Actions
89
import com.willowtreeapps.common.middleware.Navigator
910
import com.willowtreeapps.common.middleware.Screen
1011
import com.willowtreeapps.namegame.store.SettingsDialogFragment
@@ -18,31 +19,41 @@ class AndroidNavigator : Navigator, Application.ActivityLifecycleCallbacks {
1819

1920

2021
private var currentActivity: AppCompatActivity? = null
22+
private var cachedNavigationScreen: Screen? = null
2123

2224
//TODO consider using current screen & destination screen to determine routing & animation
2325
override fun goto(screen: Screen) {
24-
val navController = currentActivity!!.findNavController(R.id.nav_host_fragment)
25-
when (screen) {
26-
Screen.QUESTION -> navController.navigate(R.id.action_startScreen_to_questionScreen)
27-
Screen.GAME_COMPLETE -> navController.navigate(R.id.action_questionScreen_to_resultsFragment)
26+
if (currentActivity == null) {
27+
cachedNavigationScreen = screen
28+
} else {
29+
val navController = currentActivity!!.findNavController(R.id.nav_host_fragment)
30+
when (screen) {
31+
Screen.QUESTION -> navController.navigate(R.id.action_startScreen_to_questionScreen)
32+
Screen.GAME_COMPLETE -> navController.navigate(R.id.action_questionScreen_to_resultsFragment)
2833
// Screen.START -> navController.navigate(R.id.startScreen)
29-
Screen.START -> navController.navigate(R.id.action_resultsFragment_to_startScreen)
30-
Screen.SETTINGS -> {
31-
val dialog = SettingsDialogFragment.newInstance()
32-
dialog.show(currentActivity!!.supportFragmentManager, "SettingsFragment")
34+
Screen.START -> navController.navigate(R.id.action_resultsFragment_to_startScreen)
35+
Screen.SETTINGS -> {
36+
val dialog = SettingsDialogFragment.newInstance()
37+
dialog.show(currentActivity!!.supportFragmentManager, "SettingsFragment")
38+
}
39+
else -> throw IllegalArgumentException("Screen $screen is not handled in AndroidNavigator")
3340
}
34-
else -> throw IllegalArgumentException("Screen $screen is not handled in AndroidNavigator")
3541
}
3642
}
3743

3844
override fun onActivityPaused(activity: Activity?) {
3945
}
4046

4147
override fun onActivityResumed(activity: Activity?) {
48+
if (cachedNavigationScreen!= null) {
49+
goto(cachedNavigationScreen!!)
50+
cachedNavigationScreen = null
51+
}
4252
}
4353

4454
override fun onActivityStarted(activity: Activity?) {
4555
currentActivity = activity as AppCompatActivity?
56+
4657
}
4758

4859
override fun onActivityDestroyed(activity: Activity?) {

app/src/main/java/com/willowtreeapps/namegame/store/QuestionFragment.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ class QuestionFragment : Fragment(), CoroutineScope, QuestionView, MainActivity.
8787
}
8888

8989
override fun showWrongAnswer(viewState: QuestionViewState, isEndGame: Boolean) {
90-
wrongShakeAnimation(viewState) { hideButtonsShowNext(viewState, isEndGame) }
90+
activity?.runOnUiThread {
91+
wrongShakeAnimation(viewState) { hideButtonsShowNext(viewState, isEndGame) }
92+
}
9193
}
9294

9395
private val showButtonsAnimatorSet by lazy {
@@ -234,7 +236,7 @@ class QuestionFragment : Fragment(), CoroutineScope, QuestionView, MainActivity.
234236
txt_timer.scaleY = 0f
235237
txt_timer.text = viewState.timerText
236238
val restoreColor = txt_timer.currentTextColor
237-
txt_timer.setTextColor(ResourcesCompat.getColor(context?.resources!!, R.color.red, null))
239+
txt_timer.setTextColor(ResourcesCompat.getColor(context?.resources!!, R.color.red, activity?.theme))
238240
txt_timer.animate()
239241
.scaleX(1f)
240242
.scaleY(1f)

common/src/commonMain/kotlin/com/willowtreeapps/common/repo/KtorDogsRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ open class KtorDogsRepository(private val networkContext: CoroutineContext) : Co
6262
com.willowtreeapps.common.Logger.d("Failure fetching image: ${e.message}")
6363
GatewayResponse.createSuccess<DogImageResponse, GenericError>(DogImageResponse("200", ""), 200, "")
6464
}
65-
Dog(breed = breed.key, imageUrl = dogImageResponse.response?.message!!)
65+
Dog(breed = breed.key.capitalize(), imageUrl = dogImageResponse.response?.message!!)
6666
}
6767
)
6868
}

0 commit comments

Comments
 (0)