Skip to content

Commit 0e3982c

Browse files
committed
Fix onBackPresses across application
1 parent 0d53f78 commit 0e3982c

File tree

18 files changed

+107
-126
lines changed

18 files changed

+107
-126
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ captures/
4242
# Keystore files
4343
keystore.properties
4444
/keys.jks
45-
/service-account-key.json
45+
/app/service-account-key.json
4646

4747
# External native build folder generated in Android Studio 2.2 and later
4848
.externalNativeBuild

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/build
22
/release
3+
/service-account-key.json

app/src/main/kotlin/com/w2sv/autocrop/activities/AppActivity.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

app/src/main/kotlin/com/w2sv/autocrop/activities/crop/CropActivity.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,16 @@ package com.w2sv.autocrop.activities.crop
22

33
import androidx.fragment.app.Fragment
44
import com.w2sv.androidutils.os.getParcelableArrayListCompat
5-
import com.w2sv.autocrop.activities.AppActivity
5+
import com.w2sv.autocrop.activities.ViewBoundFragmentActivity
66
import com.w2sv.autocrop.activities.main.MainActivity
77
import dagger.hilt.android.AndroidEntryPoint
88

99
@AndroidEntryPoint // Resolves java.lang.IllegalStateException: Hilt Fragments must be attached to an @AndroidEntryPoint Activity
10-
class CropActivity : AppActivity() {
10+
class CropActivity : ViewBoundFragmentActivity() {
1111

1212
override fun getRootFragment(): Fragment =
1313
CropFragment
1414
.getInstance(
1515
intent.getParcelableArrayListCompat(MainActivity.EXTRA_SELECTED_IMAGE_URIS)!!
1616
)
17-
18-
override fun handleOnBackPressed() {
19-
when (val fragment = getCurrentFragment()) {
20-
is CroppingFailedFragment -> MainActivity.start(this)
21-
is CropFragment -> fragment.onBackPress()
22-
else -> throw IllegalStateException("Invalid Fragment type")
23-
}
24-
}
2517
}

app/src/main/kotlin/com/w2sv/autocrop/activities/crop/CropFragment.kt

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ import com.w2sv.autocrop.activities.crop.domain.CropResults
2222
import com.w2sv.autocrop.activities.examination.ExaminationActivity
2323
import com.w2sv.autocrop.activities.main.MainActivity
2424
import com.w2sv.autocrop.databinding.CropBinding
25+
import com.w2sv.autocrop.ui.Constant
2526
import com.w2sv.autocrop.utils.extensions.launchAfterShortDelay
2627
import com.w2sv.autocrop.utils.getFragment
28+
import com.w2sv.autocrop.utils.registerOnBackPressedHandler
2729
import com.w2sv.autocrop.utils.requireCastActivity
28-
import com.w2sv.autocrop.ui.Constant
2930
import com.w2sv.cropbundle.CropBundle
3031
import com.w2sv.domain.repository.PreferencesRepository
3132
import dagger.hilt.android.AndroidEntryPoint
@@ -118,6 +119,21 @@ class CropFragment
118119

119120
private val viewModel by viewModels<ViewModel>()
120121

122+
override fun onAttach(context: Context) {
123+
super.onAttach(context)
124+
125+
registerOnBackPressedHandler {
126+
viewModel.backPressListener(
127+
onFirstPress = {
128+
requireContext().showToast(getString(R.string.tap_again_to_cancel))
129+
},
130+
onSecondPress = {
131+
MainActivity.start(requireActivity())
132+
}
133+
)
134+
}
135+
}
136+
121137
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
122138
super.onViewCreated(view, savedInstanceState)
123139

@@ -173,17 +189,6 @@ class CropFragment
173189
Animatoo.animateSwipeLeft(requireActivity())
174190
}
175191

176-
fun onBackPress() {
177-
viewModel.backPressListener(
178-
{
179-
requireContext().showToast(getString(R.string.tap_again_to_cancel))
180-
},
181-
{
182-
MainActivity.start(requireContext())
183-
}
184-
)
185-
}
186-
187192
companion object {
188193
fun getInstance(screenshotUris: List<Uri>): CropFragment =
189194
getFragment(CropFragment::class.java, MainActivity.EXTRA_SELECTED_IMAGE_URIS to screenshotUris)
Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,33 @@
11
package com.w2sv.autocrop.activities.crop
22

3+
import android.content.Context
34
import android.os.Bundle
45
import android.view.View
56
import com.w2sv.autocrop.activities.AppFragment
67
import com.w2sv.autocrop.activities.main.MainActivity
78
import com.w2sv.autocrop.databinding.CroppingFailedBinding
9+
import com.w2sv.autocrop.utils.registerOnBackPressedHandler
810

911
class CroppingFailedFragment
1012
: AppFragment<CroppingFailedBinding>(CroppingFailedBinding::class.java) {
1113

14+
override fun onAttach(context: Context) {
15+
super.onAttach(context)
16+
17+
registerOnBackPressedHandler {
18+
navigateToMainActivity()
19+
}
20+
}
21+
1222
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
1323
super.onViewCreated(view, savedInstanceState)
1424

1525
binding.gotItButton.setOnClickListener {
16-
MainActivity.start(requireContext())
26+
navigateToMainActivity()
1727
}
1828
}
29+
30+
private fun navigateToMainActivity() {
31+
MainActivity.start(requireActivity())
32+
}
1933
}

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/ExaminationActivity.kt

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package com.w2sv.autocrop.activities.examination
22

