mirror of
https://framagit.org/tom79/nitterizeme
synced 2025-02-14 02:30:46 +01:00
Support teddit
This commit is contained in:
parent
0b2fea479f
commit
39b183d2dc
@ -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'
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user