diff --git a/app/src/full/java/org/fdroid/fdroid/nearby/BonjourManager.java b/app/src/full/java/org/fdroid/fdroid/nearby/BonjourManager.java index 691303c807..cd43bf7f09 100644 --- a/app/src/full/java/org/fdroid/fdroid/nearby/BonjourManager.java +++ b/app/src/full/java/org/fdroid/fdroid/nearby/BonjourManager.java @@ -14,8 +14,10 @@ import android.text.TextUtils; import android.util.Log; +import org.fdroid.database.Repository; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; +import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.nearby.peers.BonjourPeer; @@ -178,6 +180,10 @@ public void handleMessage(Message msg) { } private void handleVisible(String localRepoName, boolean useHttps) { + if (FDroidApp.repo == null) { + sendBroadcast(STATUS_ERROR, context.getString(R.string.swap_no_wifi_network)); + return; + } HashMap values = new HashMap<>(); values.put(BonjourPeer.PATH, "/fdroid/repo"); values.put(BonjourPeer.NAME, localRepoName); diff --git a/app/src/full/java/org/fdroid/fdroid/nearby/peers/BonjourPeer.java b/app/src/full/java/org/fdroid/fdroid/nearby/peers/BonjourPeer.java index 4308d1a41e..8876f965d1 100644 --- a/app/src/full/java/org/fdroid/fdroid/nearby/peers/BonjourPeer.java +++ b/app/src/full/java/org/fdroid/fdroid/nearby/peers/BonjourPeer.java @@ -29,7 +29,7 @@ public class BonjourPeer extends WifiPeer { public static BonjourPeer getInstance(ServiceInfo serviceInfo) { String type = serviceInfo.getPropertyString(TYPE); String fingerprint = serviceInfo.getPropertyString(FINGERPRINT); - if (type == null || !type.startsWith("fdroidrepo") + if (type == null || !type.startsWith("fdroidrepo") || FDroidApp.repo == null || TextUtils.equals(FDroidApp.repo.getFingerprint(), fingerprint)) { return null; } diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java index 0d29a6da9d..0a7a33277a 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java @@ -14,6 +14,7 @@ import org.fdroid.database.UpdatableApp; import org.fdroid.database.DbUpdateChecker; import org.fdroid.fdroid.AppUpdateStatusManager; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.DBHelper; @@ -35,10 +36,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.recyclerview.widget.RecyclerView; -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; -import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.disposables.Disposable; -import io.reactivex.rxjava3.schedulers.Schedulers; /** * Manages the following types of information: @@ -101,10 +99,8 @@ public UpdatesAdapter(AppCompatActivity activity) { private void loadUpdatableApps() { List releaseChannels = Preferences.get().getBackendReleaseChannels(); if (disposable != null) disposable.dispose(); - disposable = Single.fromCallable(() -> updateChecker.getUpdatableApps(releaseChannels)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::onCanUpdateLoadFinished); + disposable = Utils.runOffUiThread(() -> updateChecker.getUpdatableApps(releaseChannels), + this::onCanUpdateLoadFinished); } public boolean canViewAllUpdateableApps() { diff --git a/libs/index/src/commonMain/kotlin/org/fdroid/index/v2/PackageV2.kt b/libs/index/src/commonMain/kotlin/org/fdroid/index/v2/PackageV2.kt index 3b8b5c3695..43009a8188 100644 --- a/libs/index/src/commonMain/kotlin/org/fdroid/index/v2/PackageV2.kt +++ b/libs/index/src/commonMain/kotlin/org/fdroid/index/v2/PackageV2.kt @@ -121,7 +121,8 @@ public data class FileV1( ) : IndexFile { public companion object { @JvmStatic - public fun deserialize(string: String): FileV1 { + public fun deserialize(string: String?): FileV1? { + if (string == null) return null return IndexParser.json.decodeFromString(string) } }