Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28afc8e1 authored by Abhishek Aggarwal's avatar Abhishek Aggarwal
Browse files

Merge branch '4411_no_internet_ui' into 'epic_176-all-refactorAndGplay'

App Lounge: Check for internet connectivity

See merge request ecorp/apps/apps!27
parents 746b3fbf 123d5746
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -151,4 +151,7 @@ dependencies {

    // JSoup
    implementation 'org.jsoup:jsoup:1.13.1'

    // Flow reactive network
    implementation 'ru.beryukhov:flowreactivenetwork:1.0.4'
}
+44 −19
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import foundation.e.apps.updates.UpdatesNotifier
import foundation.e.apps.utils.enums.Status
import foundation.e.apps.utils.enums.Type
import foundation.e.apps.utils.enums.User
import foundation.e.apps.utils.modules.CommonUtilsModule

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@@ -50,6 +51,8 @@ class MainActivity : AppCompatActivity() {
        val navController = navHostFragment.navController
        bottomNavigationView.setupWithNavController(navController)

        var hasInternet = true

        val viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java]

        // navOptions and activityNavController for TOS and SignIn Fragments
@@ -64,6 +67,12 @@ class MainActivity : AppCompatActivity() {
            }
        }

        viewModel.internetConnection.observe(this) { isInternetAvailable ->
            hasInternet = isInternetAvailable
            if (isInternetAvailable) {
                binding.noInternet.visibility = View.GONE
                binding.fragment.visibility = View.VISIBLE

                viewModel.userType.observe(this) { user ->
                    if (user.isNotBlank() && viewModel.tocStatus.value == true) {
                        when (User.valueOf(user)) {
@@ -77,7 +86,8 @@ class MainActivity : AppCompatActivity() {
                                viewModel.destroyCredentials()
                                navController.navigate(R.id.signInFragment, null, navOptions)
                            }
                    User.GOOGLE -> {}
                            User.GOOGLE -> {
                            }
                        }
                    }
                }
@@ -89,6 +99,8 @@ class MainActivity : AppCompatActivity() {
                        Log.d(TAG, "Authentication data is available!")
                    }
                }
            }
        }

        viewModel.authValidity.observe(this) {
            if (it != true) {
@@ -100,6 +112,10 @@ class MainActivity : AppCompatActivity() {
        }

        navController.addOnDestinationChangedListener { _, destination, _ ->
            if (!hasInternet) {
                showNoInternet()
            }

            when (destination.id) {
                R.id.applicationFragment,
                R.id.applicationListFragment,
@@ -151,5 +167,14 @@ class MainActivity : AppCompatActivity() {
                }
            }
        }

        if (!CommonUtilsModule.isNetworkAvailable(this)) {
            showNoInternet()
        }
    }

    private fun showNoInternet() {
        binding.noInternet.visibility = View.VISIBLE
        binding.fragment.visibility = View.GONE
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.liveData
import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.AuthData
import com.google.gson.Gson
@@ -38,7 +39,9 @@ import foundation.e.apps.manager.database.fusedDownload.FusedDownload
import foundation.e.apps.manager.fused.FusedManagerRepository
import foundation.e.apps.utils.enums.Type
import foundation.e.apps.utils.modules.DataStoreModule
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import ru.beryukhov.reactivenetwork.ReactiveNetwork
import java.io.ByteArrayOutputStream
import javax.inject.Inject

@@ -174,4 +177,8 @@ class MainActivityViewModel @Inject constructor(
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOS)
        return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT)
    }

    val internetConnection = liveData {
        emitSource(ReactiveNetwork().observeInternetConnectivity().asLiveData(Dispatchers.Default))
    }
}
+11 −7
Original line number Diff line number Diff line
@@ -78,14 +78,18 @@ class ApplicationFragment : Fragment(R.layout.fragment_application) {
        super.onViewCreated(view, savedInstanceState)
        _binding = FragmentApplicationBinding.bind(view)

        mainActivityViewModel.authData.observe(viewLifecycleOwner) {
        mainActivityViewModel.internetConnection.observe(viewLifecycleOwner) { hasInternet ->
            mainActivityViewModel.authData.observe(viewLifecycleOwner) { authData ->
                if (hasInternet) {
                    applicationViewModel.getApplicationDetails(
                        args.id,
                        args.packageName,
                it,
                        authData,
                        args.origin
                    )
                }
            }
        }

        val startDestination = findNavController().graph.startDestination
        if (startDestination == R.id.applicationFragment) {
+11 −7
Original line number Diff line number Diff line
@@ -57,14 +57,18 @@ class ApplicationListFragment : Fragment(R.layout.fragment_application_list), Fu
        super.onViewCreated(view, savedInstanceState)
        _binding = FragmentApplicationListBinding.bind(view)

        mainActivityViewModel.authData.value?.let {
        mainActivityViewModel.internetConnection.observe(viewLifecycleOwner) { isInternetConnection ->
            mainActivityViewModel.authData.value?.let { authData ->
                if (isInternetConnection) {
                    viewModel.getList(
                        args.category,
                        args.browseUrl,
                it,
                        authData,
                        args.source
                    )
                }
            }
        }

        binding.toolbarTitleTV.text = args.translation
        binding.toolbar.apply {
Loading