3+
import android.app.Activity
34
import android.content.Context
45
import androidx.activity.viewModels
56
import androidx.fragment.app.Fragment
67
import androidx.lifecycle.viewModelScope
78
import com.w2sv.androidutils.os.getParcelableCompat
8-
import com.w2sv.androidutils.widget.showToast
9-
import com.w2sv.autocrop.R
10-
import com.w2sv.autocrop.activities.AppActivity
9+
import com.w2sv.autocrop.activities.ViewBoundFragmentActivity
1110
import com.w2sv.autocrop.activities.crop.domain.CropResults
12-
import com.w2sv.autocrop.activities.examination.adjustment.CropAdjustmentFragment
13-
import com.w2sv.autocrop.activities.examination.comparison.ComparisonFragment
1411
import com.w2sv.autocrop.activities.examination.exit.ExitFragment
1512
import com.w2sv.autocrop.activities.examination.pager.CropPagerFragment
16-
import com.w2sv.autocrop.activities.examination.saveall.SaveAllFragment
1713
import com.w2sv.autocrop.activities.main.MainActivity
1814
import com.w2sv.cropbundle.CropBundle
1915
import com.w2sv.cropbundle.io.CropBundleIOProcessingUseCase
@@ -29,7 +25,7 @@ import kotlinx.coroutines.launch
2925
import javax.inject.Inject
3026

3127
@AndroidEntryPoint
32-
class ExaminationActivity : AppActivity() {
28+
class ExaminationActivity : ViewBoundFragmentActivity() {
3329

3430
@HiltViewModel
3531
class ViewModel @Inject constructor(
@@ -74,9 +70,9 @@ class ExaminationActivity : AppActivity() {
7470
SharingStarted.Eagerly
7571
)
7672

77-
fun startMainActivity(context: Context) {
73+
fun navigateToMainActivity(activity: Activity) {
7874
MainActivity.start(
79-
context = context,
75+
activity = activity,
8076
configureIntent = {
8177
putExtra(IOResults.EXTRA, IOResults.get(cropBundleIOResults))
8278
}
@@ -118,14 +114,4 @@ class ExaminationActivity : AppActivity() {
118114
)
119115
.commit()
120116
}
121-
122-
override fun handleOnBackPressed() {
123-
when (val fragment = getCurrentFragment()) {
124-
is ComparisonFragment -> fragment.popFromFragmentManager(supportFragmentManager)
125-
is CropAdjustmentFragment -> supportFragmentManager.popBackStack()
126-
is SaveAllFragment -> showToast(getString(R.string.wait_until_crops_have_been_saved))
127-
is CropPagerFragment -> fragment.onBackPress()
128-
else -> throw IllegalStateException("Invalid Fragment type")
129-
}
130-
}
131117
}

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/comparison/ComparisonFragment.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import android.view.MotionEvent.ACTION_DOWN
1010
import android.view.MotionEvent.ACTION_UP
1111
import android.view.View
1212
import android.view.animation.DecelerateInterpolator
13-
import androidx.fragment.app.FragmentManager
1413
import androidx.fragment.app.viewModels
1514
import androidx.lifecycle.LiveData
1615
import androidx.lifecycle.MutableLiveData
@@ -31,6 +30,7 @@ import com.w2sv.autocrop.activities.examination.comparison.model.ImageType
3130
import com.w2sv.autocrop.databinding.ComparisonBinding
3231
import com.w2sv.autocrop.utils.extensions.launchAfterShortDelay
3332
import com.w2sv.autocrop.utils.getFragment
33+
import com.w2sv.autocrop.utils.registerOnBackPressedHandler
3434
import com.w2sv.cropbundle.CropBundle
3535
import com.w2sv.domain.repository.PreferencesRepository
3636
import dagger.hilt.android.AndroidEntryPoint
@@ -98,6 +98,11 @@ class ComparisonFragment
9898
}
9999
}
100100
)
101+
102+
registerOnBackPressedHandler {
103+
binding.cropIv.show()
104+
parentFragmentManager.popBackStack()
105+
}
101106
}
102107

103108
private fun onEnterTransitionCompleted() {
@@ -162,11 +167,6 @@ class ComparisonFragment
162167
}
163168
}
164169

165-
fun popFromFragmentManager(fragmentManager: FragmentManager) {
166-
binding.cropIv.show()
167-
fragmentManager.popBackStack()
168-
}
169-
170170
companion object {
171171
fun getInstance(cropBundlePosition: Int): ComparisonFragment =
172172
getFragment(ComparisonFragment::class.java, CropBundle.EXTRA_POSITION to cropBundlePosition)

app/src/main/kotlin/com/w2sv/autocrop/activities/examination/exit/ExitFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class ExitFragment :
101101
.random()
102102
)
103103
.onEnd {
104-
activityViewModel.startMainActivity(requireContext())
104+
activityViewModel.navigateToMainActivity(requireActivity())
105105
}
106106
.play()
107107
}

0 commit comments

Comments
 (0)