Add Proxitok
This commit is contained in:
parent
4757e2c116
commit
7663f877d8
|
@ -63,13 +63,13 @@
|
||||||
<data android:host="bl.ink" />
|
<data android:host="bl.ink" />
|
||||||
<data android:host="buff.ly" />
|
<data android:host="buff.ly" />
|
||||||
<data android:host="maps.app.goo.gl" />
|
<data android:host="maps.app.goo.gl" />
|
||||||
|
<data android:host="vm.tiktok.com" />
|
||||||
|
|
||||||
<!-- INSTAGRAM URLs -->
|
<!-- INSTAGRAM URLs -->
|
||||||
<data android:host="instagram.com" />
|
<data android:host="instagram.com" />
|
||||||
<data android:host="www.instagram.com" />
|
<data android:host="www.instagram.com" />
|
||||||
<data android:host="m.instagram.com" />
|
<data android:host="m.instagram.com" />
|
||||||
|
|
||||||
|
|
||||||
<!-- TWITTER URLs -->
|
<!-- TWITTER URLs -->
|
||||||
<data android:host="mobile.twitter.com" />
|
<data android:host="mobile.twitter.com" />
|
||||||
<data android:host="www.twitter.com" />
|
<data android:host="www.twitter.com" />
|
||||||
|
@ -84,7 +84,6 @@
|
||||||
<data android:host="youtu.be" />
|
<data android:host="youtu.be" />
|
||||||
<data android:host="youtube-nocookie.com" />
|
<data android:host="youtube-nocookie.com" />
|
||||||
|
|
||||||
|
|
||||||
<!-- REDDIT URLs -->
|
<!-- REDDIT URLs -->
|
||||||
<data android:host="www.reddit.com" />
|
<data android:host="www.reddit.com" />
|
||||||
<data android:host="reddit.com" />
|
<data android:host="reddit.com" />
|
||||||
|
@ -92,6 +91,11 @@
|
||||||
<data android:host="i.redd.it" />
|
<data android:host="i.redd.it" />
|
||||||
<data android:host="preview.redd.it" />
|
<data android:host="preview.redd.it" />
|
||||||
|
|
||||||
|
<!-- TIKTOK URLs -->
|
||||||
|
<data android:host="tiktok.com" />
|
||||||
|
<data android:host="www.tiktok.com" />
|
||||||
|
<data android:host="us.tiktok.com" />
|
||||||
|
|
||||||
<!-- INVIDIOUS INSTANCES -->
|
<!-- INVIDIOUS INSTANCES -->
|
||||||
<data android:host="invidious.snopyta.org" />
|
<data android:host="invidious.snopyta.org" />
|
||||||
<data android:host="invidiou.sh" />
|
<data android:host="invidiou.sh" />
|
||||||
|
@ -118,6 +122,9 @@
|
||||||
<data android:host="bibliogram.dsrev.ru" />
|
<data android:host="bibliogram.dsrev.ru" />
|
||||||
<data android:host="bibliogram.pussthecat.org" />
|
<data android:host="bibliogram.pussthecat.org" />
|
||||||
|
|
||||||
|
<!-- PROXITOK INSTANCES -->
|
||||||
|
<data android:host="proxitok.herokuapp.com" />
|
||||||
|
<data android:host="proxitok.pussthecat.org" />
|
||||||
|
|
||||||
<!-- MEDIUM URLs -->
|
<!-- MEDIUM URLs -->
|
||||||
<data android:host="www.medium.com" />
|
<data android:host="www.medium.com" />
|
||||||
|
@ -160,6 +167,7 @@
|
||||||
<data android:host="bl.ink" />
|
<data android:host="bl.ink" />
|
||||||
<data android:host="buff.ly" />
|
<data android:host="buff.ly" />
|
||||||
<data android:host="maps.app.goo.gl" />
|
<data android:host="maps.app.goo.gl" />
|
||||||
|
<data android:host="vm.tiktok.com" />
|
||||||
|
|
||||||
<!-- INSTAGRAM URLs -->
|
<!-- INSTAGRAM URLs -->
|
||||||
<data android:host="instagram.com" />
|
<data android:host="instagram.com" />
|
||||||
|
@ -197,6 +205,11 @@
|
||||||
<data android:host="www.wikipedia.org" />
|
<data android:host="www.wikipedia.org" />
|
||||||
<data android:host="*.wikipedia.org" />
|
<data android:host="*.wikipedia.org" />
|
||||||
|
|
||||||
|
<!-- TIKTOK URLs -->
|
||||||
|
<data android:host="tiktok.com" />
|
||||||
|
<data android:host="www.tiktok.com" />
|
||||||
|
<data android:host="us.tiktok.com" />
|
||||||
|
|
||||||
<data android:host="*" />
|
<data android:host="*" />
|
||||||
|
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain" />
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
<data android:host="bl.ink" />
|
<data android:host="bl.ink" />
|
||||||
<data android:host="buff.ly" />
|
<data android:host="buff.ly" />
|
||||||
<data android:host="maps.app.goo.gl" />
|
<data android:host="maps.app.goo.gl" />
|
||||||
|
<data android:host="vm.tiktok.com" />
|
||||||
|
|
||||||
<!-- INSTAGRAM URLs -->
|
<!-- INSTAGRAM URLs -->
|
||||||
<data android:host="instagram.com" />
|
<data android:host="instagram.com" />
|
||||||
|
@ -80,7 +81,6 @@
|
||||||
<data android:host="youtu.be" />
|
<data android:host="youtu.be" />
|
||||||
<data android:host="youtube-nocookie.com" />
|
<data android:host="youtube-nocookie.com" />
|
||||||
|
|
||||||
|
|
||||||
<!-- REDDIT URLs -->
|
<!-- REDDIT URLs -->
|
||||||
<data android:host="www.reddit.com" />
|
<data android:host="www.reddit.com" />
|
||||||
<data android:host="reddit.com" />
|
<data android:host="reddit.com" />
|
||||||
|
@ -88,6 +88,11 @@
|
||||||
<data android:host="i.redd.it" />
|
<data android:host="i.redd.it" />
|
||||||
<data android:host="preview.redd.it" />
|
<data android:host="preview.redd.it" />
|
||||||
|
|
||||||
|
<!-- TIKTOK URLs -->
|
||||||
|
<data android:host="tiktok.com" />
|
||||||
|
<data android:host="www.tiktok.com" />
|
||||||
|
<data android:host="us.tiktok.com" />
|
||||||
|
|
||||||
<!-- MEDIUM URLs -->
|
<!-- MEDIUM URLs -->
|
||||||
<data android:host="www.medium.com" />
|
<data android:host="www.medium.com" />
|
||||||
<data android:host="medium.com" />
|
<data android:host="medium.com" />
|
||||||
|
@ -127,6 +132,7 @@
|
||||||
<data android:host="bl.ink" />
|
<data android:host="bl.ink" />
|
||||||
<data android:host="buff.ly" />
|
<data android:host="buff.ly" />
|
||||||
<data android:host="maps.app.goo.gl" />
|
<data android:host="maps.app.goo.gl" />
|
||||||
|
<data android:host="vm.tiktok.com" />
|
||||||
|
|
||||||
<!-- INSTAGRAM URLs -->
|
<!-- INSTAGRAM URLs -->
|
||||||
<data android:host="instagram.com" />
|
<data android:host="instagram.com" />
|
||||||
|
@ -146,7 +152,6 @@
|
||||||
<data android:host="youtu.be" />
|
<data android:host="youtu.be" />
|
||||||
<data android:host="youtube-nocookie.com" />
|
<data android:host="youtube-nocookie.com" />
|
||||||
|
|
||||||
|
|
||||||
<!-- REDDIT URLs -->
|
<!-- REDDIT URLs -->
|
||||||
<data android:host="www.reddit.com" />
|
<data android:host="www.reddit.com" />
|
||||||
<data android:host="reddit.com" />
|
<data android:host="reddit.com" />
|
||||||
|
@ -154,6 +159,11 @@
|
||||||
<data android:host="i.redd.it" />
|
<data android:host="i.redd.it" />
|
||||||
<data android:host="preview.redd.it" />
|
<data android:host="preview.redd.it" />
|
||||||
|
|
||||||
|
<!-- TIKTOK URLs -->
|
||||||
|
<data android:host="tiktok.com" />
|
||||||
|
<data android:host="www.tiktok.com" />
|
||||||
|
<data android:host="us.tiktok.com" />
|
||||||
|
|
||||||
<!-- MEDIUM URLs -->
|
<!-- MEDIUM URLs -->
|
||||||
<data android:host="www.medium.com" />
|
<data android:host="www.medium.com" />
|
||||||
<data android:host="medium.com" />
|
<data android:host="medium.com" />
|
||||||
|
|
|
@ -239,6 +239,22 @@
|
||||||
"exceptions": [],
|
"exceptions": [],
|
||||||
"redirections": []
|
"redirections": []
|
||||||
},
|
},
|
||||||
|
"tiktok": {
|
||||||
|
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(tiktok)(\\.[a-zA-Z]{2,})(.*\\?.*)",
|
||||||
|
"completeProvider": false,
|
||||||
|
"rules": [
|
||||||
|
"_[a-z]=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"(sec_)?(u|user_)id=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"share_[a-z_]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"timestamp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"u_code=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"ugbiz_name=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
|
||||||
|
"utm_[a-z_]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
|
||||||
|
],
|
||||||
|
"exceptions": [],
|
||||||
|
"redirections": []
|
||||||
|
},
|
||||||
"techcrunch": {
|
"techcrunch": {
|
||||||
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?([\\.]?techcrunch\\.com)(.*\\?.*)",
|
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?([\\.]?techcrunch\\.com)(.*\\?.*)",
|
||||||
"completeProvider": false,
|
"completeProvider": false,
|
||||||
|
|
|
@ -80,6 +80,12 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
"www.wikipedia.org"
|
"www.wikipedia.org"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static String[] tiktok_domains = {
|
||||||
|
"tiktok.com",
|
||||||
|
"www.tiktok.com",
|
||||||
|
"us.tiktok.com"
|
||||||
|
};
|
||||||
|
|
||||||
public static String[] shortener_domains = {
|
public static String[] shortener_domains = {
|
||||||
"t.co",
|
"t.co",
|
||||||
"nyti.ms",
|
"nyti.ms",
|
||||||
|
@ -98,7 +104,8 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
"ow.ly",
|
"ow.ly",
|
||||||
"bl.ink",
|
"bl.ink",
|
||||||
"buff.ly",
|
"buff.ly",
|
||||||
"maps.app.goo.gl"
|
"maps.app.goo.gl",
|
||||||
|
"vm.tiktok.com"
|
||||||
};
|
};
|
||||||
//Supported instances to redirect one instance to another faster for the user
|
//Supported instances to redirect one instance to another faster for the user
|
||||||
public static String[] invidious_instances = {
|
public static String[] invidious_instances = {
|
||||||
|
@ -127,6 +134,10 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
"bibliogram.dsrev.ru",
|
"bibliogram.dsrev.ru",
|
||||||
"bibliogram.pussthecat.org"
|
"bibliogram.pussthecat.org"
|
||||||
};
|
};
|
||||||
|
public static String[] proxitok_instances = {
|
||||||
|
"proxitok.herokuapp.com",
|
||||||
|
"proxitok.pussthecat.org"
|
||||||
|
};
|
||||||
|
|
||||||
public static String outlook_safe_domain = "safelinks.protection.outlook.com";
|
public static String outlook_safe_domain = "safelinks.protection.outlook.com";
|
||||||
|
|
||||||
|
@ -153,23 +164,26 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
twitter_domains.length
|
twitter_domains.length
|
||||||
+ youtube_domains.length
|
+ youtube_domains.length
|
||||||
+ reddit_domains.length
|
+ reddit_domains.length
|
||||||
+ shortener_domains.length
|
|
||||||
+ instagram_domains.length
|
+ instagram_domains.length
|
||||||
|
+ wikipedia_domains.length
|
||||||
|
+ medium_domains.length
|
||||||
|
+ tiktok_domains.length
|
||||||
|
+ shortener_domains.length
|
||||||
+ invidious_instances.length
|
+ invidious_instances.length
|
||||||
+ nitter_instances.length
|
+ nitter_instances.length
|
||||||
+ bibliogram_instances.length
|
+ bibliogram_instances.length
|
||||||
+ wikipedia_domains.length
|
+ proxitok_instances.length
|
||||||
+ medium_domains.length
|
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
domains = new String[
|
domains = new String[
|
||||||
twitter_domains.length
|
twitter_domains.length
|
||||||
+ youtube_domains.length
|
+ youtube_domains.length
|
||||||
+ reddit_domains.length
|
+ reddit_domains.length
|
||||||
+ shortener_domains.length
|
|
||||||
+ instagram_domains.length
|
+ instagram_domains.length
|
||||||
+ wikipedia_domains.length
|
+ wikipedia_domains.length
|
||||||
+ medium_domains.length];
|
+ medium_domains.length
|
||||||
|
+ tiktok_domains.length
|
||||||
|
+ shortener_domains.length];
|
||||||
}
|
}
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (String host : twitter_domains) {
|
for (String host : twitter_domains) {
|
||||||
|
@ -196,6 +210,10 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
domains[i] = host;
|
domains[i] = host;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
for (String host : tiktok_domains) {
|
||||||
|
domains[i] = host;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
for (String host : shortener_domains) {
|
for (String host : shortener_domains) {
|
||||||
domains[i] = host;
|
domains[i] = host;
|
||||||
i++;
|
i++;
|
||||||
|
@ -213,6 +231,10 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
domains[i] = host;
|
domains[i] = host;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
for (String host : proxitok_instances) {
|
||||||
|
domains[i] = host;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final LinearLayoutManager mLayoutManager;
|
final LinearLayoutManager mLayoutManager;
|
||||||
|
@ -291,6 +313,10 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
AppInfo appInfo = new AppInfo();
|
AppInfo appInfo = new AppInfo();
|
||||||
appInfo.setTitle("Wikipedia");
|
appInfo.setTitle("Wikipedia");
|
||||||
appInfos.add(appInfo);
|
appInfos.add(appInfo);
|
||||||
|
} else if (Arrays.asList(tiktok_domains).contains(domain)) {
|
||||||
|
AppInfo appInfo = new AppInfo();
|
||||||
|
appInfo.setTitle("TikTok");
|
||||||
|
appInfos.add(appInfo);
|
||||||
} else if (Arrays.asList(shortener_domains).contains(domain)) {
|
} else if (Arrays.asList(shortener_domains).contains(domain)) {
|
||||||
AppInfo appInfo = new AppInfo();
|
AppInfo appInfo = new AppInfo();
|
||||||
appInfo.setTitle(getString(R.string.shortener_services));
|
appInfo.setTitle(getString(R.string.shortener_services));
|
||||||
|
@ -307,6 +333,10 @@ public class CheckAppActivity extends AppCompatActivity {
|
||||||
AppInfo appInfo = new AppInfo();
|
AppInfo appInfo = new AppInfo();
|
||||||
appInfo.setTitle(getString(R.string.bibliogram_instances));
|
appInfo.setTitle(getString(R.string.bibliogram_instances));
|
||||||
appInfos.add(appInfo);
|
appInfos.add(appInfo);
|
||||||
|
} else if (Arrays.asList(proxitok_instances).contains(domain)) {
|
||||||
|
AppInfo appInfo = new AppInfo();
|
||||||
|
appInfo.setTitle(getString(R.string.proxitok_instances));
|
||||||
|
appInfos.add(appInfo);
|
||||||
}
|
}
|
||||||
AppInfo appInfo = new AppInfo();
|
AppInfo appInfo = new AppInfo();
|
||||||
appInfo.setDomain(domain);
|
appInfo.setDomain(domain);
|
||||||
|
|
|
@ -67,6 +67,7 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
String tedditHost = sharedpreferences.getString(MainActivity.SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
|
String tedditHost = sharedpreferences.getString(MainActivity.SET_TEDDIT_HOST, MainActivity.DEFAULT_TEDDIT_HOST);
|
||||||
String scribeHost = sharedpreferences.getString(MainActivity.SET_SCRIBERIP_HOST, MainActivity.DEFAULT_SCRIBERIP_HOST);
|
String scribeHost = sharedpreferences.getString(MainActivity.SET_SCRIBERIP_HOST, MainActivity.DEFAULT_SCRIBERIP_HOST);
|
||||||
String wikilessHost = sharedpreferences.getString(MainActivity.SET_WIKILESS_HOST, MainActivity.DEFAULT_WIKILESS_HOST);
|
String wikilessHost = sharedpreferences.getString(MainActivity.SET_WIKILESS_HOST, MainActivity.DEFAULT_WIKILESS_HOST);
|
||||||
|
String proxitokHost = sharedpreferences.getString(MainActivity.SET_PROXITOK_HOST, MainActivity.DEFAULT_PROXITOK_HOST);
|
||||||
|
|
||||||
ArrayList<Instance> invidiousInstances = new ArrayList<>();
|
ArrayList<Instance> invidiousInstances = new ArrayList<>();
|
||||||
ArrayList<Instance> nitterInstances = new ArrayList<>();
|
ArrayList<Instance> nitterInstances = new ArrayList<>();
|
||||||
|
@ -74,6 +75,7 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
ArrayList<Instance> tedditInstances = new ArrayList<>();
|
ArrayList<Instance> tedditInstances = new ArrayList<>();
|
||||||
ArrayList<Instance> scribeInstances = new ArrayList<>();
|
ArrayList<Instance> scribeInstances = new ArrayList<>();
|
||||||
ArrayList<Instance> wikilessInstances = new ArrayList<>();
|
ArrayList<Instance> wikilessInstances = new ArrayList<>();
|
||||||
|
ArrayList<Instance> proxitokInstances = new ArrayList<>();
|
||||||
|
|
||||||
boolean customInvidiousInstance = true;
|
boolean customInvidiousInstance = true;
|
||||||
boolean customNitterInstance = true;
|
boolean customNitterInstance = true;
|
||||||
|
@ -81,6 +83,7 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
boolean customTedditInstance = true;
|
boolean customTedditInstance = true;
|
||||||
boolean customScribeInstance = true;
|
boolean customScribeInstance = true;
|
||||||
boolean customWikilessInstance = true;
|
boolean customWikilessInstance = true;
|
||||||
|
boolean customProxitokInstance = true;
|
||||||
|
|
||||||
for (Instance instance : result) {
|
for (Instance instance : result) {
|
||||||
if (instance.getInstanceType() == Instance.instanceType.YOUTUBE) {
|
if (instance.getInstanceType() == Instance.instanceType.YOUTUBE) {
|
||||||
|
@ -113,6 +116,11 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
if (wikilessHost != null && wikilessHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
|
if (wikilessHost != null && wikilessHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
|
||||||
customWikilessInstance = false;
|
customWikilessInstance = false;
|
||||||
}
|
}
|
||||||
|
} else if (instance.getInstanceType() == Instance.instanceType.PROXITOK) {
|
||||||
|
proxitokInstances.add(instance);
|
||||||
|
if (proxitokHost != null && proxitokHost.trim().toLowerCase().compareTo(instance.getDomain()) == 0) {
|
||||||
|
customProxitokInstance = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
List<String> defaultLocales = new ArrayList<>();
|
List<String> defaultLocales = new ArrayList<>();
|
||||||
|
@ -160,6 +168,13 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
instance.setLocales(defaultLocales);
|
instance.setLocales(defaultLocales);
|
||||||
wikilessInstances.add(0, instance);
|
wikilessInstances.add(0, instance);
|
||||||
}
|
}
|
||||||
|
if (customProxitokInstance) {
|
||||||
|
Instance instance = new Instance();
|
||||||
|
instance.setChecked(true);
|
||||||
|
instance.setDomain(proxitokHost);
|
||||||
|
instance.setLocales(defaultLocales);
|
||||||
|
proxitokInstances.add(0, instance);
|
||||||
|
}
|
||||||
binding.instanceContainer.setVisibility(View.VISIBLE);
|
binding.instanceContainer.setVisibility(View.VISIBLE);
|
||||||
binding.loader.setVisibility(View.GONE);
|
binding.loader.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
@ -202,11 +217,20 @@ public class InstanceActivity extends AppCompatActivity {
|
||||||
binding.wikilessInstances.setLayoutManager(wLayoutManager);
|
binding.wikilessInstances.setLayoutManager(wLayoutManager);
|
||||||
binding.wikilessInstances.setNestedScrollingEnabled(false);
|
binding.wikilessInstances.setNestedScrollingEnabled(false);
|
||||||
|
|
||||||
|
final LinearLayoutManager pLayoutManager = new LinearLayoutManager(this);
|
||||||
|
InstanceAdapter proxitokAdapter = new InstanceAdapter(proxitokInstances);
|
||||||
|
binding.proxitokInstances.setAdapter(proxitokAdapter);
|
||||||
|
binding.proxitokInstances.setLayoutManager(pLayoutManager);
|
||||||
|
binding.proxitokInstances.setNestedScrollingEnabled(false);
|
||||||
|
|
||||||
binding.latencyTest.setOnClickListener(v -> {
|
binding.latencyTest.setOnClickListener(v -> {
|
||||||
invidiousAdapter.evalLatency();
|
invidiousAdapter.evalLatency();
|
||||||
nitterAdapter.evalLatency();
|
nitterAdapter.evalLatency();
|
||||||
bibliogramAdapter.evalLatency();
|
bibliogramAdapter.evalLatency();
|
||||||
tedditAdapter.evalLatency();
|
tedditAdapter.evalLatency();
|
||||||
|
scribeAdapter.evalLatency();
|
||||||
|
wikilessAdapter.evalLatency();
|
||||||
|
proxitokAdapter.evalLatency();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@ package app.fedilab.nitterizeme.activities;
|
||||||
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
|
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
import static app.fedilab.nitterizeme.helpers.Utils.KILL_ACTIVITY;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
@ -40,8 +42,6 @@ import app.fedilab.nitterizeme.R;
|
||||||
import app.fedilab.nitterizeme.databinding.ActivityMainBinding;
|
import app.fedilab.nitterizeme.databinding.ActivityMainBinding;
|
||||||
import app.fedilab.nitterizeme.databinding.ContentMainBinding;
|
import app.fedilab.nitterizeme.databinding.ContentMainBinding;
|
||||||
|
|
||||||
import static app.fedilab.nitterizeme.helpers.Utils.KILL_ACTIVITY;
|
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
public static final String APP_PREFS = "app_prefs";
|
public static final String APP_PREFS = "app_prefs";
|
||||||
|
@ -52,6 +52,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host";
|
public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host";
|
||||||
public static final String SET_SCRIBERIP_HOST = "set_scriberip_host";
|
public static final String SET_SCRIBERIP_HOST = "set_scriberip_host";
|
||||||
public static final String SET_WIKILESS_HOST = "set_wikiless_host";
|
public static final String SET_WIKILESS_HOST = "set_wikiless_host";
|
||||||
|
public static final String SET_PROXITOK_HOST = "set_proxitok_host";
|
||||||
@SuppressWarnings({"unused", "RedundantSuppression"})
|
@SuppressWarnings({"unused", "RedundantSuppression"})
|
||||||
public static String TAG = "UntrackMe";
|
public static String TAG = "UntrackMe";
|
||||||
public static String DEFAULT_NITTER_HOST = "nitter.net";
|
public static String DEFAULT_NITTER_HOST = "nitter.net";
|
||||||
|
@ -62,12 +63,14 @@ public class MainActivity extends AppCompatActivity {
|
||||||
public static String SET_SCRIBERIP_ENABLED = "set_scriberip_enabled";
|
public static String SET_SCRIBERIP_ENABLED = "set_scriberip_enabled";
|
||||||
public static String SET_WIKILESS_ENABLED = "set_wikiless_enabled";
|
public static String SET_WIKILESS_ENABLED = "set_wikiless_enabled";
|
||||||
public static String SET_OSM_ENABLED = "set_osm_enabled";
|
public static String SET_OSM_ENABLED = "set_osm_enabled";
|
||||||
|
public static String SET_PROXITOK_ENABLED = "set_osm_enabled";
|
||||||
public static String DEFAULT_OSM_HOST = "www.openstreetmap.org";
|
public static String DEFAULT_OSM_HOST = "www.openstreetmap.org";
|
||||||
public static String SET_BIBLIOGRAM_ENABLED = "set_bibliogram_enabled";
|
public static String SET_BIBLIOGRAM_ENABLED = "set_bibliogram_enabled";
|
||||||
public static String DEFAULT_BIBLIOGRAM_HOST = "bibliogram.art";
|
public static String DEFAULT_BIBLIOGRAM_HOST = "bibliogram.art";
|
||||||
public static String DEFAULT_SCRIBERIP_HOST = "scribe.rip";
|
public static String DEFAULT_SCRIBERIP_HOST = "scribe.rip";
|
||||||
public static String DEFAULT_WIKILESS_HOST = "wikiless.org";
|
public static String DEFAULT_WIKILESS_HOST = "wikiless.org";
|
||||||
public static String DEFAULT_TEDDIT_HOST = "teddit.net";
|
public static String DEFAULT_TEDDIT_HOST = "teddit.net";
|
||||||
|
public static String DEFAULT_PROXITOK_HOST = "proxitok.herokuapp.com";
|
||||||
public static String SET_GEO_URIS = "set_geo_uris";
|
public static String SET_GEO_URIS = "set_geo_uris";
|
||||||
public static String SET_EMBEDDED_PLAYER = "set_embedded_player";
|
public static String SET_EMBEDDED_PLAYER = "set_embedded_player";
|
||||||
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
|
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
|
||||||
|
@ -88,6 +91,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
private String scriberipHost;
|
private String scriberipHost;
|
||||||
private String wikilessHost;
|
private String wikilessHost;
|
||||||
private String osmHost;
|
private String osmHost;
|
||||||
|
private String proxitokHost;
|
||||||
private ContentMainBinding binding;
|
private ContentMainBinding binding;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,6 +115,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
|
boolean teddit_enabled = sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
|
||||||
boolean scriberip_enabled = sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
|
boolean scriberip_enabled = sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
|
||||||
boolean wikiless_enabled = sharedpreferences.getBoolean(SET_WIKILESS_ENABLED, true);
|
boolean wikiless_enabled = sharedpreferences.getBoolean(SET_WIKILESS_ENABLED, true);
|
||||||
|
boolean proxitok_enabled = sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
|
||||||
boolean geouri_enabled = sharedpreferences.getBoolean(SET_GEO_URIS, false);
|
boolean geouri_enabled = sharedpreferences.getBoolean(SET_GEO_URIS, false);
|
||||||
boolean embedded_player = sharedpreferences.getBoolean(SET_EMBEDDED_PLAYER, false);
|
boolean embedded_player = sharedpreferences.getBoolean(SET_EMBEDDED_PLAYER, false);
|
||||||
|
|
||||||
|
@ -121,6 +126,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.enableScriberip.setChecked(scriberip_enabled);
|
binding.enableScriberip.setChecked(scriberip_enabled);
|
||||||
binding.enableWikiless.setChecked(wikiless_enabled);
|
binding.enableWikiless.setChecked(wikiless_enabled);
|
||||||
binding.enableOsm.setChecked(osm_enabled);
|
binding.enableOsm.setChecked(osm_enabled);
|
||||||
|
binding.enableProxitok.setChecked(proxitok_enabled);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -131,6 +137,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
|
scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
|
||||||
wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
|
wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
|
||||||
osmHost = sharedpreferences.getString(SET_OSM_HOST, null);
|
osmHost = sharedpreferences.getString(SET_OSM_HOST, null);
|
||||||
|
proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
|
||||||
|
|
||||||
binding.groupCurrentInvidious.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
|
binding.groupCurrentInvidious.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
|
||||||
binding.groupCurrentNitter.setVisibility(nitter_enabled ? View.VISIBLE : View.GONE);
|
binding.groupCurrentNitter.setVisibility(nitter_enabled ? View.VISIBLE : View.GONE);
|
||||||
|
@ -139,6 +146,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.groupCurrentScriberip.setVisibility(scriberip_enabled ? View.VISIBLE : View.GONE);
|
binding.groupCurrentScriberip.setVisibility(scriberip_enabled ? View.VISIBLE : View.GONE);
|
||||||
binding.groupCurrentWikiless.setVisibility(wikiless_enabled ? View.VISIBLE : View.GONE);
|
binding.groupCurrentWikiless.setVisibility(wikiless_enabled ? View.VISIBLE : View.GONE);
|
||||||
binding.groupCurrentOsm.setVisibility((osm_enabled && geouri_enabled) ? View.VISIBLE : View.GONE);
|
binding.groupCurrentOsm.setVisibility((osm_enabled && geouri_enabled) ? View.VISIBLE : View.GONE);
|
||||||
|
binding.groupCurrentProxitok.setVisibility(proxitok_enabled ? View.VISIBLE : View.GONE);
|
||||||
binding.enableGeoUris.setVisibility(osm_enabled ? View.VISIBLE : View.GONE);
|
binding.enableGeoUris.setVisibility(osm_enabled ? View.VISIBLE : View.GONE);
|
||||||
binding.enableEmbedPlayer.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
|
binding.enableEmbedPlayer.setVisibility(invidious_enabled ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
|
@ -210,6 +218,14 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.groupCurrentOsm.setVisibility(View.GONE);
|
binding.groupCurrentOsm.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
binding.enableProxitok.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putBoolean(SET_PROXITOK_ENABLED, isChecked);
|
||||||
|
editor.apply();
|
||||||
|
binding.groupCurrentProxitok.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
||||||
|
binding.groupCustomProxitok.setVisibility(View.GONE);
|
||||||
|
binding.buttonExpandInstanceProxitok.setRotation(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
binding.buttonExpandInstanceNitter.setOnClickListener(v -> {
|
binding.buttonExpandInstanceNitter.setOnClickListener(v -> {
|
||||||
|
@ -323,6 +339,22 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.osmInstance.setText("");
|
binding.osmInstance.setText("");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
binding.buttonExpandInstanceProxitok.setOnClickListener(v -> {
|
||||||
|
boolean custom_instance_visibility = binding.groupCustomProxitok.getVisibility() == View.VISIBLE;
|
||||||
|
if (custom_instance_visibility) {
|
||||||
|
binding.buttonExpandInstanceProxitok.setRotation(0f);
|
||||||
|
binding.groupCustomProxitok.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
binding.buttonExpandInstanceProxitok.setRotation(180f);
|
||||||
|
binding.groupCustomProxitok.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (proxitokHost != null) {
|
||||||
|
binding.proxitokInstance.setText(proxitokHost);
|
||||||
|
} else {
|
||||||
|
binding.proxitokInstance.setText("");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
if (nitterHost != null) {
|
if (nitterHost != null) {
|
||||||
|
@ -376,6 +408,12 @@ public class MainActivity extends AppCompatActivity {
|
||||||
} else {
|
} else {
|
||||||
binding.groupCustomOsm.setVisibility(View.GONE);
|
binding.groupCustomOsm.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
if (proxitokHost != null) {
|
||||||
|
binding.proxitokInstance.setText(proxitokHost);
|
||||||
|
binding.currentInstanceProxitok.setText(proxitokHost);
|
||||||
|
} else {
|
||||||
|
binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
|
||||||
|
}
|
||||||
|
|
||||||
binding.enableEmbedPlayer.setChecked(embedded_player);
|
binding.enableEmbedPlayer.setChecked(embedded_player);
|
||||||
binding.buttonSaveInstanceNitter.setOnClickListener(v -> {
|
binding.buttonSaveInstanceNitter.setOnClickListener(v -> {
|
||||||
|
@ -461,6 +499,18 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
editor.apply();
|
editor.apply();
|
||||||
});
|
});
|
||||||
|
binding.buttonSaveInstanceProxitok.setOnClickListener(v -> {
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
if (binding.proxitokInstance.getText() != null && binding.proxitokInstance.getText().toString().trim().length() > 0) {
|
||||||
|
String custom_instance = binding.proxitokInstance.getText().toString().toLowerCase().trim();
|
||||||
|
editor.putString(SET_PROXITOK_HOST, custom_instance);
|
||||||
|
binding.currentInstanceProxitok.setText(custom_instance);
|
||||||
|
} else {
|
||||||
|
editor.putString(SET_PROXITOK_HOST, null);
|
||||||
|
binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
|
||||||
|
}
|
||||||
|
editor.apply();
|
||||||
|
});
|
||||||
|
|
||||||
binding.configure.setOnClickListener(v -> {
|
binding.configure.setOnClickListener(v -> {
|
||||||
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||||
|
@ -566,9 +616,18 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.currentInstanceOsm.setText(DEFAULT_OSM_HOST);
|
binding.currentInstanceOsm.setText(DEFAULT_OSM_HOST);
|
||||||
binding.buttonExpandInstanceOsm.setRotation(0f);
|
binding.buttonExpandInstanceOsm.setRotation(0f);
|
||||||
break;
|
break;
|
||||||
|
case SET_PROXITOK_HOST:
|
||||||
|
proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
|
||||||
|
binding.groupCustomProxitok.setVisibility(View.GONE);
|
||||||
|
if (proxitokHost != null && proxitokHost.trim().length() > 0)
|
||||||
|
binding.currentInstanceProxitok.setText(proxitokHost);
|
||||||
|
else
|
||||||
|
binding.currentInstanceProxitok.setText(DEFAULT_PROXITOK_HOST);
|
||||||
|
binding.buttonExpandInstanceProxitok.setRotation(0f);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
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)) {
|
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) || key.equals(SET_PROXITOK_HOST)) {
|
||||||
View parentLayout = findViewById(android.R.id.content);
|
View parentLayout = findViewById(android.R.id.content);
|
||||||
Snackbar.make(parentLayout, R.string.instances_saved, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(parentLayout, R.string.instances_saved, Snackbar.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
|
@ -632,6 +691,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
|
String tedditHost = sharedpreferences.getString(SET_TEDDIT_HOST, null);
|
||||||
String scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
|
String scriberipHost = sharedpreferences.getString(SET_SCRIBERIP_HOST, null);
|
||||||
String wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
|
String wikilessHost = sharedpreferences.getString(SET_WIKILESS_HOST, null);
|
||||||
|
String proxitokHost = sharedpreferences.getString(SET_PROXITOK_HOST, null);
|
||||||
if (nitterHost != null) {
|
if (nitterHost != null) {
|
||||||
binding.nitterInstance.setText(nitterHost);
|
binding.nitterInstance.setText(nitterHost);
|
||||||
binding.currentInstanceNitter.setText(nitterHost);
|
binding.currentInstanceNitter.setText(nitterHost);
|
||||||
|
@ -656,6 +716,10 @@ public class MainActivity extends AppCompatActivity {
|
||||||
binding.wikilessInstance.setText(wikilessHost);
|
binding.wikilessInstance.setText(wikilessHost);
|
||||||
binding.currentInstanceWikiless.setText(wikilessHost);
|
binding.currentInstanceWikiless.setText(wikilessHost);
|
||||||
}
|
}
|
||||||
|
if (proxitokHost != null) {
|
||||||
|
binding.proxitokInstance.setText(proxitokHost);
|
||||||
|
binding.currentInstanceProxitok.setText(proxitokHost);
|
||||||
|
}
|
||||||
if (BuildConfig.fullLinks) {
|
if (BuildConfig.fullLinks) {
|
||||||
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse("https://fedilab.app")), PackageManager.MATCH_DEFAULT_ONLY);
|
List<ResolveInfo> resolveInfos = getPackageManager().queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse("https://fedilab.app")), PackageManager.MATCH_DEFAULT_ONLY);
|
||||||
String thisPackageName = getApplicationContext().getPackageName();
|
String thisPackageName = getApplicationContext().getPackageName();
|
||||||
|
|
|
@ -14,6 +14,15 @@ package app.fedilab.nitterizeme.adapters;
|
||||||
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
|
* You should have received a copy of the GNU General Public License along with UntrackMe; if not,
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.APP_PREFS;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_PROXITOK_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_HOST;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
@ -35,14 +44,6 @@ import app.fedilab.nitterizeme.databinding.DrawerInstanceBinding;
|
||||||
import app.fedilab.nitterizeme.entities.Instance;
|
import app.fedilab.nitterizeme.entities.Instance;
|
||||||
import app.fedilab.nitterizeme.helpers.Utils;
|
import app.fedilab.nitterizeme.helpers.Utils;
|
||||||
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.APP_PREFS;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_INVIDIOUS_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_NITTER_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_HOST;
|
|
||||||
|
|
||||||
|
|
||||||
public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
|
@ -165,6 +166,14 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||||
}
|
}
|
||||||
editor.apply();
|
editor.apply();
|
||||||
break;
|
break;
|
||||||
|
case PROXITOK:
|
||||||
|
if (isChecked) {
|
||||||
|
editor.putString(SET_PROXITOK_HOST, instance.getDomain().trim());
|
||||||
|
} else {
|
||||||
|
editor.putString(SET_PROXITOK_HOST, null);
|
||||||
|
}
|
||||||
|
editor.apply();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
instanceAdapter.notifyItemRangeChanged(0, instances.size());
|
instanceAdapter.notifyItemRangeChanged(0, instances.size());
|
||||||
|
|
|
@ -90,6 +90,7 @@ public class Instance {
|
||||||
INSTAGRAM,
|
INSTAGRAM,
|
||||||
REDDIT,
|
REDDIT,
|
||||||
MEDIUM,
|
MEDIUM,
|
||||||
WIKIPEDIA
|
WIKIPEDIA,
|
||||||
|
PROXITOK
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,29 @@ package app.fedilab.nitterizeme.helpers;
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
|
|
||||||
|
import static android.content.Context.DOWNLOAD_SERVICE;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.bibliogram_instances;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_domains;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.medium_domains;
|
||||||
|
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.tiktok_domains;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.twitter_domains;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.wikipedia_domains;
|
||||||
|
import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENABLED;
|
||||||
|
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_PROXITOK_ENABLED;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_SCRIBERIP_ENABLED;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
|
||||||
|
import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_ENABLED;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.DownloadManager;
|
import android.app.DownloadManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
|
@ -78,27 +101,6 @@ import app.fedilab.nitterizeme.activities.AppsPickerActivity;
|
||||||
import app.fedilab.nitterizeme.activities.MainActivity;
|
import app.fedilab.nitterizeme.activities.MainActivity;
|
||||||
import app.fedilab.nitterizeme.activities.WebviewPlayerActivity;
|
import app.fedilab.nitterizeme.activities.WebviewPlayerActivity;
|
||||||
|
|
||||||
import static android.content.Context.DOWNLOAD_SERVICE;
|
|
||||||
import static app.fedilab.nitterizeme.activities.CheckAppActivity.bibliogram_instances;
|
|
||||||
import static app.fedilab.nitterizeme.activities.CheckAppActivity.instagram_domains;
|
|
||||||
import static app.fedilab.nitterizeme.activities.CheckAppActivity.invidious_instances;
|
|
||||||
import static app.fedilab.nitterizeme.activities.CheckAppActivity.medium_domains;
|
|
||||||
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.wikipedia_domains;
|
|
||||||
import static app.fedilab.nitterizeme.activities.CheckAppActivity.youtube_domains;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_BIBLIOGRAM_ENABLED;
|
|
||||||
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_SCRIBERIP_ENABLED;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_ENABLED;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_TEDDIT_HOST;
|
|
||||||
import static app.fedilab.nitterizeme.activities.MainActivity.SET_WIKILESS_ENABLED;
|
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
|
|
||||||
public static final String KILL_ACTIVITY = "kill_activity";
|
public static final String KILL_ACTIVITY = "kill_activity";
|
||||||
|
@ -112,7 +114,7 @@ public class Utils {
|
||||||
public static final Pattern scriberipPattern = Pattern.compile("(www\\.)?medium.com/(((?!([\"'<])).)*)");
|
public static final Pattern scriberipPattern = Pattern.compile("(www\\.)?medium.com/(((?!([\"'<])).)*)");
|
||||||
public static final Pattern scriberipSubdomainPattern = Pattern.compile("([\\w_-]+)\\.medium.com/(((?!([\"'<])).)*)");
|
public static final Pattern scriberipSubdomainPattern = Pattern.compile("([\\w_-]+)\\.medium.com/(((?!([\"'<])).)*)");
|
||||||
|
|
||||||
|
public static final Pattern tiktokPattern = Pattern.compile("(www\\.|us\\.)?tiktok.com/(((?!([\"'<])).)*)");
|
||||||
public static final Pattern wikilessPattern = Pattern.compile("([\\w_-]+)\\.(?:m\\.)?wikipedia.org/(((?!([\"'<])).)*)");
|
public static final Pattern wikilessPattern = Pattern.compile("([\\w_-]+)\\.(?:m\\.)?wikipedia.org/(((?!([\"'<])).)*)");
|
||||||
|
|
||||||
public static final Pattern bibliogramAccountPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(((?!/p/).)+)");
|
public static final Pattern bibliogramAccountPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(((?!/p/).)+)");
|
||||||
|
@ -466,6 +468,26 @@ public class Utils {
|
||||||
} else {
|
} else {
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
} else if (host != null && Arrays.asList(tiktok_domains).contains(host)) {
|
||||||
|
boolean proxitok_enabled = sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
|
||||||
|
if (proxitok_enabled) {
|
||||||
|
String proxitokHost = sharedpreferences.getString(MainActivity.SET_PROXITOK_HOST, MainActivity.DEFAULT_PROXITOK_HOST);
|
||||||
|
assert proxitokHost != null;
|
||||||
|
proxitokHost = proxitokHost.toLowerCase();
|
||||||
|
Matcher matcher = tiktokPattern.matcher(url);
|
||||||
|
while (matcher.find()) {
|
||||||
|
String path = matcher.group(2);
|
||||||
|
if (path == null || path.trim().equals("") || path.startsWith("@") || path.startsWith("music") || path.startsWith("tag")) {
|
||||||
|
newUrl = url.replace(host, proxitokHost);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (newUrl == null) {
|
||||||
|
newUrl = url;
|
||||||
|
}
|
||||||
|
return newUrl;
|
||||||
|
} else {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
} else if (Arrays.asList(invidious_instances).contains(host)) {
|
} else if (Arrays.asList(invidious_instances).contains(host)) {
|
||||||
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
|
boolean invidious_enabled = sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
|
||||||
newUrl = url;
|
newUrl = url;
|
||||||
|
@ -1257,7 +1279,8 @@ public class Utils {
|
||||||
|| Arrays.asList(instagram_domains).contains(host) || Arrays.asList(bibliogram_instances).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))
|
|| 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)
|
|| Arrays.asList(youtube_domains).contains(host) || Arrays.asList(invidious_instances).contains(host)
|
||||||
|| (host != null && host.endsWith(medium_domains[0]) || (host != null && host.endsWith(wikipedia_domains[0])));
|
|| Arrays.asList(tiktok_domains).contains(host) || (host != null && host.endsWith(medium_domains[0])
|
||||||
|
|| (host != null && host.endsWith(wikipedia_domains[0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean routerEnabledForHost(Context context, String url) {
|
public static boolean routerEnabledForHost(Context context, String url) {
|
||||||
|
@ -1281,6 +1304,8 @@ public class Utils {
|
||||||
return sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
|
return sharedpreferences.getBoolean(SET_INVIDIOUS_ENABLED, true);
|
||||||
} else if (Arrays.asList(reddit_domains).contains(host)) {
|
} else if (Arrays.asList(reddit_domains).contains(host)) {
|
||||||
return sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
|
return sharedpreferences.getBoolean(SET_TEDDIT_ENABLED, true);
|
||||||
|
} else if (Arrays.asList(tiktok_domains).contains(host)) {
|
||||||
|
return sharedpreferences.getBoolean(SET_PROXITOK_ENABLED, true);
|
||||||
} else if (host != null && host.endsWith(medium_domains[0])) {
|
} else if (host != null && host.endsWith(medium_domains[0])) {
|
||||||
return sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
|
return sharedpreferences.getBoolean(SET_SCRIBERIP_ENABLED, true);
|
||||||
} else if (host != null && host.endsWith(wikipedia_domains[0])) {
|
} else if (host != null && host.endsWith(wikipedia_domains[0])) {
|
||||||
|
|
|
@ -102,6 +102,19 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:text="@string/proxitok_instances"
|
||||||
|
android:textColor="@color/colorAccent"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/proxitok_instances"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
|
@ -916,7 +916,7 @@
|
||||||
style="@style/containerCard"
|
style="@style/containerCard"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintBottom_toTopOf="@id/buttons_container"
|
app:layout_constraintBottom_toTopOf="@id/proxitok_container"
|
||||||
app:layout_constraintTop_toBottomOf="@id/teddit_container">
|
app:layout_constraintTop_toBottomOf="@id/teddit_container">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
@ -1070,13 +1070,155 @@
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
<androidx.cardview.widget.CardView
|
||||||
|
android:id="@+id/proxitok_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/osm_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_proxitok"
|
||||||
|
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_proxitok"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:background="@color/topBar"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/guide_proxitok"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/proxitok_indications"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:text="@string/redirect_tiktok_to_proxitok"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/guide_proxitok"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/enable_proxitok"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.SwitchCompat
|
||||||
|
android:id="@+id/enable_proxitok"
|
||||||
|
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_proxitok"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/button_expand_instance_proxitok"
|
||||||
|
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_proxitok" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_instance_proxitok"
|
||||||
|
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_proxitok"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/guide_proxitok" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/current_instance_proxitok"
|
||||||
|
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_proxitok"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/guide_proxitok" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Barrier
|
||||||
|
android:id="@+id/barrier_proxitok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:barrierDirection="bottom"
|
||||||
|
app:constraint_referenced_ids="label_instance_proxitok,current_instance_proxitok,button_expand_instance_proxitok" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/proxitok_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_proxitok"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/barrier_proxitok">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:id="@+id/proxitok_instance"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="@string/custom_proxitok"
|
||||||
|
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_proxitok"
|
||||||
|
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_proxitok" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Group
|
||||||
|
android:id="@+id/group_current_proxitok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="label_instance_proxitok,current_instance_proxitok,button_expand_instance_proxitok" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Group
|
||||||
|
android:id="@+id/group_custom_proxitok"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:constraint_referenced_ids="proxitok_instance_container,button_save_instance_proxitok" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/buttons_container"
|
android:id="@+id/buttons_container"
|
||||||
style="@style/containerCard"
|
style="@style/containerCard"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toBottomOf="@id/osm_container">
|
app:layout_constraintTop_toBottomOf="@id/proxitok_container">
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/configure"
|
android:id="@+id/configure"
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
<string name="custom_osm">Custom OSM hostname</string>
|
<string name="custom_osm">Custom OSM hostname</string>
|
||||||
<string name="redirect_youtube_to_invidious">Redirect YouTube to Invidious</string>
|
<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_twitter_to_nitter">Redirect Twitter to Nitter</string>
|
||||||
|
<string name="redirect_tiktok_to_proxitok">Redirect TikTok to ProxiTok</string>
|
||||||
<string name="redirect_instagram_to_bibliogram">Redirect Instagram to Bibliogram</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="redirect_reddit_to_teddit">Redirect Reddit to Teddit</string>
|
||||||
<string name="redirect_medium_to_scriberip">Redirect Medium to Scribe.rip</string>
|
<string name="redirect_medium_to_scriberip">Redirect Medium to Scribe.rip</string>
|
||||||
|
@ -52,6 +53,7 @@
|
||||||
<string name="custom_scriberip">Custom Scribe.rip instance</string>
|
<string name="custom_scriberip">Custom Scribe.rip instance</string>
|
||||||
<string name="custom_wikiless">Custom Wikiless instance</string>
|
<string name="custom_wikiless">Custom Wikiless instance</string>
|
||||||
<string name="custom_teddit">Custom Teddit instance</string>
|
<string name="custom_teddit">Custom Teddit instance</string>
|
||||||
|
<string name="custom_proxitok">Custom ProxiTok instance</string>
|
||||||
<string name="redirect_gm_to_geo_uri">Redirect Google Map to Geo URI</string>
|
<string name="redirect_gm_to_geo_uri">Redirect Google Map to Geo URI</string>
|
||||||
<string name="configure">Configure</string>
|
<string name="configure">Configure</string>
|
||||||
<string name="display_supported_links">Display supported links</string>
|
<string name="display_supported_links">Display supported links</string>
|
||||||
|
@ -71,6 +73,7 @@
|
||||||
<string name="teddit_instances">Teddit instances</string>
|
<string name="teddit_instances">Teddit instances</string>
|
||||||
<string name="scribe_instances">Scribe instances</string>
|
<string name="scribe_instances">Scribe instances</string>
|
||||||
<string name="wikiless_instances">Wikiless instances</string>
|
<string name="wikiless_instances">Wikiless instances</string>
|
||||||
|
<string name="proxitok_instances">ProxiTok instances</string>
|
||||||
<string name="latency">Latency</string>
|
<string name="latency">Latency</string>
|
||||||
<string name="error_message_internet">Check your Internet connection</string>
|
<string name="error_message_internet">Check your Internet connection</string>
|
||||||
<string name="instance_label">Instance:</string>
|
<string name="instance_label">Instance:</string>
|
||||||
|
|
Loading…
Reference in New Issue