Support teddit

This commit is contained in:
Thomas 2020-11-30 18:59:29 +01:00
parent c150b02dc2
commit 0a61f26d1e
7 changed files with 334 additions and 16 deletions

View File

@ -80,6 +80,13 @@
<data android:host="youtube-nocookie.com" />
<!-- REDDIT URLs -->
<data android:host="www.reddit.com" />
<data android:host="reddit.com" />
<data android:host="i.reddit.com" />
<data android:host="i.redd.it" />
<data android:host="preview.redd.it" />
<!-- INVIDIOUS INSTANCES -->
<data android:host="invidious.snopyta.org" />
<data android:host="invidiou.sh" />
@ -150,6 +157,13 @@
<data android:host="youtube-nocookie.com" />
<!-- REDDIT URLs -->
<data android:host="www.reddit.com" />
<data android:host="reddit.com" />
<data android:host="i.reddit.com" />
<data android:host="i.redd.it" />
<data android:host="preview.redd.it" />
<data android:host="*" />
<data android:mimeType="text/plain" />

View File

@ -75,6 +75,13 @@
<data android:host="youtube-nocookie.com" />
<!-- REDDIT URLs -->
<data android:host="www.reddit.com" />
<data android:host="reddit.com" />
<data android:host="i.reddit.com" />
<data android:host="i.redd.it" />
<data android:host="preview.redd.it" />
<data android:pathPattern=".*" />
<data android:scheme="https" />
<data android:scheme="http" />
@ -118,6 +125,13 @@
<data android:host="youtube-nocookie.com" />
<!-- REDDIT URLs -->
<data android:host="www.reddit.com" />
<data android:host="reddit.com" />
<data android:host="i.reddit.com" />
<data android:host="i.redd.it" />
<data android:host="preview.redd.it" />
<data android:mimeType="text/plain" />
</intent-filter>

View File

