Loading app/build.gradle +3 −0 Original line number Diff line number Diff line Loading @@ -151,4 +151,7 @@ dependencies { // JSoup implementation 'org.jsoup:jsoup:1.13.1' // Flow reactive network implementation 'ru.beryukhov:flowreactivenetwork:1.0.4' } app/src/main/java/foundation/e/apps/MainActivity.kt +44 −19 Original line number Diff line number Diff line Loading @@ -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() { Loading @@ -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 Loading @@ -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)) { Loading @@ -77,7 +86,8 @@ class MainActivity : AppCompatActivity() { viewModel.destroyCredentials() navController.navigate(R.id.signInFragment, null, navOptions) } User.GOOGLE -> {} User.GOOGLE -> { } } } } Loading @@ -89,6 +99,8 @@ class MainActivity : AppCompatActivity() { Log.d(TAG, "Authentication data is available!") } } } } viewModel.authValidity.observe(this) { if (it != true) { Loading @@ -100,6 +112,10 @@ class MainActivity : AppCompatActivity() { } navController.addOnDestinationChangedListener { _, destination, _ -> if (!hasInternet) { showNoInternet() } when (destination.id) { R.id.applicationFragment, R.id.applicationListFragment, Loading Loading @@ -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 } } app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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)) } } app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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) { Loading app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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 Loading
app/build.gradle +3 −0 Original line number Diff line number Diff line Loading @@ -151,4 +151,7 @@ dependencies { // JSoup implementation 'org.jsoup:jsoup:1.13.1' // Flow reactive network implementation 'ru.beryukhov:flowreactivenetwork:1.0.4' }
app/src/main/java/foundation/e/apps/MainActivity.kt +44 −19 Original line number Diff line number Diff line Loading @@ -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() { Loading @@ -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 Loading @@ -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)) { Loading @@ -77,7 +86,8 @@ class MainActivity : AppCompatActivity() { viewModel.destroyCredentials() navController.navigate(R.id.signInFragment, null, navOptions) } User.GOOGLE -> {} User.GOOGLE -> { } } } } Loading @@ -89,6 +99,8 @@ class MainActivity : AppCompatActivity() { Log.d(TAG, "Authentication data is available!") } } } } viewModel.authValidity.observe(this) { if (it != true) { Loading @@ -100,6 +112,10 @@ class MainActivity : AppCompatActivity() { } navController.addOnDestinationChangedListener { _, destination, _ -> if (!hasInternet) { showNoInternet() } when (destination.id) { R.id.applicationFragment, R.id.applicationListFragment, Loading Loading @@ -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 } }
app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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)) } }
app/src/main/java/foundation/e/apps/application/ApplicationFragment.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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) { Loading
app/src/main/java/foundation/e/apps/applicationlist/ApplicationListFragment.kt +11 −7 Original line number Diff line number Diff line Loading @@ -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