diff --git a/UIViews/build.gradle b/UIViews/build.gradle
index 228c05f10..1124650e5 100644
--- a/UIViews/build.gradle
+++ b/UIViews/build.gradle
@@ -61,6 +61,8 @@ dependencies {
implementation 'me.zhanghai.android.fastscroll:library:1.1.5'
+ implementation 'com.github.pwittchen:reactivenetwork-rx2:3.0.8'
+
implementation project(':Models')
implementation project(':favoritesdatabase')
diff --git a/UIViews/src/main/AndroidManifest.xml b/UIViews/src/main/AndroidManifest.xml
index 408a46fba..c263d1b0e 100644
--- a/UIViews/src/main/AndroidManifest.xml
+++ b/UIViews/src/main/AndroidManifest.xml
@@ -2,4 +2,5 @@
+
\ No newline at end of file
diff --git a/UIViews/src/main/java/com/programmersbox/uiviews/AllFragment.kt b/UIViews/src/main/java/com/programmersbox/uiviews/AllFragment.kt
index e0fdffe12..58bc53771 100644
--- a/UIViews/src/main/java/com/programmersbox/uiviews/AllFragment.kt
+++ b/UIViews/src/main/java/com/programmersbox/uiviews/AllFragment.kt
@@ -2,10 +2,12 @@ package com.programmersbox.uiviews
import android.os.Bundle
import android.view.View
+import android.widget.RelativeLayout
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
@@ -77,6 +79,15 @@ class AllFragment : BaseListFragment() {
})
}
+ ReactiveNetwork.observeInternetConnectivity()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe {
+ view.findViewById(R.id.offline_view).visibility = if (it) View.GONE else View.VISIBLE
+ refresh.visibility = if (it) View.VISIBLE else View.GONE
+ }
+ .addTo(disposable)
+
sourcePublish
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
diff --git a/UIViews/src/main/java/com/programmersbox/uiviews/BaseMainActivity.kt b/UIViews/src/main/java/com/programmersbox/uiviews/BaseMainActivity.kt
index 71414fda2..1b72792c3 100644
--- a/UIViews/src/main/java/com/programmersbox/uiviews/BaseMainActivity.kt
+++ b/UIViews/src/main/java/com/programmersbox/uiviews/BaseMainActivity.kt
@@ -49,16 +49,19 @@ abstract class BaseMainActivity : AppCompatActivity(), GenericInfo {
val controller = findViewById(R.id.navLayout2)
.also {
GlobalScope.launch {
- val request = Request.Builder()
- .url("https://github.com/jakepurple13/OtakuWorld/releases/latest")
- .get()
- .build()
- @Suppress("BlockingMethodInNonBlockingContext") val response = OkHttpClient().newCall(request).execute()
- val f = response.request().url().path.split("/").lastOrNull()?.toDoubleOrNull()
- runOnUIThread {
- if (packageManager?.getPackageInfo(packageName, 0)?.versionName?.toDoubleOrNull() ?: 0.0 < f ?: 0.0) {
- it.getOrCreateBadge(R.id.setting_nav).number = 1
+ try {
+ val request = Request.Builder()
+ .url("https://github.com/jakepurple13/OtakuWorld/releases/latest")
+ .get()
+ .build()
+ @Suppress("BlockingMethodInNonBlockingContext") val response = OkHttpClient().newCall(request).execute()
+ val f = response.request().url().path.split("/").lastOrNull()?.toDoubleOrNull()
+ runOnUIThread {
+ if (packageManager?.getPackageInfo(packageName, 0)?.versionName?.toDoubleOrNull() ?: 0.0 < f ?: 0.0) {
+ it.getOrCreateBadge(R.id.setting_nav).number = 1
+ }
}
+ } catch (e: Exception) {
}
}
}
diff --git a/UIViews/src/main/java/com/programmersbox/uiviews/RecentFragment.kt b/UIViews/src/main/java/com/programmersbox/uiviews/RecentFragment.kt
index 42f8a6039..da52c7f2e 100644
--- a/UIViews/src/main/java/com/programmersbox/uiviews/RecentFragment.kt
+++ b/UIViews/src/main/java/com/programmersbox/uiviews/RecentFragment.kt
@@ -2,9 +2,11 @@ package com.programmersbox.uiviews
import android.os.Bundle
import android.view.View
+import android.widget.RelativeLayout
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork
import com.programmersbox.favoritesdatabase.DbModel
import com.programmersbox.favoritesdatabase.ItemDatabase
import com.programmersbox.models.ApiService
@@ -63,6 +65,15 @@ class RecentFragment : BaseListFragment() {
})
}
+ ReactiveNetwork.observeInternetConnectivity()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe {
+ view.findViewById(R.id.offline_view).visibility = if (it) View.GONE else View.VISIBLE
+ refresh.visibility = if (it) View.VISIBLE else View.GONE
+ }
+ .addTo(disposable)
+
refresh.setOnRefreshListener { sourceLoad(sourcePublish.value!!) }
sourcePublish
diff --git a/UIViews/src/main/java/com/programmersbox/uiviews/SettingsFragment.kt b/UIViews/src/main/java/com/programmersbox/uiviews/SettingsFragment.kt
index 6f91469b7..42a06faa3 100644
--- a/UIViews/src/main/java/com/programmersbox/uiviews/SettingsFragment.kt
+++ b/UIViews/src/main/java/com/programmersbox/uiviews/SettingsFragment.kt
@@ -194,24 +194,29 @@ class SettingsFragment : PreferenceFragmentCompat() {
fun updateSetter() {
if (!checker.get()) {
GlobalScope.launch {
- checker.set(true)
- val request = Request.Builder()
- .url("https://github.com/jakepurple13/OtakuWorld/releases/latest")
- .get()
- .build()
- @Suppress("BlockingMethodInNonBlockingContext") val response = OkHttpClient().newCall(request).execute()
- val f = response.request().url().path.split("/").lastOrNull()?.toDoubleOrNull()
- runOnUIThread {
- findPreference("updateAvailable")?.let { p1 ->
- p1.summary = "Version: $f"
- p1.isVisible =
- context?.packageManager?.getPackageInfo(
- requireContext().packageName,
- 0
- )?.versionName?.toDoubleOrNull() ?: 0.0 < f ?: 0.0
+ try {
+ checker.set(true)
+ val request = Request.Builder()
+ .url("https://github.com/jakepurple13/OtakuWorld/releases/latest")
+ .get()
+ .build()
+ @Suppress("BlockingMethodInNonBlockingContext") val response = OkHttpClient().newCall(request).execute()
+ val f = response.request().url().path.split("/").lastOrNull()?.toDoubleOrNull()
+ runOnUIThread {
+ findPreference("updateAvailable")?.let { p1 ->
+ p1.summary = "Version: $f"
+ p1.isVisible =
+ context?.packageManager?.getPackageInfo(
+ requireContext().packageName,
+ 0
+ )?.versionName?.toDoubleOrNull() ?: 0.0 < f ?: 0.0
+ }
}
+ } catch (e: Exception) {
+
+ } finally {
+ checker.set(false)
}
- checker.set(false)
}
}
}
@@ -323,12 +328,12 @@ class SettingsDsl {
}
}
-abstract class CoroutineTask : CoroutineScope {
+abstract class CoroutineTask