diff --git a/app/src/androidTest/java/app/fedilab/nitterizeme/ExampleInstrumentedTest.java b/app/src/androidTest/java/app/fedilab/nitterizeme/ExampleInstrumentedTest.java
index 93c3af2..7afb1f9 100644
--- a/app/src/androidTest/java/app/fedilab/nitterizeme/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/app/fedilab/nitterizeme/ExampleInstrumentedTest.java
@@ -2,13 +2,13 @@ package app.fedilab.nitterizeme;
import android.content.Context;
-import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
import org.junit.Test;
import org.junit.runner.RunWith;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
/**
* Instrumented test, which will execute on an Android device.
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 14eba37..9f3afea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,7 @@
+
+ android:noHistory="true"
+ android:theme="@style/Theme.AppCompat.Translucent">
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
-
+
+
+
-
-
+
+ android:pathPattern=".*"
+ android:scheme="http" />
-
+
+ android:host="twitter.com"
+ android:mimeType="text/plain" />
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+
+
-
-
+
+ android:scheme="http" />
-
-
+
+
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" />
\ No newline at end of file
diff --git a/app/src/main/java/app/fedilab/nitterizeme/AboutActivity.java b/app/src/main/java/app/fedilab/nitterizeme/AboutActivity.java
index 312a2fc..fcc766a 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/AboutActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/AboutActivity.java
@@ -30,11 +30,9 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
-
public class AboutActivity extends AppCompatActivity {
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -45,17 +43,18 @@ public class AboutActivity extends AppCompatActivity {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
String version = pInfo.versionName;
about_version.setText(getResources().getString(R.string.about_vesrion, version));
- } catch (PackageManager.NameNotFoundException ignored) {}
+ } catch (PackageManager.NameNotFoundException ignored) {
+ }
setTitle(R.string.about_the_app);
- if( getSupportActionBar() != null) {
+ if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
//Developer click for Mastodon account
TextView developer_mastodon = findViewById(R.id.developer_mastodon);
SpannableString content = new SpannableString(developer_mastodon.getText().toString());
- content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(AboutActivity.this,R.color.colorAccent)), 0, content.length(), 0);
+ content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(AboutActivity.this, R.color.colorAccent)), 0, content.length(), 0);
developer_mastodon.setText(content);
developer_mastodon.setOnClickListener(v -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://toot.fedilab.app/@fedilab"));
@@ -112,7 +111,7 @@ public class AboutActivity extends AppCompatActivity {
TextView license = findViewById(R.id.license);
content = new SpannableString(license.getText().toString());
- content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(AboutActivity.this,R.color.colorAccent)), 0, content.length(), 0);
+ content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(AboutActivity.this, R.color.colorAccent)), 0, content.length(), 0);
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
license.setText(content);
license.setOnClickListener(v -> {
diff --git a/app/src/main/java/app/fedilab/nitterizeme/AppInfoAdapter.java b/app/src/main/java/app/fedilab/nitterizeme/AppInfoAdapter.java
index 651d55a..4495b6e 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/AppInfoAdapter.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/AppInfoAdapter.java
@@ -27,7 +27,6 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
-
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@@ -57,7 +56,7 @@ public class AppInfoAdapter extends RecyclerView.Adapter {
AppInfo appInfo = appInfos.get(viewHolder.getAdapterPosition());
Context context = holder.itemView.getContext();
holder.domain.setText(appInfo.getDomain());
- if( appInfo.getApplicationInfo() != null ) {
+ if (appInfo.getApplicationInfo() != null) {
Drawable icon = appInfo.getApplicationInfo().loadIcon(context.getPackageManager());
try {
holder.app_icon.setImageDrawable(icon);
@@ -65,10 +64,10 @@ public class AppInfoAdapter extends RecyclerView.Adapter {
holder.app_icon.setImageResource(R.drawable.ic_android);
}
holder.information.setText(appInfo.getApplicationInfo().packageName);
- if( appInfo.getApplicationInfo().packageName.compareTo(BuildConfig.APPLICATION_ID) == 0 ) {
+ if (appInfo.getApplicationInfo().packageName.compareTo(BuildConfig.APPLICATION_ID) == 0) {
holder.valid.setImageResource(R.drawable.ic_check);
holder.valid.setContentDescription(context.getString(R.string.valid));
- }else {
+ } else {
holder.valid.setImageResource(R.drawable.ic_error);
holder.valid.setContentDescription(context.getString(R.string.error));
}
@@ -78,7 +77,7 @@ public class AppInfoAdapter extends RecyclerView.Adapter {
intent.setData(uri);
context.startActivity(intent);
});
- }else{
+ } else {
holder.information.setText(R.string.no_apps);
holder.app_icon.setImageResource(R.drawable.ic_android);
holder.valid.setContentDescription(context.getString(R.string.warning));
@@ -86,8 +85,8 @@ public class AppInfoAdapter extends RecyclerView.Adapter {
holder.main_container.setOnClickListener(v -> {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.putExtra("nitterizeme","test");
- String url = "https://"+appInfo.getDomain();
+ intent.putExtra("nitterizeme", "test");
+ String url = "https://" + appInfo.getDomain();
intent.setData(Uri.parse(url));
context.startActivity(intent);
});
diff --git a/app/src/main/java/app/fedilab/nitterizeme/MainActivity.java b/app/src/main/java/app/fedilab/nitterizeme/MainActivity.java
index 396c2a3..8945698 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/MainActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/MainActivity.java
@@ -13,6 +13,7 @@ package app.fedilab.nitterizeme;
*
* You should have received a copy of the GNU General Public License along with NitterizeMe; if not,
* see . */
+
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -22,14 +23,6 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
-
-
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.SwitchCompat;
-import androidx.appcompat.widget.Toolbar;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuItem;
@@ -39,43 +32,40 @@ import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.SwitchCompat;
+import androidx.appcompat.widget.Toolbar;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputEditText;
import com.google.android.material.textfield.TextInputLayout;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Objects;
public class MainActivity extends AppCompatActivity {
+ public static final String APP_PREFS = "app_prefs";
@SuppressWarnings("unused")
public static String TAG = "NitterizeMe";
- public static String SET_NITTER_HOST = "set_nitter_host";
- public static String DEFAULT_NITTER_HOST = "nitter.net";
- public static String SET_INVIDIOUS_HOST = "set_invidious_host";
- public static String DEFAULT_INVIDIOUS_HOST = "invidio.us";
- public static String SET_INVIDIOUS_ENABLED = "set_invidious_enabled";
- public static String SET_NITTER_ENABLED = "set_nitter_enabled";
- public static String SET_OSM_ENABLED = "set_osm_enabled";
- public static String SET_OSM_HOST = "set_osm_host";
- public static String DEFAULT_OSM_HOST = "www.openstreetmap.org";
- public static String SET_GEO_URIS = "set_geo_uris";
- public static final String APP_PREFS = "app_prefs";
- private AppInfoAdapter appInfoAdapter;
- private RecyclerView list_apps;
-
-
- private String[] domains;
-
+ public static String SET_NITTER_HOST = "set_nitter_host";
+ public static String DEFAULT_NITTER_HOST = "nitter.net";
+ public static String SET_INVIDIOUS_HOST = "set_invidious_host";
+ public static String DEFAULT_INVIDIOUS_HOST = "invidio.us";
+ public static String SET_INVIDIOUS_ENABLED = "set_invidious_enabled";
+ public static String SET_NITTER_ENABLED = "set_nitter_enabled";
+ public static String SET_OSM_ENABLED = "set_osm_enabled";
+ public static String SET_OSM_HOST = "set_osm_host";
+ public static String DEFAULT_OSM_HOST = "www.openstreetmap.org";
+ public static String SET_GEO_URIS = "set_geo_uris";
//Supported domains
public static String[] twitter_domains = {
"twitter.com",
"mobile.twitter.com",
"www.twitter.com",
};
-
public static String[] youtube_domains = {
"www.youtube.com",
"youtube.com",
@@ -83,7 +73,6 @@ public class MainActivity extends AppCompatActivity {
"youtu.be",
"youtube-nocookie.com"
};
-
public static String[] shortener_domains = {
"t.co",
"nyti.ms",
@@ -91,6 +80,9 @@ public class MainActivity extends AppCompatActivity {
"tinyurl.com",
"goo.gl",
};
+ private AppInfoAdapter appInfoAdapter;
+ private RecyclerView list_apps;
+ private String[] domains;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -101,17 +93,17 @@ public class MainActivity extends AppCompatActivity {
Objects.requireNonNull(getSupportActionBar()).setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- domains = new String[twitter_domains.length+youtube_domains.length+shortener_domains.length];
+ domains = new String[twitter_domains.length + youtube_domains.length + shortener_domains.length];
int i = 0;
- for(String host: twitter_domains){
+ for (String host : twitter_domains) {
domains[i] = host;
i++;
}
- for(String host: youtube_domains){
+ for (String host : youtube_domains) {
domains[i] = host;
i++;
}
- for(String host: shortener_domains){
+ for (String host : shortener_domains) {
domains[i] = host;
i++;
}
@@ -156,13 +148,13 @@ public class MainActivity extends AppCompatActivity {
editor.apply();
});
- if(nitterHost!=null) {
+ if (nitterHost != null) {
nitter_instance.setText(nitterHost);
}
- if(invidiousHost!=null) {
+ if (invidiousHost != null) {
invidious_instance.setText(invidiousHost);
}
- if(osmHost!=null) {
+ if (osmHost != null) {
osm_instance.setText(osmHost);
}
button_save.setOnClickListener(v -> {
@@ -197,20 +189,20 @@ public class MainActivity extends AppCompatActivity {
ImageButton buttonExpand = findViewById(R.id.button_expand);
buttonExpand.setOnClickListener(v -> {
- if( list_apps.getVisibility() == View.VISIBLE){
+ if (list_apps.getVisibility() == View.VISIBLE) {
list_apps.setVisibility(View.GONE);
buttonExpand.setContentDescription(getString(R.string.display_supported_links));
- }else{
+ } else {
list_apps.setVisibility(View.VISIBLE);
buttonExpand.setContentDescription(getString(R.string.hide_supported_links));
}
});
ArrayList appInfos = new ArrayList<>();
- for(String domain: domains) {
+ for (String domain : domains) {
AppInfo appInfo = new AppInfo();
appInfo.setDomain(domain);
- appInfo.setApplicationInfo(getDefaultApp("https://"+domain));
+ appInfo.setApplicationInfo(getDefaultApp("https://" + domain));
appInfos.add(appInfo);
}
@@ -221,10 +213,10 @@ public class MainActivity extends AppCompatActivity {
editor.apply();
TextInputLayout osm_instance_container = findViewById(R.id.osm_instance_container);
TextView osm_indications = findViewById(R.id.osm_indications);
- if( isChecked){
+ if (isChecked) {
osm_instance_container.setVisibility(View.GONE);
osm_indications.setText(R.string.redirect_gm_to_geo_uri);
- }else{
+ } else {
osm_instance_container.setVisibility(View.VISIBLE);
osm_indications.setText(R.string.redirect_gm_to_osm);
}
@@ -241,6 +233,7 @@ public class MainActivity extends AppCompatActivity {
/**
* Allow to get info about application that opens the link by default
+ *
* @param url String url for test
* @return ApplicationInfo info about the application
*/
@@ -277,7 +270,7 @@ public class MainActivity extends AppCompatActivity {
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
startActivity(intent);
return true;
- }else if(id == android.R.id.home){
+ } else if (id == android.R.id.home) {
finish();
}
@@ -285,14 +278,14 @@ public class MainActivity extends AppCompatActivity {
}
@Override
- protected void onResume(){
+ protected void onResume() {
super.onResume();
- if( list_apps != null) {
+ if (list_apps != null) {
ArrayList appInfos = new ArrayList<>();
- for(String domain: domains) {
+ for (String domain : domains) {
AppInfo appInfo = new AppInfo();
appInfo.setDomain(domain);
- appInfo.setApplicationInfo(getDefaultApp("https://"+domain));
+ appInfo.setApplicationInfo(getDefaultApp("https://" + domain));
appInfos.add(appInfo);
}
appInfoAdapter = new AppInfoAdapter(appInfos);
diff --git a/app/src/main/java/app/fedilab/nitterizeme/TransformActivity.java b/app/src/main/java/app/fedilab/nitterizeme/TransformActivity.java
index 8d3cbcc..5eb7ff6 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/TransformActivity.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/TransformActivity.java
@@ -13,6 +13,7 @@ package app.fedilab.nitterizeme;
*
* You should have received a copy of the GNU General Public License along with NitterizeMe; if not,
* see . */
+
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
@@ -32,7 +33,6 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
-
import androidx.appcompat.app.AlertDialog;
import java.net.MalformedURLException;
@@ -54,27 +54,28 @@ import static app.fedilab.nitterizeme.MainActivity.youtube_domains;
public class TransformActivity extends Activity {
- private Thread thread;
- private ArrayList notShortnedURLDialog;
final Pattern youtubePattern = Pattern.compile("(www\\.|m\\.)?(youtube\\.com|youtu\\.be|youtube-nocookie\\.com)/(((?!([\"'<])).)*)");
final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)");
final Pattern maps = Pattern.compile("/maps/place/[^@]+@([\\d.,z]{3,}).*");
- final Pattern extractPlace = Pattern.compile("/maps/place/(((?!/data).)*)");
+ final Pattern extractPlace = Pattern.compile("/maps/place/(((?!/data).)*)");
+ private Thread thread;
+ private ArrayList notShortnedURLDialog;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.APP_PREFS, Context.MODE_PRIVATE);
Intent intent = getIntent();
- if( intent != null && intent.getStringExtra("nitterizeme") != null ) {
+ if (intent != null && intent.getStringExtra("nitterizeme") != null) {
finish();
return;
}
notShortnedURLDialog = new ArrayList<>();
assert intent != null;
//Dealing with URLs
- if( Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_VIEW)){
+ if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_VIEW)) {
- String url = Objects.requireNonNull(intent.getData()).toString();
+ String url = Objects.requireNonNull(intent.getData()).toString();
URL url_;
String host = null;
try {
@@ -84,7 +85,7 @@ public class TransformActivity extends Activity {
e.printStackTrace();
}
//Shortened URLs
- if( Arrays.asList(shortener_domains).contains(host)) {
+ if (Arrays.asList(shortener_domains).contains(host)) {
AlertDialog.Builder unshortenAlertBuilder = new AlertDialog.Builder(TransformActivity.this);
unshortenAlertBuilder.setTitle(R.string.shortened_detected);
@@ -92,27 +93,27 @@ public class TransformActivity extends Activity {
unshortenAlertBuilder.setView(view);
unshortenAlertBuilder.setIcon(R.mipmap.ic_launcher);
unshortenAlertBuilder.setPositiveButton(R.string.open, (dialog, id) -> {
- if( notShortnedURLDialog.size() > 0){
+ if (notShortnedURLDialog.size() > 0) {
URL url_1;
String realHost = null;
try {
- url_1 = new URL(notShortnedURLDialog.get(notShortnedURLDialog.size()-1));
+ url_1 = new URL(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1));
realHost = url_1.getHost();
} catch (MalformedURLException e) {
e.printStackTrace();
}
- if( Arrays.asList(twitter_domains).contains(realHost)) {
+ if (Arrays.asList(twitter_domains).contains(realHost)) {
boolean nitter_enabled = sharedpreferences.getBoolean(SET_NITTER_ENABLED, true);
- if(nitter_enabled) {
+ if (nitter_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else{
+ } else {
forwardToBrowser(intent);
}
} else {
@@ -120,18 +121,18 @@ public class TransformActivity extends Activity {
}
}
//Maps URLs (containing /maps/place like Google Maps links)
- else if( url.contains("/maps/place")) {
+ else if (url.contains("/maps/place")) {
boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
- if(osm_enabled) {
+ if (osm_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else {
+ } else {
forwardToBrowser(intent);
}
} else {
@@ -139,26 +140,26 @@ public class TransformActivity extends Activity {
}
}
//YouTube URLs
- else if(Arrays.asList(youtube_domains).contains(realHost)){ //Youtube URL
+ else if (Arrays.asList(youtube_domains).contains(realHost)) { //Youtube URL
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
- if( invidious_enabled) {
+ if (invidious_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else {
+ } else {
forwardToBrowser(intent);
}
- }else{
+ } else {
forwardToBrowser(intent);
}
- }else {
+ } else {
Intent delegate = new Intent(Intent.ACTION_VIEW);
- delegate.setData(Uri.parse(notShortnedURLDialog.get(notShortnedURLDialog.size()-1)));
+ delegate.setData(Uri.parse(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
@@ -186,12 +187,12 @@ public class TransformActivity extends Activity {
Runnable myRunnable = () -> {
positiveButton.setEnabled(true);
StringBuilder message;
- if( notShortnedURLDialog.size() <= 1 ) {
+ if (notShortnedURLDialog.size() <= 1) {
message = new StringBuilder(getString(R.string.the_app_failed_shortened));
- }else {
+ } else {
message = new StringBuilder(getString(R.string.try_to_redirect, notShortnedURLDialog.get(0), notShortnedURLDialog.get(1)));
- if( notShortnedURLDialog.size() > 2 ){
- for(int i=2 ; i < notShortnedURLDialog.size(); i++){
+ if (notShortnedURLDialog.size() > 2) {
+ for (int i = 2; i < notShortnedURLDialog.size(); i++) {
message.append("\n\n").append(getString(R.string.try_to_redirect_again, notShortnedURLDialog.get(i)));
}
}
@@ -208,18 +209,18 @@ public class TransformActivity extends Activity {
thread.start();
}
//Twitter URLs
- else if( Arrays.asList(twitter_domains).contains(host)) {
+ else if (Arrays.asList(twitter_domains).contains(host)) {
boolean nitter_enabled = sharedpreferences.getBoolean(SET_NITTER_ENABLED, true);
- if(nitter_enabled) {
+ if (nitter_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else{
+ } else {
forwardToBrowser(intent);
}
} else {
@@ -227,18 +228,18 @@ public class TransformActivity extends Activity {
}
}
//Maps URLs (containing /maps/place like Google Maps links)
- else if( url.contains("/maps/place")) {
+ else if (url.contains("/maps/place")) {
boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
- if(osm_enabled) {
+ if (osm_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else {
+ } else {
forwardToBrowser(intent);
}
} else {
@@ -246,35 +247,35 @@ public class TransformActivity extends Activity {
}
}
//YouTube URLs
- else if(Arrays.asList(youtube_domains).contains(host)){ //Youtube URL
+ else if (Arrays.asList(youtube_domains).contains(host)) { //Youtube URL
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
- if( invidious_enabled) {
+ if (invidious_enabled) {
Intent delegate = new Intent(Intent.ACTION_VIEW);
String transformedURL = transformUrl(url);
- if( transformedURL != null) {
+ if (transformedURL != null) {
delegate.setData(Uri.parse(transformUrl(url)));
delegate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (delegate.resolveActivity(getPackageManager()) != null) {
startActivity(delegate);
}
- }else {
+ } else {
forwardToBrowser(intent);
}
- }else{
+ } else {
forwardToBrowser(intent);
}
}
}
//It's a sharing intent
- else if( Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_SEND)){
+ else if (Objects.requireNonNull(intent.getAction()).equals(Intent.ACTION_SEND)) {
share(intent.getStringExtra(Intent.EXTRA_TEXT));
}
}
@Override
- protected void onDestroy(){
- if( thread != null && thread.isAlive()){
+ protected void onDestroy() {
+ if (thread != null && thread.isAlive()) {
thread.interrupt();
}
super.onDestroy();
@@ -282,6 +283,7 @@ public class TransformActivity extends Activity {
/**
* Forward the intent to a browser
+ *
* @param i original intent
*/
private void forwardToBrowser(Intent i) {
@@ -314,6 +316,7 @@ public class TransformActivity extends Activity {
/**
* Transform the URL to a Nitter, Invidious or OSM ones
+ *
* @param url String original URL
* @return String transformed URL
*/
@@ -329,9 +332,9 @@ public class TransformActivity extends Activity {
} catch (MalformedURLException e) {
e.printStackTrace();
}
- if(Arrays.asList(twitter_domains).contains(host)) {
+ if (Arrays.asList(twitter_domains).contains(host)) {
boolean nitter_enabled = sharedpreferences.getBoolean(SET_NITTER_ENABLED, true);
- if(nitter_enabled) {
+ if (nitter_enabled) {
Matcher matcher = nitterPattern.matcher(url);
while (matcher.find()) {
final String nitter_directory = matcher.group(2);
@@ -342,46 +345,46 @@ public class TransformActivity extends Activity {
} else {
return url;
}
- }else if( url.contains("/maps/place")) {
+ } else if (url.contains("/maps/place")) {
boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
- if(osm_enabled) {
+ if (osm_enabled) {
Matcher matcher = maps.matcher(url);
while (matcher.find()) {
final String localization = matcher.group(1);
assert localization != null;
String[] data = localization.split(",");
- if( data.length > 2 ){
+ if (data.length > 2) {
String zoom;
String[] details = data[2].split("\\.");
- if( details.length > 0 ) {
+ if (details.length > 0) {
zoom = details[0];
- }else {
+ } else {
zoom = data[2];
}
String osmHost = sharedpreferences.getString(MainActivity.SET_OSM_HOST, MainActivity.DEFAULT_OSM_HOST).toLowerCase();
boolean geo_uri_enabled = sharedpreferences.getBoolean(MainActivity.SET_GEO_URIS, false);
- if(! geo_uri_enabled) {
+ if (!geo_uri_enabled) {
newUrl = "https://" + osmHost + "/#map=" + zoom + "/" + data[0] + "/" + data[1];
- }else{
- newUrl = "geo:0,0?q="+data[0]+","+data[1]+",z="+zoom;
+ } else {
+ newUrl = "geo:0,0?q=" + data[0] + "," + data[1] + ",z=" + zoom;
}
}
}
- if( newUrl == null && url.contains("/data=")) {
+ if (newUrl == null && url.contains("/data=")) {
matcher = extractPlace.matcher(url);
while (matcher.find()) {
final String search = matcher.group(1);
- newUrl = "geo:0,0?q="+search;
+ newUrl = "geo:0,0?q=" + search;
}
}
return newUrl;
} else {
return url;
}
- }else if(Arrays.asList(youtube_domains).contains(host)){ //Youtube URL
+ } else if (Arrays.asList(youtube_domains).contains(host)) { //Youtube URL
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
- if( invidious_enabled) {
+ if (invidious_enabled) {
Matcher matcher = youtubePattern.matcher(url);
while (matcher.find()) {
final String youtubeId = matcher.group(3);
@@ -393,7 +396,7 @@ public class TransformActivity extends Activity {
}
}
return newUrl;
- }else{
+ } else {
return url;
}
}
@@ -403,6 +406,7 @@ public class TransformActivity extends Activity {
/**
* Transform URL inside the shared content without modifying the whole content
+ *
* @param extraText String the new extra text
*/
private void share(String extraText) {
@@ -432,7 +436,7 @@ public class TransformActivity extends Activity {
e.printStackTrace();
}
String newUrl = null;
- if( url == null){
+ if (url == null) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, extraText);
@@ -441,9 +445,9 @@ public class TransformActivity extends Activity {
return;
}
- if( Arrays.asList(twitter_domains).contains(host) ) {
+ if (Arrays.asList(twitter_domains).contains(host)) {
boolean nitter_enabled = sharedpreferences.getBoolean(SET_NITTER_ENABLED, true);
- if(nitter_enabled) {
+ if (nitter_enabled) {
Matcher matcher = nitterPattern.matcher(url);
while (matcher.find()) {
final String nitter_directory = matcher.group(2);
@@ -451,30 +455,30 @@ public class TransformActivity extends Activity {
newUrl = "https://" + nitterHost + nitter_directory;
}
}
- }else if( url.contains("/maps/place/")) {
+ } else if (url.contains("/maps/place/")) {
boolean osm_enabled = sharedpreferences.getBoolean(MainActivity.SET_OSM_ENABLED, true);
- if(osm_enabled) {
+ if (osm_enabled) {
Matcher matcher = maps.matcher(url);
while (matcher.find()) {
final String localization = matcher.group(1);
assert localization != null;
String[] data = localization.split(",");
- if( data.length > 2 ){
+ if (data.length > 2) {
String zoom;
String[] details = data[2].split("\\.");
- if( details.length > 0 ) {
+ if (details.length > 0) {
zoom = details[0];
- }else {
+ } else {
zoom = data[2];
}
String osmHost = sharedpreferences.getString(MainActivity.SET_OSM_HOST, MainActivity.DEFAULT_OSM_HOST).toLowerCase();
- newUrl = "https://"+osmHost+"/#map="+zoom+"/"+data[0]+"/"+data[1];
+ newUrl = "https://" + osmHost + "/#map=" + zoom + "/" + data[0] + "/" + data[1];
}
}
}
- }else if(Arrays.asList(youtube_domains).contains(host)){ //Youtube URL
+ } else if (Arrays.asList(youtube_domains).contains(host)) { //Youtube URL
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
- if( invidious_enabled) {
+ if (invidious_enabled) {
Matcher matcher = youtubePattern.matcher(url);
while (matcher.find()) {
final String youtubeId = matcher.group(3);
@@ -486,8 +490,7 @@ public class TransformActivity extends Activity {
}
}
}
- }
- else if(Arrays.asList(shortener_domains).contains(host)) {
+ } else if (Arrays.asList(shortener_domains).contains(host)) {
String finalUrl = url;
String finalExtraText = extraText;
Thread thread = new Thread() {
@@ -499,7 +502,7 @@ public class TransformActivity extends Activity {
URL url_;
String host = null;
try {
- url_ = new URL(notShortnedURLDialog.get(notShortnedURLDialog.size()-1));
+ url_ = new URL(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1));
host = url_.getHost();
} catch (MalformedURLException e) {
e.printStackTrace();
@@ -508,9 +511,9 @@ public class TransformActivity extends Activity {
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);
- 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);
+ 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);
while (matcher.find()) {
final String nitter_directory = matcher.group(2);
String nitterHost = sharedpreferences.getString(MainActivity.SET_NITTER_HOST, MainActivity.DEFAULT_NITTER_HOST).toLowerCase();
@@ -522,9 +525,9 @@ public class TransformActivity extends Activity {
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
sendIntent.setType("text/plain");
startActivity(sendIntent);
- }else if( invidious_enabled && Arrays.asList(youtube_domains).contains(host)) {
- Matcher matcher = youtubePattern.matcher(notShortnedURLDialog.get(notShortnedURLDialog.size()-1));
- String newUrlFinal = notShortnedURLDialog.get(notShortnedURLDialog.size()-1);
+ } else if (invidious_enabled && Arrays.asList(youtube_domains).contains(host)) {
+ Matcher matcher = youtubePattern.matcher(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1));
+ String newUrlFinal = notShortnedURLDialog.get(notShortnedURLDialog.size() - 1);
while (matcher.find()) {
final String youtubeId = matcher.group(3);
String invidiousHost = sharedpreferences.getString(MainActivity.SET_INVIDIOUS_HOST, MainActivity.DEFAULT_INVIDIOUS_HOST).toLowerCase();
@@ -540,23 +543,23 @@ public class TransformActivity extends Activity {
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
sendIntent.setType("text/plain");
startActivity(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));
+ } 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));
while (matcher.find()) {
final String localization = matcher.group(1);
assert localization != null;
String[] data = localization.split(",");
- if( data.length > 2 ){
+ if (data.length > 2) {
String zoom;
String[] details = data[2].split("\\.");
- if( details.length > 0 ) {
+ if (details.length > 0) {
zoom = details[0];
- }else {
+ } else {
zoom = data[2];
}
String osmHost = sharedpreferences.getString(MainActivity.SET_OSM_HOST, MainActivity.DEFAULT_OSM_HOST).toLowerCase();
- newUrlFinal = "https://"+osmHost+"/#map="+zoom+"/"+data[0]+"/"+data[1];
+ newUrlFinal = "https://" + osmHost + "/#map=" + zoom + "/" + data[0] + "/" + data[1];
}
}
String newExtraText = finalExtraText.replaceAll(Pattern.quote(finalUrl), Matcher.quoteReplacement(newUrlFinal));
@@ -565,8 +568,8 @@ public class TransformActivity extends Activity {
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
sendIntent.setType("text/plain");
startActivity(sendIntent);
- }else{
- String newExtraText = finalExtraText.replaceAll(Pattern.quote(finalUrl), Matcher.quoteReplacement(notShortnedURLDialog.get(notShortnedURLDialog.size()-1)));
+ } else {
+ String newExtraText = finalExtraText.replaceAll(Pattern.quote(finalUrl), Matcher.quoteReplacement(notShortnedURLDialog.get(notShortnedURLDialog.size() - 1)));
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, newExtraText);
@@ -578,7 +581,7 @@ public class TransformActivity extends Activity {
thread.start();
return;
}
- if( newUrl != null) {
+ if (newUrl != null) {
extraText = extraText.replaceAll(Pattern.quote(url), Matcher.quoteReplacement(newUrl));
}
Intent sendIntent = new Intent();
diff --git a/app/src/main/java/app/fedilab/nitterizeme/Utils.java b/app/src/main/java/app/fedilab/nitterizeme/Utils.java
index ff2d31c..ab0e6ca 100644
--- a/app/src/main/java/app/fedilab/nitterizeme/Utils.java
+++ b/app/src/main/java/app/fedilab/nitterizeme/Utils.java
@@ -36,16 +36,17 @@ class Utils {
/**
* Returns the unshortened URL
- * @param urls ArrayList URL to check
+ *
+ * @param urls ArrayList URL to check
*/
- static void checkUrl(ArrayList urls){
+ static void checkUrl(ArrayList urls) {
URL url;
String newURL = null;
String comingURl;
try {
- comingURl = urls.get(urls.size()-1);
+ comingURl = urls.get(urls.size() - 1);
- if( comingURl.startsWith("http://")){
+ if (comingURl.startsWith("http://")) {
comingURl = comingURl.replace("http://", "https://");
}
url = new URL(comingURl);
@@ -53,7 +54,7 @@ class Utils {
httpsURLConnection.setRequestProperty("http.keepAlive", "false");
httpsURLConnection.setInstanceFollowRedirects(false);
httpsURLConnection.setRequestMethod("HEAD");
- if( httpsURLConnection.getResponseCode() == 301) {
+ if (httpsURLConnection.getResponseCode() == 301) {
Map> map = httpsURLConnection.getHeaderFields();
for (Map.Entry> entry : map.entrySet()) {
if (entry.toString().toLowerCase().startsWith("location")) {
@@ -66,12 +67,12 @@ class Utils {
}
}
httpsURLConnection.getInputStream().close();
- if (newURL != null && newURL.compareTo(comingURl)!=0){
+ if (newURL != null && newURL.compareTo(comingURl) != 0) {
URL redirectURL = new URL(newURL);
String host = redirectURL.getHost();
String protocol = redirectURL.getProtocol();
- if( protocol != null && host != null){
- if( Arrays.asList(shortener_domains).contains(host)) {
+ if (protocol != null && host != null) {
+ if (Arrays.asList(shortener_domains).contains(host)) {
checkUrl(urls);
}
}
diff --git a/app/src/main/res/drawable/ic_android.xml b/app/src/main/res/drawable/ic_android.xml
index 6de853c..bb6ea92 100644
--- a/app/src/main/res/drawable/ic_android.xml
+++ b/app/src/main/res/drawable/ic_android.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
index 55aafa3..b80780a 100644
--- a/app/src/main/res/drawable/ic_check.xml
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_error.xml b/app/src/main/res/drawable/ic_error.xml
index ac09fe3..f9eb7d2 100644
--- a/app/src/main/res/drawable/ic_error.xml
+++ b/app/src/main/res/drawable/ic_error.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_expand_less.xml b/app/src/main/res/drawable/ic_expand_less.xml
index 5042d80..4ff5565 100644
--- a/app/src/main/res/drawable/ic_expand_less.xml
+++ b/app/src/main/res/drawable/ic_expand_less.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_expand_more.xml b/app/src/main/res/drawable/ic_expand_more.xml
index bc72bdc..b6a4700 100644
--- a/app/src/main/res/drawable/ic_expand_more.xml
+++ b/app/src/main/res/drawable/ic_expand_more.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_info_outline.xml b/app/src/main/res/drawable/ic_info_outline.xml
index af0d4d0..2465f78 100644
--- a/app/src/main/res/drawable/ic_info_outline.xml
+++ b/app/src/main/res/drawable/ic_info_outline.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index 5f44b82..b312bd6 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -3,55 +3,56 @@
android:height="108dp"
android:viewportWidth="461.9709"
android:viewportHeight="461.9709">
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml
index 74ca299..b32b114 100644
--- a/app/src/main/res/drawable/ic_save.xml
+++ b/app/src/main/res/drawable/ic_save.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
index 1397d37..bc30c52 100644
--- a/app/src/main/res/drawable/ic_settings.xml
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/drawable/ic_warning.xml b/app/src/main/res/drawable/ic_warning.xml
index 1e606cc..8325ff6 100644
--- a/app/src/main/res/drawable/ic_warning.xml
+++ b/app/src/main/res/drawable/ic_warning.xml
@@ -1,5 +1,10 @@
-
-
+
+
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index 01e4736..875b5fc 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -1,5 +1,4 @@
-
-
+
-
-
-
-
+
+
+
+
+
+ android:textStyle="bold" />
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="10dp">
+ android:padding="5dp">
+
+
+
+
+
+
-
+
+
-
+
+
@@ -138,38 +146,39 @@
+ android:text="@string/Donate" />
+
-
+
+
@@ -181,104 +190,105 @@
tools:ignore="HardcodedText" />
+ android:paddingStart="30dp"
+ android:paddingLeft="30dp"
+ android:paddingEnd="30dp"
+ android:paddingRight="30dp"
+ android:text="@string/how_to"
+ android:textColor="@android:color/white" />
+ android:textSize="16sp"
+ android:textStyle="bold" />
+
+ android:text="@string/source_code" />
+
+ tools:ignore="HardcodedText" />
+
+ android:text="@string/issue_tracker" />
+
+ tools:ignore="HardcodedText" />
+
+ android:text="@string/license" />
+
+ tools:ignore="HardcodedText" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 08cccd4..e27426d 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,4 @@
-
-