Skip to content

Commit b2810bc

Browse files
Resolve crash when submitting feedback without internet access (commons-app#6018)
* fix: resolve crash when submitting feedback without internet access * feat:Added check for wheather internet connection was available for a network * feat:Added SnackBar for Retry and User Info * feat:Made the feedback dialog not leave screen in case of error * feat:Removed the network checking from the function * feat:Added try catch block for the Feedback * feat:Removed Unnecessary imports * feat:Used Snackbar and timber instead of log and Toast --------- Co-authored-by: Nicolas Raoul <nicolas.raoul@gmail.com>
1 parent f51b607 commit b2810bc

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

app/src/main/java/fr/free/nrw/commons/feedback/FeedbackDialog.kt

+27-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.text.Html
77
import android.text.Spanned
88
import android.text.method.LinkMovementMethod
99
import android.view.WindowManager
10+
import com.google.android.material.snackbar.Snackbar
1011
import fr.free.nrw.commons.R
1112
import fr.free.nrw.commons.databinding.DialogFeedbackBinding
1213
import fr.free.nrw.commons.feedback.model.Feedback
@@ -17,6 +18,8 @@ import fr.free.nrw.commons.utils.DeviceInfoUtil.getConnectionType
1718
import fr.free.nrw.commons.utils.DeviceInfoUtil.getDevice
1819
import fr.free.nrw.commons.utils.DeviceInfoUtil.getDeviceManufacturer
1920
import fr.free.nrw.commons.utils.DeviceInfoUtil.getDeviceModel
21+
import java.net.ConnectException
22+
import java.net.UnknownHostException
2023

2124
class FeedbackDialog(
2225
context: Context,
@@ -41,9 +44,31 @@ class FeedbackDialog(
4144
@Suppress("DEPRECATION")
4245
window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
4346
binding.btnSubmitFeedback.setOnClickListener {
44-
submitFeedback()
45-
}
47+
try {
48+
submitFeedback()
49+
} catch (e: Exception) {
50+
when (e) {
51+
is UnknownHostException -> {
52+
Snackbar.make(findViewById(android.R.id.content),
53+
R.string.error_feedback,
54+
Snackbar.LENGTH_SHORT).show()
55+
}
56+
57+
is ConnectException -> {
58+
Snackbar.make(findViewById(android.R.id.content),
59+
R.string.error_feedback,
60+
Snackbar.LENGTH_SHORT).show()
61+
}
4662

63+
else -> {
64+
Snackbar.make(findViewById(android.R.id.content),
65+
R.string.error_feedback,
66+
Snackbar.LENGTH_SHORT).show()
67+
}
68+
}
69+
}
70+
71+
}
4772
}
4873

4974
fun submitFeedback() {

app/src/main/java/fr/free/nrw/commons/navtab/MoreBottomSheetFragment.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import fr.free.nrw.commons.settings.SettingsActivity
3535
import io.reactivex.Single
3636
import io.reactivex.android.schedulers.AndroidSchedulers
3737
import io.reactivex.schedulers.Schedulers
38+
import timber.log.Timber
3839
import javax.inject.Inject
3940
import javax.inject.Named
4041

@@ -182,14 +183,17 @@ class MoreBottomSheetFragment : BottomSheetDialogFragment() {
182183
Single.defer { single }
183184
.subscribeOn(Schedulers.io())
184185
.observeOn(AndroidSchedulers.mainThread())
185-
.subscribe { success ->
186+
.subscribe({ success ->
186187
val messageResId = if (success) {
187188
R.string.thanks_feedback
188189
} else {
189190
R.string.error_feedback
190191
}
191192
Toast.makeText(requireContext(), getString(messageResId), Toast.LENGTH_SHORT).show()
192-
}
193+
}, { error ->
194+
Timber.e(error)
195+
Toast.makeText(requireContext(), R.string.error_feedback, Toast.LENGTH_SHORT).show()
196+
})
193197
}
194198

195199
/**

0 commit comments

Comments
 (0)