mirror of
https://github.com/nextcloud/talk-android
synced 2025-02-07 23:24:33 +00:00
Added network checks and display error dialog
Signed-off-by: Bhavesh Kumawat <kumawatbhavesh1000@gmail.com> Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
6709fefd09
commit
bde1c3a48d
@ -21,6 +21,8 @@ import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.ConnectivityManager
|
||||
import android.net.NetworkCapabilities
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@ -679,6 +681,9 @@ class ConversationsListActivity :
|
||||
fun fetchRooms() {
|
||||
val includeStatus = isUserStatusAvailable(userManager.currentUser.blockingGet())
|
||||
|
||||
// checks internet connection before fetching rooms
|
||||
if (isNetworkAvailable(context)) {
|
||||
Log.d(TAG, "Internet connection available")
|
||||
dispose(null)
|
||||
isRefreshing = true
|
||||
conversationItems = ArrayList()
|
||||
@ -735,6 +740,10 @@ class ConversationsListActivity :
|
||||
binding?.swipeRefreshLayoutView?.isRefreshing = false
|
||||
isRefreshing = false
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "No internet connection detected")
|
||||
showNetworkErrorDialog()
|
||||
}
|
||||
}
|
||||
|
||||
private fun fetchPendingInvitations() {
|
||||
@ -840,6 +849,42 @@ class ConversationsListActivity :
|
||||
}
|
||||
}
|
||||
|
||||
private fun showNetworkErrorDialog() {
|
||||
binding.floatingActionButton.let {
|
||||
val dialogBuilder = MaterialAlertDialogBuilder(it.context)
|
||||
.setIcon(
|
||||
viewThemeUtils.dialog.colorMaterialAlertDialogIcon(
|
||||
context,
|
||||
R.drawable.ic_baseline_error_outline_24dp
|
||||
)
|
||||
)
|
||||
.setTitle(R.string.nc_check_your_internet)
|
||||
.setCancelable(false)
|
||||
.setNegativeButton(R.string.close, null)
|
||||
.setNeutralButton(R.string.nc_refresh) { _, _ ->
|
||||
fetchRooms()
|
||||
fetchPendingInvitations()
|
||||
}
|
||||
|
||||
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(it.context, dialogBuilder)
|
||||
val dialog = dialogBuilder.show()
|
||||
viewThemeUtils.platform.colorTextButtons(
|
||||
dialog.getButton(AlertDialog.BUTTON_POSITIVE),
|
||||
dialog.getButton(AlertDialog.BUTTON_NEGATIVE),
|
||||
dialog.getButton(AlertDialog.BUTTON_NEUTRAL)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("ReturnCount")
|
||||
private fun isNetworkAvailable(context: Context): Boolean {
|
||||
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
val network = connectivityManager.activeNetwork ?: return false
|
||||
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
|
||||
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
|
||||
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
|
||||
}
|
||||
|
||||
private fun sortConversations(conversationItems: MutableList<AbstractFlexibleItem<*>>) {
|
||||
conversationItems.sortWith { o1: AbstractFlexibleItem<*>, o2: AbstractFlexibleItem<*> ->
|
||||
val conversation1 = (o1 as ConversationItem).model
|
||||
|
@ -380,6 +380,8 @@ How to translate with transifex:
|
||||
<string name="openConversations">Open conversations</string>
|
||||
<string name="error_loading_chats">There was a problem loading your chats</string>
|
||||
<string name="close">Close</string>
|
||||
<string name="nc_refresh">Refresh</string>
|
||||
<string name="nc_check_your_internet">Please check your internet connection</string>
|
||||
|
||||
<!-- Chat -->
|
||||
<string name="nc_hint_enter_a_message">Enter a message …</string>
|
||||
|
Loading…
Reference in New Issue
Block a user