UntrackMe-app-android-redir.../app/src/main/java/app/fedilab/nitterizeme/activities/InstanceActivity.java

257 lines
13 KiB
Java
Raw Normal View History

2020-04-15 17:51:18 +02:00
package app.fedilab.nitterizeme.activities;
2020-02-20 11:20:30 +01:00
/* Copyright 2020 Thomas Schneider
*
2020-04-10 17:25:19 +02:00
* This file is a part of UntrackMe
2020-02-20 11:20:30 +01:00
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
2020-04-10 17:25:19 +02:00
* UntrackMe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
2020-02-20 11:20:30 +01:00
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
2020-04-10 17:25:19 +02:00
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
2020-02-20 11:20:30 +01:00
* see <http://www.gnu.org/licenses>. */
2020-08-31 19:00:17 +02:00
2020-09-22 18:33:23 +02:00
import android.content.Context;
import android.content.SharedPreferences;
2020-02-20 11:20:30 +01:00
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
2020-03-01 10:42:01 +01:00
import android.widget.TextView;
2020-02-20 11:20:30 +01:00
2020-03-01 10:42:01 +01:00
import androidx.appcompat.app.AlertDialog;
2020-02-20 11:20:30 +01:00
import androidx.appcompat.app.AppCompatActivity;
2020-08-31 19:00:17 +02:00
import androidx.lifecycle.ViewModelProvider;
2020-02-20 11:20:30 +01:00
import androidx.recyclerview.widget.LinearLayoutManager;
2020-02-29 10:21:35 +01:00
import com.google.android.material.snackbar.Snackbar;
2020-02-20 11:20:30 +01:00
import java.util.ArrayList;
import java.util.List;
2020-02-20 11:20:30 +01:00
2020-04-15 17:51:18 +02:00
import app.fedilab.nitterizeme.R;
import app.fedilab.nitterizeme.adapters.InstanceAdapter;
2020-12-01 10:29:24 +01:00
import app.fedilab.nitterizeme.databinding.ActivityPopupInstanceBinding;
2020-04-15 17:51:18 +02:00
import app.fedilab.nitterizeme.entities.Instance;
2020-08-31 19:00:17 +02:00
import app.fedilab.nitterizeme.viewmodels.SearchInstanceVM;
2020-04-15 17:51:18 +02:00
2020-02-20 11:20:30 +01:00
public class InstanceActivity extends AppCompatActivity {
private static final String list_for_instances = "https://framagit.org/tom79/fedilab_app/-/blob/master/content/untrackme_instances/payload_3.json";
2020-12-01 10:29:24 +01:00
private ActivityPopupInstanceBinding binding;
2020-03-01 10:42:01 +01:00
2020-02-20 11:20:30 +01:00
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
2020-12-01 10:29:24 +01:00
binding = ActivityPopupInstanceBinding.inflate(getLayoutInflater());
View viewRoot = binding.getRoot();
setContentView(viewRoot);
setTitle(R.string.select_instances);
2020-02-20 11:20:30 +01:00
2020-08-31 19:00:17 +02:00
SearchInstanceVM viewModel = new ViewModelProvider(this).get(SearchInstanceVM.class);
2020-09-07 18:57:06 +02:00
viewModel.getInstances().observe(this, result -> {
2020-02-29 11:07:38 +01:00
if (result == null) {
2020-08-31 19:00:17 +02:00
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, R.string.error_message_internet, Snackbar.LENGTH_LONG).setAction(R.string.close, v -> finish()).show();
2020-02-29 10:21:35 +01:00
return;
}
2020-09-22 18:33:23 +02:00
SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.APP_PREFS, Context.MODE_PRIVATE);
String invidiousHost = sharedpreferences.getString(MainActivity.SET_INVIDIOUS_HOST, MainActivity.DEFAULT_INVIDIOUS_HOST);
String nitterHost = sharedpreferences.getString(MainActivity.SET_NITTER_HOST, MainActivity.DEFAULT_NITTER_HOST);
String bibliogramHost = sharedpreferences.getString(MainActivity.SET_BIBLIOGRAM_HOST, MainActivity.DEFAULT_BIBLIOGRAM_HOST);
2020-12-01 13:35:01 +01:00
String tedditHost = sharedpreferences.getString(MainActivity.SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
String scribeHost = sharedpreferences.getString(MainActivity.SET_SCRIBERIP_HOST, MainActivity.DEFAULT_SCRIBERIP_HOST);
String wikilessHost = sharedpreferences.getString(MainActivity.SET_WIKILESS_HOST, MainActivity.DEFAULT_WIKILESS_HOST);
2022-05-17 07:43:13 +02:00
String proxitokHost = sharedpreferences.getString(MainActivity.SET_PROXITOK_HOST, MainActivity.DEFAULT_PROXITOK_HOST);
2020-09-22 18:33:23 +02:00
2020-08-31 19:00:17 +02:00
ArrayList<Instance> invidiousInstances = new ArrayList<>();
ArrayList<Instance> nitterInstances = new ArrayList<>();
ArrayList<Instance> bibliogramInstances = new ArrayList<>();
2020-12-01 13:35:01 +01:00
ArrayList<Instance> tedditInstances = new ArrayList<>();
ArrayList<Instance> scribeInstances = new ArrayList<>();
ArrayList<Instance> wikilessInstances = new ArrayList<>();
2022-05-17 07:43:13 +02:00
ArrayList<Instance> proxitokInstances = new ArrayList<>();
2020-09-22 18:33:23 +02:00
boolean customInvidiousInstance = true;
boolean customNitterInstance = true;
boolean customBibliogramInstance = true;
2020-12-01 13:35:01 +01:00
boolean customTedditInstance = true;
boolean customScribeInstance = true;
boolean customWikilessInstance = true;
2022-05-17 07:43:13 +02:00
boolean customProxitokInstance = true;
2020-09-06 18:55:06 +02:00
for (Instance instance : result) {
if (instance.getInstanceType() == Instance.instanceType.YOUTUBE) {
2020-02-20 11:20:30 +01:00
invidiousInstances.add(instance);
2020-11-29 17:22:25 +01:00
if (invidiousHost != null && invidiousHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
2020-09-22 18:33:23 +02:00
customInvidiousInstance = false;
}
} else if (instance.getInstanceType() == Instance.instanceType.TWITTER) {
2020-02-20 11:20:30 +01:00
nitterInstances.add(instance);
2020-11-29 17:22:25 +01:00
if (nitterHost != null && nitterHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
2020-09-22 18:33:23 +02:00
customNitterInstance = false;
}
} else if (instance.getInstanceType() == Instance.instanceType.INSTAGRAM) {
2020-02-20 11:20:30 +01:00
bibliogramInstances.add(instance);
2020-11-29 17:22:25 +01:00
if (bibliogramHost != null && bibliogramHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
2020-09-22 18:33:23 +02:00
customBibliogramInstance = false;
}
} else if (instance.getInstanceType() == Instance.instanceType.REDDIT) {
2020-12-01 13:35:01 +01:00
tedditInstances.add(instance);
if (tedditHost != null && tedditHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
customTedditInstance = false;
}
} else if (instance.getInstanceType() == Instance.instanceType.MEDIUM) {
scribeInstances.add(instance);
if (scribeHost != null && scribeHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
customScribeInstance = false;
}
} else if (instance.getInstanceType() == Instance.instanceType.WIKIPEDIA) {
wikilessInstances.add(instance);
if (wikilessHost != null && wikilessHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
customWikilessInstance = false;
}
2022-05-17 07:43:13 +02:00
} else if (instance.getInstanceType() == Instance.instanceType.PROXITOK) {
proxitokInstances.add(instance);
if (proxitokHost != null && proxitokHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
customProxitokInstance = false;
}
2020-02-20 11:20:30 +01:00
}
}
List<String> defaultLocales = new ArrayList<>();
defaultLocales.add("--");
2020-09-22 18:33:23 +02:00
//Check if custom instances are also added
2020-11-29 17:22:25 +01:00
if (customInvidiousInstance) {
2020-09-22 18:33:23 +02:00
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(invidiousHost);
instance.setLocales(defaultLocales);
2020-09-22 18:33:23 +02:00
invidiousInstances.add(0, instance);
}
2020-11-29 17:22:25 +01:00
if (customNitterInstance) {
2020-09-22 18:33:23 +02:00
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(nitterHost);
instance.setLocales(defaultLocales);
2020-09-22 18:33:23 +02:00
nitterInstances.add(0, instance);
}
2020-11-29 17:22:25 +01:00
if (customBibliogramInstance) {
2020-09-22 18:33:23 +02:00
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(bibliogramHost);
instance.setLocales(defaultLocales);
2020-09-22 18:33:23 +02:00
bibliogramInstances.add(0, instance);
}
2020-12-01 13:35:01 +01:00
if (customTedditInstance) {
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(tedditHost);
instance.setLocales(defaultLocales);
2020-12-01 13:35:01 +01:00
tedditInstances.add(0, instance);
}
if (customScribeInstance) {
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(scribeHost);
instance.setLocales(defaultLocales);
scribeInstances.add(0, instance);
}
if (customWikilessInstance) {
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(wikilessHost);
instance.setLocales(defaultLocales);
wikilessInstances.add(0, instance);
}
2022-05-17 07:43:13 +02:00
if (customProxitokInstance) {
Instance instance = new Instance();
instance.setChecked(true);
instance.setDomain(proxitokHost);
instance.setLocales(defaultLocales);
proxitokInstances.add(0, instance);
}
2020-12-01 11:40:20 +01:00
binding.instanceContainer.setVisibility(View.VISIBLE);
binding.loader.setVisibility(View.GONE);
2020-09-22 18:33:23 +02:00
2020-08-31 19:00:17 +02:00
final LinearLayoutManager iLayoutManager = new LinearLayoutManager(this);
InstanceAdapter invidiousAdapter = new InstanceAdapter(invidiousInstances);
2020-12-01 10:29:24 +01:00
binding.invidiousInstances.setAdapter(invidiousAdapter);
binding.invidiousInstances.setLayoutManager(iLayoutManager);
binding.invidiousInstances.setNestedScrollingEnabled(false);
2020-08-31 19:00:17 +02:00
final LinearLayoutManager nLayoutManager = new LinearLayoutManager(this);
InstanceAdapter nitterAdapter = new InstanceAdapter(nitterInstances);
2020-12-01 10:29:24 +01:00
binding.nitterInstances.setAdapter(nitterAdapter);
binding.nitterInstances.setLayoutManager(nLayoutManager);
binding.nitterInstances.setNestedScrollingEnabled(false);
2020-08-31 19:00:17 +02:00
final LinearLayoutManager bLayoutManager = new LinearLayoutManager(this);
InstanceAdapter bibliogramAdapter = new InstanceAdapter(bibliogramInstances);
2020-12-01 10:29:24 +01:00
binding.bibliogramInstances.setAdapter(bibliogramAdapter);
binding.bibliogramInstances.setLayoutManager(bLayoutManager);
binding.bibliogramInstances.setNestedScrollingEnabled(false);
2020-12-01 13:35:01 +01:00
final LinearLayoutManager tLayoutManager = new LinearLayoutManager(this);
InstanceAdapter tedditAdapter = new InstanceAdapter(tedditInstances);
binding.tedditInstances.setAdapter(tedditAdapter);
binding.tedditInstances.setLayoutManager(tLayoutManager);
binding.tedditInstances.setNestedScrollingEnabled(false);
final LinearLayoutManager sLayoutManager = new LinearLayoutManager(this);
InstanceAdapter scribeAdapter = new InstanceAdapter(scribeInstances);
binding.scribeInstances.setAdapter(scribeAdapter);
binding.scribeInstances.setLayoutManager(sLayoutManager);
binding.scribeInstances.setNestedScrollingEnabled(false);
final LinearLayoutManager wLayoutManager = new LinearLayoutManager(this);
InstanceAdapter wikilessAdapter = new InstanceAdapter(wikilessInstances);
binding.wikilessInstances.setAdapter(wikilessAdapter);
binding.wikilessInstances.setLayoutManager(wLayoutManager);
binding.wikilessInstances.setNestedScrollingEnabled(false);
2022-05-17 07:43:13 +02:00
final LinearLayoutManager pLayoutManager = new LinearLayoutManager(this);
InstanceAdapter proxitokAdapter = new InstanceAdapter(proxitokInstances);
binding.proxitokInstances.setAdapter(proxitokAdapter);
binding.proxitokInstances.setLayoutManager(pLayoutManager);
binding.proxitokInstances.setNestedScrollingEnabled(false);
2020-12-01 10:29:24 +01:00
binding.latencyTest.setOnClickListener(v -> {
2020-08-31 19:00:17 +02:00
invidiousAdapter.evalLatency();
nitterAdapter.evalLatency();
bibliogramAdapter.evalLatency();
tedditAdapter.evalLatency();
2022-05-17 07:43:13 +02:00
scribeAdapter.evalLatency();
wikilessAdapter.evalLatency();
proxitokAdapter.evalLatency();
2020-08-31 19:00:17 +02:00
}
);
2020-12-01 11:40:20 +01:00
2020-12-01 10:29:24 +01:00
binding.instanceInfo.setOnClickListener(v -> {
2020-08-31 19:00:17 +02:00
AlertDialog.Builder instanceInfo = new AlertDialog.Builder(this);
instanceInfo.setTitle(R.string.about_instances_title);
View view = getLayoutInflater().inflate(R.layout.popup_instance_info, new LinearLayout(getApplicationContext()), false);
instanceInfo.setView(view);
TextView infoInstancesTextview = view.findViewById(R.id.info_instances);
infoInstancesTextview.setText(getString(R.string.about_instances, list_for_instances, list_for_instances));
instanceInfo.setPositiveButton(R.string.close, (dialog, id) -> dialog.dismiss());
AlertDialog alertDialog = instanceInfo.create();
alertDialog.show();
});
2020-02-20 11:20:30 +01:00
2020-12-01 10:29:24 +01:00
binding.close.setOnClickListener(v -> finish());
2020-02-20 11:20:30 +01:00
2020-08-31 19:00:17 +02:00
});
2020-02-20 11:20:30 +01:00
}
}