From 55808c68ffe78881b0e29c2fea3c0fcd23202328 Mon Sep 17 00:00:00 2001 From: arieljovananda88 <jovanandaa@gmail.com> Date: Wed, 3 Apr 2024 23:16:56 +0700 Subject: [PATCH] feat: toast for disconnected network when logging in --- .../bondoman/ui/login/LoginFragment.kt | 57 ++++++++++++------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/example/bondoman/ui/login/LoginFragment.kt b/app/src/main/java/com/example/bondoman/ui/login/LoginFragment.kt index 3ab6d8b..994ad27 100644 --- a/app/src/main/java/com/example/bondoman/ui/login/LoginFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/login/LoginFragment.kt @@ -17,6 +17,9 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.withContext import retrofit2.HttpException import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.widget.Toast // TODO: Rename parameter arguments, choose names that match @@ -68,33 +71,47 @@ class LoginFragment : Fragment() { val loginRequest = LoginRequest(email, password) val service = RetrofitClient.createRetrofitService(requireContext()) - - CoroutineScope(Dispatchers.IO).launch { - val response = service.login(loginRequest) - withContext(Dispatchers.Main) { - try { - if (response.isSuccessful) { - val token = response.body()?.token - if(!token.isNullOrEmpty()){ - val sharedPreferences = requireActivity().getSharedPreferences("BondoMan", Context.MODE_PRIVATE) - val editor = sharedPreferences.edit() - editor.putString("token", token) - editor.apply() - startActivity(Intent(activity, MainActivity::class.java)) - activity?.finish() + if (!isNetworkConnected(requireContext())){ + Toast.makeText(requireContext(), "Network is Disconnected Unable To Login", Toast.LENGTH_LONG).show() + } + else { + CoroutineScope(Dispatchers.IO).launch { + val response = service.login(loginRequest) + withContext(Dispatchers.Main) { + try { + if (response.isSuccessful) { + val token = response.body()?.token + if (!token.isNullOrEmpty()) { + val sharedPreferences = requireActivity().getSharedPreferences( + "BondoMan", + Context.MODE_PRIVATE + ) + val editor = sharedPreferences.edit() + editor.putString("token", token) + editor.apply() + startActivity(Intent(activity, MainActivity::class.java)) + activity?.finish() + } + } else { + println("Error: ${response.code()}") } - } else { - println("Error: ${response.code()}") + } catch (e: HttpException) { + println("Exception ${e.message}") + } catch (e: Throwable) { + println(e) } - } catch (e: HttpException) { - println("Exception ${e.message}") - } catch (e: Throwable) { - println(e) } } } } + private fun isNetworkConnected(context: Context): Boolean { + val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + val network = connectivityManager.activeNetwork ?: return false + val networkCapabilities = connectivityManager.getNetworkCapabilities(network) ?: return false + return networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + } + companion object { /** * Use this factory method to create a new instance of -- GitLab