diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 75284d44246151ac6010e659b77048b11d32f2e6..4b978a6b3afadcc24c7fd014208057ce5eda2671 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,9 +2,11 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" diff --git a/app/src/main/java/com/atm/bondowowo/LoginActivity.kt b/app/src/main/java/com/atm/bondowowo/LoginActivity.kt index 1ad62f5e37d97aedb7900bfb9fc86739b453ea08..9626277b63db876cdeef48b050a0ea5a729dd686 100644 --- a/app/src/main/java/com/atm/bondowowo/LoginActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/LoginActivity.kt @@ -7,6 +7,8 @@ import android.widget.EditText import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.data.model.LoginRequest +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import com.atm.bondowowo.utils.NetworkUtils.apiService import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -23,6 +25,10 @@ class LoginActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + CoroutineScope(Dispatchers.Main).launch { if (isUserAuthenticated()) { navigateToMainActivity() diff --git a/app/src/main/java/com/atm/bondowowo/MainActivity.kt b/app/src/main/java/com/atm/bondowowo/MainActivity.kt index 0f98f9e9c01648845b3df09c39b4e239843ed48b..c92c7c032ef9809f22c582964f728d05ba46bd58 100644 --- a/app/src/main/java/com/atm/bondowowo/MainActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/MainActivity.kt @@ -8,6 +8,8 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.setupWithNavController import com.atm.bondowowo.databinding.ActivityMainBinding +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import com.atm.bondowowo.utils.NetworkUtils import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -22,6 +24,10 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + CoroutineScope(Dispatchers.Main).launch { if (!isUserAuthenticated()) { navigateToLoginActivity() diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt index b7d354f06916bd5c460c86658869a1d45b4e9771..7b9366f5c365eb6316bc950ea35ebd7b0bf181be 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/settings/ExportToFileActivity.kt @@ -5,6 +5,8 @@ import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.R import com.atm.bondowowo.data.entity.Transaction +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper import org.apache.poi.xssf.usermodel.XSSFWorkbook import java.io.File import java.io.FileOutputStream @@ -13,6 +15,9 @@ class ExportToFileActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.fragment_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } val transactions: ArrayList<Transaction>? = intent.getSerializableExtra("transactions") as? ArrayList<Transaction> diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt index 7ef6c707decbb56ad0661c490cd639a98a4be4c8..b8ce183706bbaeaff1aae177f2306c655772fd88 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/settings/SendEmailActivity.kt @@ -8,9 +8,8 @@ import androidx.core.content.FileProvider import com.atm.bondowowo.R import java.io.File import android.content.pm.PackageManager - - - +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper class SendEmailActivity : AppCompatActivity() { @@ -19,6 +18,10 @@ class SendEmailActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.fragment_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + sendEmailWithAttachment2() } diff --git a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt index 5fca1ab151b49696fcf0ab7a6c98254480e09695..96f266eb9a0a1522b3ec129be71bec6249db837d 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionActivity.kt @@ -5,6 +5,8 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.atm.bondowowo.MainActivity import com.atm.bondowowo.R +import com.atm.bondowowo.utils.DialogHelper +import com.atm.bondowowo.utils.NetworkHelper class TransactionActivity : AppCompatActivity(), TransactionInputFragment.TransactionInputListener { @@ -12,6 +14,10 @@ class TransactionActivity : AppCompatActivity(), TransactionInputFragment.Transa super.onCreate(savedInstanceState) setContentView(R.layout.activity_transaction) + if (!NetworkHelper.isInternetAvailable(this)) { + DialogHelper.showNoInternetDialog(this) + } + val transactionInputFragment = TransactionInputFragment() // Get the id passed from the intent diff --git a/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt b/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt new file mode 100644 index 0000000000000000000000000000000000000000..4d72e281693a50ddd760406813f359c877a44d60 --- /dev/null +++ b/app/src/main/java/com/atm/bondowowo/utils/DialogHelper.kt @@ -0,0 +1,18 @@ +package com.atm.bondowowo.utils + +import android.app.AlertDialog +import android.content.Context +import android.content.DialogInterface + +object DialogHelper { + fun showNoInternetDialog(context: Context) { + val builder = AlertDialog.Builder(context) + builder.setTitle("No Internet Connection") + builder.setMessage("Please check your internet connection and try again.") + builder.setPositiveButton("OK", DialogInterface.OnClickListener { dialog, _ -> + dialog.dismiss() + }) + val dialog = builder.create() + dialog.show() + } +} diff --git a/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt b/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt new file mode 100644 index 0000000000000000000000000000000000000000..9f55ff3bd4acd5a5a3bb2ce9c891e109a65af8a9 --- /dev/null +++ b/app/src/main/java/com/atm/bondowowo/utils/NetworkHelper.kt @@ -0,0 +1,34 @@ +package com.atm.bondowowo.utils + +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.os.Build + +object NetworkHelper { + fun isInternetAvailable(context: Context): Boolean { + var result = false + val connectivityManager = + context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + connectivityManager?.run { + connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)?.run { + result = when { + hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true + hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true + else -> false + } + } + } + } else { + connectivityManager?.run { + connectivityManager.activeNetworkInfo?.run { + if (type == ConnectivityManager.TYPE_WIFI || type == ConnectivityManager.TYPE_MOBILE) { + result = true + } + } + } + } + return result + } +}