forked from Tadrisino/MathApp_frontend
Users never see error text: offline/slow wording in app and web; technical details are never shown
friendlyError now shows a server detail only when it is Persian prose (no 'خطای 404', no DRF English defaults); network errors say 'اینترنت قطع است' (navigator offline) or 'اینترنت کند است' (timeout). The native connecting screen picks the same two wordings from ConnectivityManager (ACCESS_NETWORK_STATE). Debug build compiles; not run on a device. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<!-- فقط برای فرقِ «اینترنت قطع است» و «اینترنت کند است» در اسپلشِ بیاتصال؛ مجوزِ عادی، بیپرسش. -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<!-- برای لرزشِ کوتاهِ جوابِ درست/غلط (navigator.vibrate در WebView). -->
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@ package com.tadrisino.app
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@@ -63,6 +66,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
private val handler = Handler(Looper.getMainLooper())
|
||||
private lateinit var offlineView: View
|
||||
private lateinit var offlineText: TextView
|
||||
private var offlineShown = false
|
||||
private val retryLoad = object : Runnable {
|
||||
override fun run() {
|
||||
@@ -82,7 +86,8 @@ class MainActivity : AppCompatActivity() {
|
||||
addView(ImageView(context).apply { setImageResource(R.drawable.splash_icon) },
|
||||
FrameLayout.LayoutParams(dp(288), dp(288), Gravity.CENTER))
|
||||
addView(TextView(context).apply {
|
||||
text = "در حال اتصال به اینترنت…"
|
||||
offlineText = this
|
||||
text = "اینترنت قطع است"
|
||||
setTextColor(Color.parseColor("#1a1a2e"))
|
||||
setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f)
|
||||
layoutDirection = View.LAYOUT_DIRECTION_RTL
|
||||
@@ -91,7 +96,15 @@ class MainActivity : AppCompatActivity() {
|
||||
.apply { topMargin = dp(150) })
|
||||
}
|
||||
|
||||
/** هیچ متنِ فنیِ خطا نشان داده نمیشود؛ فقط یکی از دو جمله: «قطع است» (شبکهای نیست) یا «کند است». */
|
||||
private fun hasInternet(): Boolean {
|
||||
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
val caps = cm.getNetworkCapabilities(cm.activeNetwork) ?: return false
|
||||
return caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||
}
|
||||
|
||||
private fun showOffline() {
|
||||
offlineText.text = if (hasInternet()) "اینترنت کند است؛ در حال اتصال…" else "اینترنت قطع است؛ در حال اتصال…"
|
||||
if (!offlineShown) {
|
||||
offlineShown = true
|
||||
webView.visibility = View.INVISIBLE // صفحهی خطای پیشفرضِ WebView دیده نشود
|
||||
|
||||
Reference in New Issue
Block a user