add more info for instances

This commit is contained in:
Thomas 2020-02-29 14:26:09 +01:00
parent 7e5dfec65c
commit 39a2cdf090
6 changed files with 85 additions and 13 deletions

View File

@ -20,6 +20,8 @@ class Instance {
private long latency = -1;
private boolean checked = false;
private instanceType type;
private boolean cloudflare =false;
private String locale;
String getDomain() {
return domain;
@ -53,6 +55,22 @@ class Instance {
this.type = type;
}
public boolean isCloudflare() {
return cloudflare;
}
public void setCloudflare(boolean cloudflare) {
this.cloudflare = cloudflare;
}
public String getLocale() {
return locale;
}
public void setLocale(String locale) {
this.locale = locale;
}
enum instanceType {
INVIDIOUS,
NITTER,

View File

@ -73,7 +73,7 @@ public class InstanceActivity extends AppCompatActivity {
protected String doInBackground(Void... voids) {
HttpsURLConnection httpsURLConnection;
try {
String instances_url = "https://fedilab.app/nitterizeme_instances/payload.json";
String instances_url = "https://fedilab.app/nitterizeme_instances/payload_2.json";
URL url = new URL(instances_url);
httpsURLConnection = (HttpsURLConnection) url.openConnection();
httpsURLConnection.setConnectTimeout(10 * 1000);
@ -125,8 +125,13 @@ public class InstanceActivity extends AppCompatActivity {
List<Instance> invidiousInstances = new ArrayList<>();
for (int i = 0; i < jsonArrayInvidious.length(); i++) {
Instance instance = new Instance();
instance.setDomain(jsonArrayInvidious.getString(i));
if (instance.getDomain().compareTo(defaultInvidious) == 0) {
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);
if (domain.compareTo(defaultInvidious) == 0) {
instance.setChecked(true);
}
instance.setType(Instance.instanceType.INVIDIOUS);
@ -135,8 +140,13 @@ public class InstanceActivity extends AppCompatActivity {
List<Instance> nitterInstances = new ArrayList<>();
for (int i = 0; i < jsonArrayNitter.length(); i++) {
Instance instance = new Instance();
instance.setDomain(jsonArrayNitter.getString(i));
if (instance.getDomain().compareTo(defaultNitter) == 0) {
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);
if (domain.compareTo(defaultNitter) == 0) {
instance.setChecked(true);
}
instance.setType(Instance.instanceType.NITTER);
@ -145,8 +155,13 @@ public class InstanceActivity extends AppCompatActivity {
List<Instance> bibliogramInstances = new ArrayList<>();
for (int i = 0; i < jsonArrayBibliogram.length(); i++) {
Instance instance = new Instance();
instance.setDomain(jsonArrayBibliogram.getString(i));
if (instance.getDomain().compareTo(defaultBibliogram) == 0) {
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);
if (domain.compareTo(defaultBibliogram) == 0) {
instance.setChecked(true);
}
instance.setType(Instance.instanceType.BIBLIOGRAM);

View File

@ -21,6 +21,7 @@ import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.TextView;
@ -88,6 +89,12 @@ public class InstanceAdapter extends RecyclerView.Adapter {
holder.progress.setVisibility(View.GONE);
}
holder.locale.setText(instance.getLocale());
if( instance.isCloudflare()){
holder.useCloudflare.setVisibility(View.VISIBLE);
}else{
holder.useCloudflare.setVisibility(View.GONE);
}
holder.checkbox_instance.setChecked(instance.isChecked());
@ -164,14 +171,17 @@ public class InstanceAdapter extends RecyclerView.Adapter {
class ViewHolder extends RecyclerView.ViewHolder {
RadioButton checkbox_instance;
TextView latency;
TextView latency, locale;
ProgressBar progress;
ImageView useCloudflare;
ViewHolder(@NonNull View itemView) {
super(itemView);
checkbox_instance = itemView.findViewById(R.id.checkbox_instance);
latency = itemView.findViewById(R.id.latency);
progress = itemView.findViewById(R.id.progress);
locale = itemView.findViewById(R.id.locale);
useCloudflare = itemView.findViewById(R.id.use_cloudflare);
}
}

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="256dp"
android:height="116dp"
android:viewportWidth="256"
android:viewportHeight="116">
<path
android:pathData="M202.357,49.394L197.046,47.27C172.085,103.434 72.786,69.289 66.811,85.997C65.815,97.283 121.038,88.143 160.517,90.056C172.556,90.639 178.593,99.727 173.481,114.54L183.55,114.571C195.165,78.362 232.233,96.841 233.782,84.891C231.237,77.034 191.181,84.891 202.357,49.394Z"
android:fillColor="#FFFFFF"/>
<path
android:pathData="M176.332,108.348C177.925,103.037 177.394,97.726 174.739,94.539C172.083,91.352 168.365,89.228 163.585,88.697L71.17,87.634C70.639,87.634 70.108,87.103 69.577,87.103C69.046,86.572 69.046,86.041 69.577,85.51C70.108,84.448 70.639,83.916 71.701,83.916L164.647,82.854C175.801,82.323 187.486,73.294 191.734,62.672L197.046,48.863C197.046,48.331 197.577,47.8 197.046,47.269C191.203,20.182 166.772,-0.001 138.091,-0.001C111.535,-0.001 88.697,16.995 80.73,40.896C75.419,37.178 69.046,35.053 61.61,35.585C48.863,36.647 38.772,47.269 37.178,60.016C36.647,63.203 37.178,66.39 37.71,69.576C16.996,70.107 0,87.103 0,108.348C0,110.472 0,112.066 0.531,114.19C0.531,115.253 1.593,115.784 2.125,115.784L172.614,115.784C173.676,115.784 174.739,115.253 174.739,114.19L176.332,108.348Z"
android:fillColor="#F4811F"/>
<path
android:pathData="M205.544,48.863L202.888,48.863C202.357,48.863 201.826,49.394 201.295,49.925L197.577,62.672C195.984,67.983 196.515,73.295 199.171,76.481C201.826,79.668 205.544,81.792 210.324,82.324L229.976,83.386C230.507,83.386 231.038,83.917 231.569,83.917C232.1,84.448 232.1,84.979 231.569,85.51C231.038,86.573 230.507,87.104 229.444,87.104L209.262,88.166C198.108,88.697 186.424,97.726 182.175,108.348L181.112,113.129C180.581,113.66 181.112,114.722 182.175,114.722L252.283,114.722C253.345,114.722 253.876,114.191 253.876,113.129C254.938,108.88 256,104.1 256,99.319C256,71.701 233.162,48.863 205.544,48.863"
android:fillColor="#FAAD3F"/>
</vector>

View File

@ -8,17 +8,30 @@
<RadioButton
android:id="@+id/checkbox_instance"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true" />
<ImageView
android:layout_gravity="center"
android:layout_marginStart="3dp"
android:layout_marginLeft="3dp"
android:id="@+id/use_cloudflare"
android:layout_width="30dp"
android:src="@drawable/ic_cloudflare"
android:layout_height="20dp"
android:contentDescription="@string/cloudflare" />
<TextView
android:layout_marginStart="3dp"
android:layout_marginLeft="3dp"
android:layout_width="20dp"
android:layout_height="wrap_content"
android:id="@+id/locale"/>
<TextView
android:id="@+id/latency"
android:layout_width="80dp"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:gravity="end" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="20dp"

View File

@ -47,4 +47,5 @@
<string name="error_message_internet">Check your Internet connection</string>
<string name="instance_label">Instance:</string>
<string name="expand_instance_details">Expand instance details</string>
<string name="cloudflare">This instance uses Cloudflare</string>
</resources>