@ -29,6 +29,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
import app.fedilab.nitterizeme.BuildConfig;
@ -60,6 +61,15 @@ public class CheckAppActivity extends AppCompatActivity {
"youtu.be",
"youtube-nocookie.com"
};
public static String[] reddit_domains = {
"www.reddit.com",
"reddit.com",
"i.reddit.com",
"i.redd.it",
"preview.redd.it"
};
public static String[] shortener_domains = {
"t.co",
"nyti.ms",
@ -132,6 +142,10 @@ public class CheckAppActivity extends AppCompatActivity {
domains[i] = host;
i++;
}
for (String host : reddit_domains) {
domains[i] = host;
i++;
}
for (String host : instagram_domains) {
domains[i] = host;
i++;
@ -209,33 +223,36 @@ public class CheckAppActivity extends AppCompatActivity {
private ArrayList<AppInfo> getAppInfo() {
ArrayList<AppInfo> appInfos = new ArrayList<>();
int j = 0;
for (String domain : domains) {
if (j == 0) {
if (Arrays.asList(twitter_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle("Twitter");
appInfos.add(appInfo);
} else if (j == twitter_domains.length) {
} else if (Arrays.asList(youtube_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle("YouTube");
appInfos.add(appInfo);
} else if (j == twitter_domains.length + youtube_domains.length) {
} else if (Arrays.asList(instagram_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle("Instagram");
appInfos.add(appInfo);
} else if (j == twitter_domains.length + youtube_domains.length + instagram_domains.length) {
} else if (Arrays.asList(reddit_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle("Reddit");
appInfos.add(appInfo);
} else if (Arrays.asList(shortener_domains).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.shortener_services));
appInfos.add(appInfo);
} else if (j == twitter_domains.length + youtube_domains.length + instagram_domains.length + shortener_domains.length) {
} else if (Arrays.asList(invidious_instances).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.invidious_instances));
appInfos.add(appInfo);
} else if (j == twitter_domains.length + youtube_domains.length + instagram_domains.length + shortener_domains.length + invidious_instances.length) {
} else if (Arrays.asList(nitter_instances).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.nitter_instances));
appInfos.add(appInfo);
} else if (j == twitter_domains.length + youtube_domains.length + instagram_domains.length + shortener_domains.length + invidious_instances.length + nitter_instances.length) {
} else if (Arrays.asList(bibliogram_instances).contains(domain)) {
AppInfo appInfo = new AppInfo();
appInfo.setTitle(getString(R.string.bibliogram_instances));
appInfos.add(appInfo);
@ -244,7 +261,6 @@ public class CheckAppActivity extends AppCompatActivity {
appInfo.setDomain(domain);
appInfo.setApplicationInfo(getDefaultApp("https://" + domain + "/"));
appInfos.add(appInfo);
j++;
}
return appInfos;
}

View File

@ -54,6 +54,7 @@ public class MainActivity extends AppCompatActivity {
public static final String APP_PREFS = "app_prefs";
public static final String SET_NITTER_HOST = "set_nitter_host";
public static final String SET_INVIDIOUS_HOST = "set_invidious_host";
public static final String SET_TEDDIT_HOST = "set_teddit_host";
public static final String SET_OSM_HOST = "set_osm_host";
public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host";
@SuppressWarnings({"unused", "RedundantSuppression"})
@ -61,11 +62,13 @@ public class MainActivity extends AppCompatActivity {
public static String DEFAULT_NITTER_HOST = "nitter.net";
public static String DEFAULT_INVIDIOUS_HOST = "invidious.snopyta.org";
public static String SET_INVIDIOUS_ENABLED = "set_invidious_enabled";
public static String SET_TEDDIT_ENABLED = "set_teddit_enabled";
public static String SET_NITTER_ENABLED = "set_nitter_enabled";
public static String SET_OSM_ENABLED = "set_osm_enabled";
public static String DEFAULT_OSM_HOST = "www.openstreetmap.org";
public static String SET_BIBLIOGRAM_ENABLED = "set_bibliogram_enabled";
public static String DEFAULT_BIBLIOGRAM_HOST = "bibliogram.art";
public static String DEFAULT_TEDDIT_HOST = "teddit.net";
public static String SET_GEO_URIS = "set_geo_uris";
public static String SET_EMBEDDED_PLAYER = "set_embedded_player";
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@ -82,6 +85,7 @@ public class MainActivity extends AppCompatActivity {
private String nitterHost;
private String invidiousHost;
private String bibliogramHost;
private String tedditHost;
private String osmHost;
@Override
@ -98,36 +102,42 @@ public class MainActivity extends AppCompatActivity {
TextView current_instance_nitter = findViewById(R.id.current_instance_nitter);
TextView current_instance_invidious = findViewById(R.id.current_instance_invidious);
TextView current_instance_bibliogram = findViewById(R.id.current_instance_bibliogram);
TextView current_instance_teddit = findViewById(R.id.current_instance_teddit);
TextView current_instance_osm = findViewById(R.id.current_instance_osm);
TextInputEditText nitter_instance = findViewById(R.id.nitter_instance);
TextInputEditText invidious_instance = findViewById(R.id.invidious_instance);
TextInputEditText bibliogram_instance = findViewById(R.id.bibliogram_instance);
TextInputEditText teddit_instance = findViewById(R.id.teddit_instance);
TextInputEditText osm_instance = findViewById(R.id.osm_instance);
Group invidious_current_group = findViewById(R.id.group_current_invidious);
Group nitter_current_group = findViewById(R.id.group_current_nitter);
Group bibliogram_current_group = findViewById(R.id.group_current_bibliogram);
Group teddit_current_group = findViewById(R.id.group_current_teddit);
Group osm_current_group = findViewById(R.id.group_current_osm);
Group invidious_custom_group = findViewById(R.id.group_custom_invidious);
Group nitter_custom_group = findViewById(R.id.group_custom_nitter);
Group bibliogram_custom_group = findViewById(R.id.group_custom_bibliogram);
Group teddit_custom_group = findViewById(R.id.group_custom_teddit);
Group osm_custom_group = findViewById(R.id.group_custom_osm);
SwitchCompat enable_nitter = findViewById(R.id.enable_nitter);
SwitchCompat enable_invidious = findViewById(R.id.enable_invidious);
SwitchCompat enable_bibliogram = findViewById(R.id.enable_bibliogram);
SwitchCompat enable_teddit = findViewById(R.id.enable_teddit);
SwitchCompat enable_osm = findViewById(R.id.enable_osm);
ImageButton expand_instance_nitter = findViewById(R.id.button_expand_instance_nitter);
ImageButton expand_instance_invidious = findViewById(R.id.button_expand_instance_invidious);
ImageButton expand_instance_bibliogram = findViewById(R.id.button_expand_instance_bibliogram);
ImageButton expand_instance_teddit = findViewById(R.id.button_expand_instance_teddit);
ImageButton expand_instance_osm = findViewById(R.id.button_expand_instance_osm);
@ -135,16 +145,19 @@ public class MainActivity extends AppCompatActivity {
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
boolean osm_enabled = sharedpreferences.getBoolean(SET_OSM_ENABLED, true);
boolean bibliogram_enabled = sharedpreferences.getBoolean(SET_BIBLIOGRAM_ENABLED, true);
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
boolean geouri_enabled = sharedpreferences.getBoolean(SET_GEO_URIS, false);
boolean embedded_player = sharedpreferences.getBoolean(SET_EMBEDDED_PLAYER, false);
enable_nitter.setChecked(nitter_enabled);
enable_invidious.setChecked(invidious_enabled);
enable_bibliogram.setChecked(bibliogram_enabled);
enable_teddit.setChecked(teddit_enabled);
enable_osm.setChecked(osm_enabled);
ImageButton save_instance_nitter = findViewById(R.id.button_save_instance_nitter);
ImageButton save_instance_invidious = findViewById(R.id.button_save_instance_invidious);
ImageButton save_instance_bibliogram = findViewById(R.id.button_save_instance_bibliogram);
ImageButton save_instance_teddit = findViewById(R.id.button_save_instance_teddit);
ImageButton save_instance_osm = findViewById(R.id.button_save_instance_osm);
CheckBox enable_geo_uris = findViewById(R.id.enable_geo_uris);
@ -154,11 +167,13 @@ public class MainActivity extends AppCompatActivity {
nitterHost = sharedpreferences.getString(SET_NITTER_HOST, null);
invidiousHost = sharedpreferences.getString(SET_INVIDIOUS_HOST, null);
bibliogramHost = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, null);
tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
osmHost = sharedpreferences.getString(SET_OSM_HOST, null);
invidious_current_group.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
nitter_current_group.setVisibility(nitter_enabled ? View.VISIBLE : View.GONE);
bibliogram_current_group.setVisibility(bibliogram_enabled ? View.VISIBLE : View.GONE);
teddit_current_group.setVisibility(bibliogram_enabled ? View.VISIBLE : View.GONE);
osm_current_group.setVisibility((osm_enabled && geouri_enabled) ? View.VISIBLE : View.GONE);
enable_geo_uris.setVisibility(osm_enabled ? View.VISIBLE : View.GONE);
enable_embed_player.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
@ -188,6 +203,14 @@ public class MainActivity extends AppCompatActivity {
bibliogram_custom_group.setVisibility(View.GONE);
expand_instance_bibliogram.setRotation(0);
});
enable_teddit.setOnCheckedChangeListener((buttonView, isChecked) -> {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(SET_TEDDIT_ENABLED, isChecked);
editor.apply();
teddit_current_group.setVisibility(isChecked ? View.VISIBLE : View.GONE);
teddit_custom_group.setVisibility(View.GONE);
expand_instance_teddit.setRotation(0);
});
enable_osm.setOnCheckedChangeListener((buttonView, isChecked) -> {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(SET_OSM_ENABLED, isChecked);
@ -257,6 +280,22 @@ public class MainActivity extends AppCompatActivity {
bibliogram_instance.setText("");
}
});
expand_instance_teddit.setOnClickListener(v -> {
boolean custom_instance_visibility = teddit_custom_group.getVisibility() == View.VISIBLE;
if (custom_instance_visibility) {
expand_instance_teddit.setRotation(0f);
teddit_custom_group.setVisibility(View.GONE);
} else {
expand_instance_teddit.setRotation(180f);
teddit_custom_group.setVisibility(View.VISIBLE);
}
if (tedditHost != null) {
teddit_instance.setText(tedditHost);
} else {
teddit_instance.setText("");
}
});
expand_instance_osm.setOnClickListener(v -> {
boolean custom_instance_visibility = osm_custom_group.getVisibility() == View.VISIBLE;
if (custom_instance_visibility) {
@ -293,6 +332,12 @@ public class MainActivity extends AppCompatActivity {
} else {
current_instance_bibliogram.setText(DEFAULT_BIBLIOGRAM_HOST);
}
if (tedditHost != null) {
teddit_instance.setText(tedditHost);
current_instance_teddit.setText(tedditHost);
} else {
current_instance_teddit.setText(DEFAULT_TEDDIT_HOST);
}
if (osmHost != null) {
osm_instance.setText(osmHost);
current_instance_osm.setText(osmHost);
@ -346,6 +391,18 @@ public class MainActivity extends AppCompatActivity {
}
editor.apply();
});
save_instance_teddit.setOnClickListener(v -> {
SharedPreferences.Editor editor = sharedpreferences.edit();
if (teddit_instance.getText() != null && teddit_instance.getText().toString().trim().length() > 0) {
String custom_instance = teddit_instance.getText().toString().toLowerCase().trim();
editor.putString(SET_TEDDIT_HOST, custom_instance);
current_instance_teddit.setText(custom_instance);
} else {
editor.putString(SET_TEDDIT_HOST, null);
current_instance_teddit.setText(DEFAULT_TEDDIT_HOST);
}
editor.apply();
});
save_instance_osm.setOnClickListener(v -> {
SharedPreferences.Editor editor = sharedpreferences.edit();
if (osm_instance.getText() != null && osm_instance.getText().toString().trim().length() > 0) {
@ -430,6 +487,15 @@ public class MainActivity extends AppCompatActivity {
current_instance_bibliogram.setText(DEFAULT_BIBLIOGRAM_HOST);
expand_instance_bibliogram.setRotation(0f);
break;
case SET_TEDDIT_HOST:
tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
teddit_custom_group.setVisibility(View.GONE);
if (tedditHost != null && tedditHost.trim().length() > 0)
current_instance_teddit.setText(tedditHost);
else
current_instance_teddit.setText(DEFAULT_TEDDIT_HOST);
expand_instance_teddit.setRotation(0f);
break;
case SET_OSM_HOST:
osmHost = sharedpreferences.getString(SET_OSM_HOST, null);
osm_custom_group.setVisibility(View.GONE);
@ -441,7 +507,7 @@ public class MainActivity extends AppCompatActivity {
break;
}
if (key.equals(SET_NITTER_HOST) || key.equals(SET_INVIDIOUS_HOST) || key.equals(SET_BIBLIOGRAM_HOST) || key.equals(SET_OSM_HOST)) {
if (key.equals(SET_NITTER_HOST) || key.equals(SET_INVIDIOUS_HOST) || key.equals(SET_BIBLIOGRAM_HOST) || key.equals(SET_TEDDIT_HOST) || key.equals(SET_OSM_HOST)) {
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, R.string.instances_saved, Snackbar.LENGTH_LONG).show();
}
@ -501,15 +567,18 @@ public class MainActivity extends AppCompatActivity {
TextInputEditText nitter_instance = findViewById(R.id.nitter_instance);
TextInputEditText invidious_instance = findViewById(R.id.invidious_instance);
TextInputEditText bibliogram_instance = findViewById(R.id.bibliogram_instance);
TextInputEditText teddit_instance = findViewById(R.id.teddit_instance);
TextView current_instance_nitter = findViewById(R.id.current_instance_nitter);
TextView current_instance_invidious = findViewById(R.id.current_instance_invidious);
TextView current_instance_bibliogram = findViewById(R.id.current_instance_bibliogram);
TextView current_instance_teddit = findViewById(R.id.current_instance_teddit);
SharedPreferences sharedpreferences = getSharedPreferences(APP_PREFS, Context.MODE_PRIVATE);
String nitterHost = sharedpreferences.getString(SET_NITTER_HOST, null);
String invidiousHost = sharedpreferences.getString(SET_INVIDIOUS_HOST, null);
String bibliogramHost = sharedpreferences.getString(SET_BIBLIOGRAM_HOST, null);
String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
if (nitterHost != null) {
nitter_instance.setText(nitterHost);
current_instance_nitter.setText(nitterHost);
@ -522,6 +591,10 @@ public class MainActivity extends AppCompatActivity {
bibliogram_instance.setText(bibliogramHost);
current_instance_bibliogram.setText(bibliogramHost);
}
if (tedditHost != null) {
teddit_instance.setText(tedditHost);
current_instance_teddit.setText(tedditHost);
}
ConstraintLayout display_indications = findViewById(R.id.display_indications);
if (BuildConfig.fullLinks) {
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse("https://fedilab.app")), PackageManager.MATCH_DEFAULT_ONLY);

View File

@ -76,6 +76,7 @@ import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_doma
import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.nitter_instances;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.outlook_safe_domain;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.reddit_domains;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.shortener_domains;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.twitter_domains;
import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains;
@ -83,6 +84,7 @@ import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENA
import static app.fedilab.nitterizeme.activities.MainActivity.SET_EMBEDDED_PLAYER;
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;
public class Utils {
@ -91,6 +93,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 nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)");
public static final Pattern bibliogramPostPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(/p/[\\w-/]+)");
@ -100,7 +103,7 @@ public class Utils {
public static final String RECEIVE_STREAMING_URL = "receive_streaming_url";
public static final Pattern outlookRedirect = Pattern.compile("(.*)safelinks\\.protection\\.outlook\\.com/?[?]?((?!url).)*url=([^&]+)");
private static final Pattern extractPlace = Pattern.compile("/maps/place/(((?!/data).)*)");
private static final Pattern googleRedirect = Pattern.compile("https?://(www\\.)?google(\\.\\w{2,})?(\\.\\w{2,})/url\\?q=(.*)");
private static final Pattern googleRedirect = Pattern.compile("https?://(www\\.)?google(\\.\\w{2,})?(\\.\\w{2,})/url\\?(q=|q%3D)(.*)");
private static final String[] G_TRACKING = {
"sourceid",
"aqs",
@ -371,6 +374,30 @@ public class Utils {
} else {
return url;
}
} 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);
assert tedditHost != null;
tedditHost = tedditHost.toLowerCase();
if (tedditHost.startsWith("http")) {
scheme = "";
}
Matcher matcher = redditPattern.matcher(url);
while (matcher.find()) {
String redditPath = matcher.group(3);
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];
} else {
newUrl = scheme + tedditHost + "/" + redditPath;
}
}
return newUrl;
} else {
return url;
}
} else if (Arrays.asList(invidious_instances).contains(host)) {
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
newUrl = url;
@ -663,7 +690,11 @@ public class Utils {
try {
Matcher matcher = googleRedirect.matcher(url);
if (matcher.find()) {
url = matcher.group(4);
url = matcher.group(5);
}
matcher = googleRedirect.matcher(url);
if (matcher.find()) {
url = matcher.group(5);
}
URL redirectURL = new URL(url);
String host = redirectURL.getHost();
@ -883,7 +914,7 @@ public class Utils {
* @param extraText String text when sharing content
* @param scheme String scheme of the URL
*/
public static void manageShortenedShare(Context context, String url, String extraText, String scheme) {
public static void manageShortenedShare(Context context, String url, String extraText, final String scheme) {
ArrayList<String> notShortnedURLDialog = new ArrayList<>();
Thread thread = new Thread() {
@Override
@ -903,6 +934,7 @@ public class Utils {
boolean nitter_enabled = sharedpreferences.getBoolean(SET_NITTER_ENABLED, true);
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
if (nitter_enabled && Arrays.asList(twitter_domains).contains(host)) {
Matcher matcher = nitterPattern.matcher(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1));
String newUrlFinal = notShortnedURLDialog.get(notShortnedURLDialog.size() - 1);
@ -940,6 +972,28 @@ public class Utils {
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
sendIntent.setType("text/plain");
forwardToBrowser(context, sendIntent);
} else if (teddit_enabled && Arrays.asList(reddit_domains).contains(host)) {
Matcher matcher = redditPattern.matcher(url);
String newUrlFinal = notShortnedURLDialog.get(notShortnedURLDialog.size() - 1);
while (matcher.find()) {
String redditPath = matcher.group(3);
String tedditHost = sharedpreferences.getString(MainActivity.SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
assert tedditHost != null;
tedditHost = tedditHost.toLowerCase();
if (Objects.requireNonNull(matcher.group(2)).compareTo("preview.redd.it") == 0 ||
Objects.requireNonNull(matcher.group(2)).compareTo("i.redd.it") == 0
) {
newUrlFinal = scheme + tedditHost + "/pics/w:null_" + redditPath.split("\\?")[0];
} else {
newUrlFinal = scheme + tedditHost + "/" + redditPath;
}
}
String newExtraText = extraText.replaceAll(Pattern.quote(url), Matcher.quoteReplacement(newUrlFinal));
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
sendIntent.setType("text/plain");
forwardToBrowser(context, sendIntent);
} else if (osm_enabled && notShortnedURLDialog.get(notShortnedURLDialog.size() - 1).contains("/maps/place/")) {
String newUrlFinal = notShortnedURLDialog.get(notShortnedURLDialog.size() - 1);
Matcher matcher = maps.matcher(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1));
@ -1069,7 +1123,7 @@ public class Utils {
} catch (MalformedURLException e) {
e.printStackTrace();
}
return Arrays.asList(twitter_domains).contains(host) || Arrays.asList(nitter_instances).contains(host)
return Arrays.asList(twitter_domains).contains(host) || Arrays.asList(nitter_instances).contains(host) || Arrays.asList(reddit_domains).contains(host)
|| Arrays.asList(instagram_domains).contains(host) || Arrays.asList(bibliogram_instances).contains(host)
|| url.contains("/maps/place") || url.contains("/amp/s/") || (host != null && host.contains(outlook_safe_domain))
|| Arrays.asList(youtube_domains).contains(host) || Arrays.asList(invidious_instances).contains(host);
@ -1094,6 +1148,8 @@ public class Utils {
return sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
} else if (Arrays.asList(youtube_domains).contains(host) || Arrays.asList(invidious_instances).contains(host)) {
return sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
} else if (Arrays.asList(reddit_domains).contains(host)) {
return sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
} else
return url.contains("/amp/s/") || (host != null && host.contains(outlook_safe_domain));
}

View File

@ -348,7 +348,7 @@
style="@style/containerCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/osm_container"
app:layout_constraintBottom_toTopOf="@id/teddit_container"
app:layout_constraintTop_toBottomOf="@id/invidious_container">
<androidx.constraintlayout.widget.ConstraintLayout
@ -485,13 +485,155 @@
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/teddit_container"
style="@style/containerCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/osm_container"
app:layout_constraintTop_toBottomOf="@id/bibliogram_container">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guide_teddit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="40dp" />
<View
android:id="@+id/top_part_bg_teddit"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/topBar"
app:layout_constraintBottom_toBottomOf="@id/guide_teddit"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/teddit_indications"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:text="@string/redirect_reddit_to_teddit"
app:layout_constraintBottom_toBottomOf="@id/guide_teddit"
app:layout_constraintEnd_toStartOf="@id/enable_teddit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/enable_teddit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
app:layout_constraintBottom_toBottomOf="@id/guide_teddit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/button_expand_instance_teddit"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@null"
android:contentDescription="@string/expand_instance_details"
android:scaleType="fitCenter"
android:src="@drawable/ic_expand_more"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/guide_teddit" />
<TextView
android:id="@+id/label_instance_teddit"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="@dimen/label_instance_margin_start"
android:layout_marginLeft="@dimen/label_instance_margin_start"
android:gravity="center_vertical"
android:text="@string/instance_label"
app:layout_constraintStart_toEndOf="@id/button_expand_instance_teddit"
app:layout_constraintTop_toTopOf="@id/guide_teddit" />
<TextView
android:id="@+id/current_instance_teddit"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:textColor="#fff"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/label_instance_teddit"
app:layout_constraintTop_toTopOf="@id/guide_teddit" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_teddit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="label_instance_teddit,current_instance_teddit,button_expand_instance_teddit" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/teddit_instance_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/button_save_instance_teddit"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier_teddit">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/teddit_instance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/custom_teddit"
android:inputType="textUri"
android:maxLines="1"
android:textSize="@dimen/custom_instance_input_text_size" />
</com.google.android.material.textfield.TextInputLayout>
<ImageButton
android:id="@+id/button_save_instance_teddit"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_margin="5dp"
android:background="@null"
android:contentDescription="@string/save"
android:src="@drawable/ic_save"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/barrier_teddit" />
<androidx.constraintlayout.widget.Group
android:id="@+id/group_current_teddit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="label_instance_teddit,current_instance_teddit,button_expand_instance_teddit" />
<androidx.constraintlayout.widget.Group
android:id="@+id/group_custom_teddit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:constraint_referenced_ids="teddit_instance_container,button_save_instance_teddit" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/osm_container"
style="@style/containerCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/buttons_container"
app:layout_constraintTop_toBottomOf="@id/bibliogram_container">
app:layout_constraintTop_toBottomOf="@id/teddit_container">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@ -644,6 +786,7 @@
</androidx.cardview.widget.CardView>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/buttons_container"
style="@style/containerCard"

View File

@ -45,7 +45,9 @@
<string name="redirect_youtube_to_invidious">Redirect YouTube to Invidious</string>
<string name="redirect_twitter_to_nitter">Redirect Twitter to Nitter</string>
<string name="redirect_instagram_to_bibliogram">Redirect Instagram to Bibliogram</string>
<string name="redirect_reddit_to_teddit">Redirect Reddit to Teddit</string>
<string name="custom_bibliogram">Custom Bibliogram instance</string>
<string name="custom_teddit">Custom Teddit instance</string>
<string name="redirect_gm_to_geo_uri">Redirect Google Map to Geo URI</string>
<string name="configure">Configure</string>
<string name="display_supported_links">Display supported links</string>