diff --git a/app/src/main/java/app/fedilab/nitterizeme/adapters/AppInfoAdapter.java b/app/src/main/java/app/fedilab/nitterizeme/adapters/AppInfoAdapter.java index 08361e7..d292c88 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/adapters/AppInfoAdapter.java +++ b/app/src/main/java/app/fedilab/nitterizeme/adapters/AppInfoAdapter.java @@ -36,7 +36,7 @@ import app.fedilab.nitterizeme.BuildConfig; import app.fedilab.nitterizeme.R; import app.fedilab.nitterizeme.entities.AppInfo; -public class AppInfoAdapter extends RecyclerView.Adapter { +public class AppInfoAdapter extends RecyclerView.Adapter { private static final int LAYOUT_TITLE = 0; private static final int LAYOUT_INFO = 1; diff --git a/app/src/main/java/app/fedilab/nitterizeme/adapters/DefaultAppAdapter.java b/app/src/main/java/app/fedilab/nitterizeme/adapters/DefaultAppAdapter.java index 358f1e2..fc26b05 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/adapters/DefaultAppAdapter.java +++ b/app/src/main/java/app/fedilab/nitterizeme/adapters/DefaultAppAdapter.java @@ -37,7 +37,7 @@ import app.fedilab.nitterizeme.entities.DefaultApp; import app.fedilab.nitterizeme.sqlite.DefaultAppDAO; import app.fedilab.nitterizeme.sqlite.Sqlite; -public class DefaultAppAdapter extends RecyclerView.Adapter { +public class DefaultAppAdapter extends RecyclerView.Adapter { private List defaultApps; diff --git a/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java b/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java index b708107..cb027d9 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java +++ b/app/src/main/java/app/fedilab/nitterizeme/adapters/InstanceAdapter.java @@ -42,7 +42,7 @@ import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_HOS import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_HOST; import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_HOST; -public class InstanceAdapter extends RecyclerView.Adapter { +public class InstanceAdapter extends RecyclerView.Adapter { private List instances; private InstanceAdapter instanceAdapter; diff --git a/app/src/main/java/app/fedilab/nitterizeme/viewmodels/SearchInstanceVM.java b/app/src/main/java/app/fedilab/nitterizeme/viewmodels/SearchInstanceVM.java index 0f04b5f..f898735 100644 --- a/app/src/main/java/app/fedilab/nitterizeme/viewmodels/SearchInstanceVM.java +++ b/app/src/main/java/app/fedilab/nitterizeme/viewmodels/SearchInstanceVM.java @@ -16,6 +16,8 @@ package app.fedilab.nitterizeme.viewmodels; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; +import android.os.Handler; +import android.os.Looper; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -57,86 +59,94 @@ public class SearchInstanceVM extends ViewModel { } private void loadInstances() { - HttpsURLConnection httpsURLConnection; - try { - String instances_url = "https://fedilab.app/untrackme_instances/payload_2.json"; - URL url = new URL(instances_url); - httpsURLConnection = (HttpsURLConnection) url.openConnection(); - httpsURLConnection.setConnectTimeout(10 * 1000); - httpsURLConnection.setRequestProperty("http.keepAlive", "false"); - httpsURLConnection.setRequestProperty("Content-Type", "application/json"); - httpsURLConnection.setRequestProperty("Accept", "application/json"); - httpsURLConnection.setRequestMethod("GET"); - httpsURLConnection.setDefaultUseCaches(true); - httpsURLConnection.setUseCaches(true); - String response = null; - if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) { - java.util.Scanner s = new java.util.Scanner(httpsURLConnection.getInputStream()).useDelimiter("\\A"); - response = s.hasNext() ? s.next() : ""; - } - httpsURLConnection.getInputStream().close(); - SharedPreferences sharedpreferences = activityWeakReference.get().getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE); - String defaultInvidious = sharedpreferences.getString(SET_INVIDIOUS_HOST, DEFAULT_INVIDIOUS_HOST); - String defaultNitter = sharedpreferences.getString(SET_NITTER_HOST, DEFAULT_NITTER_HOST); - String defaultBibliogram = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, DEFAULT_BIBLIOGRAM_HOST); - ArrayList instances = new ArrayList<>(); - if( response != null) { + Thread thread = new Thread() { + @Override + public void run() { + HttpsURLConnection httpsURLConnection; try { - JSONObject jsonObject = new JSONObject(response); - JSONArray jsonArrayInvidious = jsonObject.getJSONArray("invidious"); - JSONArray jsonArrayNitter = jsonObject.getJSONArray("nitter"); - JSONArray jsonArrayBibliogram = jsonObject.getJSONArray("bibliogram"); + String instances_url = "https://fedilab.app/untrackme_instances/payload_2.json"; + URL url = new URL(instances_url); + httpsURLConnection = (HttpsURLConnection) url.openConnection(); + httpsURLConnection.setConnectTimeout(10 * 1000); + httpsURLConnection.setRequestProperty("http.keepAlive", "false"); + httpsURLConnection.setRequestProperty("Content-Type", "application/json"); + httpsURLConnection.setRequestProperty("Accept", "application/json"); + httpsURLConnection.setRequestMethod("GET"); + httpsURLConnection.setDefaultUseCaches(true); + httpsURLConnection.setUseCaches(true); + String response = null; + if (httpsURLConnection.getResponseCode() >= 200 && httpsURLConnection.getResponseCode() < 400) { + java.util.Scanner s = new java.util.Scanner(httpsURLConnection.getInputStream()).useDelimiter("\\A"); + response = s.hasNext() ? s.next() : ""; + } + httpsURLConnection.getInputStream().close(); + SharedPreferences sharedpreferences = activityWeakReference.get().getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE); + String defaultInvidious = sharedpreferences.getString(SET_INVIDIOUS_HOST, DEFAULT_INVIDIOUS_HOST); + String defaultNitter = sharedpreferences.getString(SET_NITTER_HOST, DEFAULT_NITTER_HOST); + String defaultBibliogram = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, DEFAULT_BIBLIOGRAM_HOST); + ArrayList instances = new ArrayList<>(); + if( response != null) { + try { + JSONObject jsonObject = new JSONObject(response); + JSONArray jsonArrayInvidious = jsonObject.getJSONArray("invidious"); + JSONArray jsonArrayNitter = jsonObject.getJSONArray("nitter"); + JSONArray jsonArrayBibliogram = jsonObject.getJSONArray("bibliogram"); - for (int i = 0; i < jsonArrayInvidious.length(); i++) { - Instance instance = new Instance(); - String domain = jsonArrayInvidious.getJSONObject(i).getString("domain"); - boolean cloudFlare = jsonArrayInvidious.getJSONObject(i).getBoolean("cloudflare"); - String locale = jsonArrayInvidious.getJSONObject(i).getString("locale"); - instance.setDomain(domain); - instance.setCloudflare(cloudFlare); - instance.setLocale(locale); - instance.setType(Instance.instanceType.INVIDIOUS); - if (defaultInvidious != null && domain.compareTo(defaultInvidious) == 0) { - instance.setChecked(true); + for (int i = 0; i < jsonArrayInvidious.length(); i++) { + Instance instance = new Instance(); + String domain = jsonArrayInvidious.getJSONObject(i).getString("domain"); + boolean cloudFlare = jsonArrayInvidious.getJSONObject(i).getBoolean("cloudflare"); + String locale = jsonArrayInvidious.getJSONObject(i).getString("locale"); + instance.setDomain(domain); + instance.setCloudflare(cloudFlare); + instance.setLocale(locale); + instance.setType(Instance.instanceType.INVIDIOUS); + if (defaultInvidious != null && domain.compareTo(defaultInvidious) == 0) { + instance.setChecked(true); + } + instances.add(instance); + } + for (int i = 0; i < jsonArrayNitter.length(); i++) { + Instance instance = new Instance(); + String domain = jsonArrayNitter.getJSONObject(i).getString("domain"); + boolean cloudFlare = jsonArrayNitter.getJSONObject(i).getBoolean("cloudflare"); + String locale = jsonArrayNitter.getJSONObject(i).getString("locale"); + instance.setDomain(domain); + instance.setCloudflare(cloudFlare); + instance.setLocale(locale); + instance.setType(Instance.instanceType.NITTER); + if (defaultNitter != null && domain.compareTo(defaultNitter) == 0) { + instance.setChecked(true); + } + instances.add(instance); + } + for (int i = 0; i < jsonArrayBibliogram.length(); i++) { + Instance instance = new Instance(); + String domain = jsonArrayBibliogram.getJSONObject(i).getString("domain"); + boolean cloudFlare = jsonArrayBibliogram.getJSONObject(i).getBoolean("cloudflare"); + String locale = jsonArrayBibliogram.getJSONObject(i).getString("locale"); + instance.setDomain(domain); + instance.setCloudflare(cloudFlare); + instance.setLocale(locale); + instance.setType(Instance.instanceType.BIBLIOGRAM); + if (defaultBibliogram != null && domain.compareTo(defaultBibliogram) == 0) { + instance.setChecked(true); + } + instances.add(instance); + } + Handler mainHandler = new Handler(Looper.getMainLooper()); + Runnable myRunnable = () -> instancesMLD.setValue(instances); + mainHandler.post(myRunnable); + } catch (JSONException e) { + e.printStackTrace(); } - instances.add(instance); } - for (int i = 0; i < jsonArrayNitter.length(); i++) { - Instance instance = new Instance(); - String domain = jsonArrayNitter.getJSONObject(i).getString("domain"); - boolean cloudFlare = jsonArrayNitter.getJSONObject(i).getBoolean("cloudflare"); - String locale = jsonArrayNitter.getJSONObject(i).getString("locale"); - instance.setDomain(domain); - instance.setCloudflare(cloudFlare); - instance.setLocale(locale); - instance.setType(Instance.instanceType.NITTER); - if (defaultNitter != null && domain.compareTo(defaultNitter) == 0) { - instance.setChecked(true); - } - instances.add(instance); - } - for (int i = 0; i < jsonArrayBibliogram.length(); i++) { - Instance instance = new Instance(); - String domain = jsonArrayBibliogram.getJSONObject(i).getString("domain"); - boolean cloudFlare = jsonArrayBibliogram.getJSONObject(i).getBoolean("cloudflare"); - String locale = jsonArrayBibliogram.getJSONObject(i).getString("locale"); - instance.setDomain(domain); - instance.setCloudflare(cloudFlare); - instance.setLocale(locale); - instance.setType(Instance.instanceType.BIBLIOGRAM); - if (defaultBibliogram != null && domain.compareTo(defaultBibliogram) == 0) { - instance.setChecked(true); - } - instances.add(instance); - } - instancesMLD.setValue(instances); - } catch (JSONException e) { + } catch (IOException e) { e.printStackTrace(); } } + }; + thread.start(); - } catch (IOException e) { - e.printStackTrace(); - } } }