1
0
mirror of https://framagit.org/tom79/nitterizeme synced 2025-02-14 02:30:46 +01:00

Support teddit

This commit is contained in:
Thomas 2020-12-01 11:40:20 +01:00
parent 0b2fea479f
commit 39b183d2dc
8 changed files with 38 additions and 47 deletions

View File

@ -55,7 +55,8 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
//Don't upgrade until there is a fix with barrier in recycler view
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.preference:preference:1.1.1'
implementation 'org.jsoup:jsoup:1.13.1'

View File

@ -25,7 +25,6 @@ import android.text.style.UnderlineSpan;
import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;

View File

@ -133,9 +133,9 @@ public class CheckAppActivity extends AppCompatActivity {
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
if (BuildConfig.fullLinks) {
domains = new String[twitter_domains.length + youtube_domains.length + shortener_domains.length + instagram_domains.length + invidious_instances.length + nitter_instances.length + bibliogram_instances.length];
domains = new String[twitter_domains.length + youtube_domains.length + reddit_domains.length + shortener_domains.length + instagram_domains.length + invidious_instances.length + nitter_instances.length + bibliogram_instances.length];
} else {
domains = new String[twitter_domains.length + youtube_domains.length + shortener_domains.length + instagram_domains.length];
domains = new String[twitter_domains.length + youtube_domains.length + reddit_domains.length + shortener_domains.length + instagram_domains.length];
}
int i = 0;
for (String host : twitter_domains) {

View File

@ -110,6 +110,9 @@ public class InstanceActivity extends AppCompatActivity {
instance.setLocale("--");
bibliogramInstances.add(0, instance);
}
binding.instanceContainer.setVisibility(View.VISIBLE);
binding.loader.setVisibility(View.GONE);
final LinearLayoutManager iLayoutManager = new LinearLayoutManager(this);
InstanceAdapter invidiousAdapter = new InstanceAdapter(invidiousInstances);
@ -136,6 +139,7 @@ public class InstanceActivity extends AppCompatActivity {
}
);
binding.instanceInfo.setOnClickListener(v -> {
AlertDialog.Builder instanceInfo = new AlertDialog.Builder(this);
instanceInfo.setTitle(R.string.about_instances_title);
@ -151,8 +155,6 @@ public class InstanceActivity extends AppCompatActivity {
binding.close.setOnClickListener(v -> finish());
binding.instanceContainer.setVisibility(View.VISIBLE);
binding.loader.setVisibility(View.GONE);
});
}

View File

@ -30,10 +30,8 @@ import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;
import java.util.List;
import java.util.Objects;

View File

@ -77,7 +77,7 @@ public class TransformActivity extends Activity {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(TransformActivity.this, url);
if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(TransformActivity.this, url)));
delegate.setData(Uri.parse(transformedURL));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (BuildConfig.fullLinks) {
forwardToBrowser(TransformActivity.this, delegate);

View File

@ -21,10 +21,6 @@ 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;
import android.widget.Toast;
import androidx.annotation.NonNull;
@ -34,6 +30,7 @@ import java.util.List;
import java.util.Locale;
import app.fedilab.nitterizeme.R;
import app.fedilab.nitterizeme.databinding.DrawerInstanceBinding;
import app.fedilab.nitterizeme.entities.Instance;
import app.fedilab.nitterizeme.helpers.Utils;
@ -62,9 +59,8 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int position) {
Context context = parent.getContext();
LayoutInflater layoutInflater = LayoutInflater.from(context);
return new ViewHolder(layoutInflater.inflate(R.layout.drawer_instance, parent, false));
DrawerInstanceBinding itemBinding = DrawerInstanceBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(itemBinding);
}
@Override
@ -77,34 +73,34 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
//Reset checked instances by type when tipping
holder.checkbox_instance.setText(instance.getDomain());
holder.binding.checkboxInstance.setText(instance.getDomain());
if (instance.getLatency() == -1) {
holder.latency.setVisibility(View.GONE);
holder.progress.setVisibility(View.GONE);
holder.binding.latency.setVisibility(View.GONE);
holder.binding.progress.setVisibility(View.GONE);
} else if (instance.getLatency() == 0) {
holder.latency.setVisibility(View.GONE);
holder.progress.setVisibility(View.VISIBLE);
holder.binding.latency.setVisibility(View.GONE);
holder.binding.progress.setVisibility(View.VISIBLE);
} else if (instance.getLatency() == -2) {
holder.latency.setText(R.string.error);
holder.latency.setVisibility(View.GONE);
holder.progress.setVisibility(View.VISIBLE);
holder.binding.latency.setText(R.string.error);
holder.binding.latency.setVisibility(View.GONE);
holder.binding.progress.setVisibility(View.VISIBLE);
} else {
holder.latency.setText(String.format(Locale.getDefault(), "%d ms", instance.getLatency()));
holder.latency.setVisibility(View.VISIBLE);
holder.progress.setVisibility(View.GONE);
holder.binding.latency.setText(String.format(Locale.getDefault(), "%d ms", instance.getLatency()));
holder.binding.latency.setVisibility(View.VISIBLE);
holder.binding.progress.setVisibility(View.GONE);
}
holder.locale.setText(instance.getLocale());
holder.binding.locale.setText(instance.getLocale());
if (instance.isCloudflare()) {
holder.useCloudflare.setVisibility(View.VISIBLE);
holder.useCloudflare.setOnClickListener(v -> Toast.makeText(context, R.string.cloudflare, Toast.LENGTH_SHORT).show());
holder.binding.useCloudflare.setVisibility(View.VISIBLE);
holder.binding.useCloudflare.setOnClickListener(v -> Toast.makeText(context, R.string.cloudflare, Toast.LENGTH_SHORT).show());
} else {
holder.useCloudflare.setVisibility(View.GONE);
holder.binding.useCloudflare.setVisibility(View.GONE);
}
holder.checkbox_instance.setChecked(instance.isChecked());
holder.binding.checkboxInstance.setChecked(instance.isChecked());
holder.checkbox_instance.setOnClickListener(v -> {
holder.binding.checkboxInstance.setOnClickListener(v -> {
boolean isChecked = !instance.isChecked();
for (Instance _ins : instances) {
@ -138,6 +134,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
editor.apply();
break;
}
instanceAdapter.notifyItemRangeChanged(0, instances.size());
});
@ -176,18 +173,11 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
static class ViewHolder extends RecyclerView.ViewHolder {
RadioButton checkbox_instance;
TextView latency, locale;
ProgressBar progress;
ImageView useCloudflare;
DrawerInstanceBinding binding;
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);
ViewHolder(@NonNull DrawerInstanceBinding itemView) {
super(itemView.getRoot());
binding = itemView;
}
}

View File

@ -85,6 +85,7 @@ import static app.fedilab.nitterizeme.activities.MainActivity.SET_EMBEDDED_PLAYE
import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_ENABLED;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_ENABLED;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED;
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
public class Utils {
@ -93,7 +94,7 @@ public class Utils {
public static final String INTENT_ACTION = "intent_action";
public static final String LAST_USED_APP_PACKAGE = "last_used_app_package";
public static final Pattern youtubePattern = Pattern.compile("(www\\.|m\\.)?(youtube\\.com|youtu\\.be|youtube-nocookie\\.com)/(((?!([\"'<])).)*)");
public static final Pattern redditPattern = Pattern.compile("(www\\.|m\\.)?(reddit\\.com|preview\\.redd\\.it)/(((?!([\"'<])).)*)");
public static final Pattern redditPattern = Pattern.compile("(www\\.|m\\.)?(reddit\\.com|preview\\.redd\\.it|i\\.redd\\.it)/(((?!([\"'<])).)*)");
public static final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)");
public static final Pattern bibliogramPostPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(/p/[\\w-/]+)");
@ -377,7 +378,7 @@ public class Utils {
} else if (Arrays.asList(reddit_domains).contains(host)) { //Reddit URL
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
if (teddit_enabled) {
String tedditHost = sharedpreferences.getString(SET_TEDDIT_ENABLED, MainActivity.DEFAULT_TEDDIT_HOST);
String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
assert tedditHost != null;
tedditHost = tedditHost.toLowerCase();
if (tedditHost.startsWith("http")) {
@ -389,7 +390,7 @@ public class Utils {
if (Objects.requireNonNull(matcher.group(2)).compareTo("preview.redd.it") == 0 ||
Objects.requireNonNull(matcher.group(2)).compareTo("i.redd.it") == 0
) {
newUrl = scheme + tedditHost + "/pics/w:null_" + redditPath.split("\\?")[0];
newUrl = scheme + tedditHost + "/pics/w:null_" + (redditPath != null ? redditPath.split("\\?|%26")[0] : "null");
} else {
newUrl = scheme + tedditHost + "/" + redditPath;
}