diff --git a/app/src/lite/java/app/fedilab/android/activities/SettingsActivity.java b/app/src/lite/java/app/fedilab/android/activities/SettingsActivity.java
index 00dbbd749..397fc7a93 100644
--- a/app/src/lite/java/app/fedilab/android/activities/SettingsActivity.java
+++ b/app/src/lite/java/app/fedilab/android/activities/SettingsActivity.java
@@ -229,6 +229,34 @@ public class SettingsActivity extends BaseActivity {
}
});
+ TextView set_libreddit_host = findViewById(R.id.set_libreddit_host);
+
+ String libredditHost = sharedpreferences.getString(Helper.SET_LIBREDDIT_HOST, null);
+ if (libredditHost != null) {
+ set_libreddit_host.setText(libredditHost);
+ }
+ set_libreddit_host.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ if (s.toString().trim().length() > 0) {
+ editor.putString(Helper.SET_LIBREDDIT_HOST, s.toString().toLowerCase().trim());
+ } else {
+ editor.putString(Helper.SET_LIBREDDIT_HOST, null);
+ }
+ editor.apply();
+ }
+ });
boolean expand_cw = sharedpreferences.getBoolean(Helper.SET_EXPAND_CW, false);
final SwitchCompat set_expand_cw = findViewById(R.id.set_expand_cw);
diff --git a/app/src/lite/res/layout/activity_settings.xml b/app/src/lite/res/layout/activity_settings.xml
index 8eecbfbad..26ad5f77e 100644
--- a/app/src/lite/res/layout/activity_settings.xml
+++ b/app/src/lite/res/layout/activity_settings.xml
@@ -615,5 +615,19 @@
android:hint="@string/set_bibliogram_host"
android:inputType="textWebEditText" />
+
+
+
+
diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java
index 282e925d5..55a546dd2 100644
--- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java
+++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java
@@ -317,6 +317,17 @@ public class Status implements Parcelable {
}
}
+ matcher = Helper.libredditPattern.matcher(content);
+ boolean libreddit = Helper.getSharedValue(context, Helper.SET_LIBREDDIT);
+ if (libreddit) {
+ while (matcher.find()) {
+ final String libreddit_directory = matcher.group(3);
+ String libreddit_host = sharedpreferences.getString(Helper.SET_LIBREDDIT_HOST, Helper.DEFAULT_LIBREDDIT_HOST).toLowerCase();
+ content = content.replaceAll("https://" + Pattern.quote(matcher.group()), Matcher.quoteReplacement("https://" + libreddit_host +"/"+ libreddit_directory));
+ content = content.replaceAll(">" + Pattern.quote(matcher.group()), Matcher.quoteReplacement(">" + libreddit_host +"/"+ libreddit_directory));
+ }
+ }
+
matcher = Helper.ouichesPattern.matcher(content);
while (matcher.find()) {
diff --git a/app/src/main/java/app/fedilab/android/drawers/BaseStatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/BaseStatusListAdapter.java
index 6b42a2434..f4106d6f3 100644
--- a/app/src/main/java/app/fedilab/android/drawers/BaseStatusListAdapter.java
+++ b/app/src/main/java/app/fedilab/android/drawers/BaseStatusListAdapter.java
@@ -2131,6 +2131,15 @@ public abstract class BaseStatusListAdapter extends RecyclerView.Adapter {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putBoolean(Helper.SET_LIBREDDIT, set_libreddit.isChecked());
+ editor.apply();
+ if (set_libreddit.isChecked()) {
+ set_libreddit_host.setVisibility(View.VISIBLE);
+ } else {
+ set_libreddit_host.setVisibility(View.GONE);
+ }
+ });
+ if (libreddit) {
+ set_libreddit_host.setVisibility(View.VISIBLE);
+ } else {
+ set_libreddit_host.setVisibility(View.GONE);
+ }
+
+ String libredditHost = sharedpreferences.getString(Helper.SET_LIBREDDIT_HOST, null);
+ if (libredditHost != null) {
+ set_libreddit_host.setText(libredditHost);
+ }
+ set_libreddit_host.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ if (s.toString().trim().length() > 0) {
+ editor.putString(Helper.SET_LIBREDDIT_HOST, s.toString().toLowerCase().trim());
+ } else {
+ editor.putString(Helper.SET_LIBREDDIT_HOST, null);
+ }
+ editor.apply();
+ }
+ });
} else if (type == MENU) {
rootView = inflater.inflate(R.layout.fragment_settings_menu, container, false);
diff --git a/app/src/main/java/app/fedilab/android/helper/BaseHelper.java b/app/src/main/java/app/fedilab/android/helper/BaseHelper.java
index e7cdb0209..0bb588585 100644
--- a/app/src/main/java/app/fedilab/android/helper/BaseHelper.java
+++ b/app/src/main/java/app/fedilab/android/helper/BaseHelper.java
@@ -450,6 +450,10 @@ public class BaseHelper {
public static final String SET_BIBLIOGRAM_HOST = "set_bibliogram_host";
public static final String DEFAULT_BIBLIOGRAM_HOST = "bibliogram.art";
+ public static final String SET_LIBREDDIT = "set_libreddit";
+ public static final String SET_LIBREDDIT_HOST = "set_libreddit_host";
+ public static final String DEFAULT_LIBREDDIT_HOST = "libredd.it";
+
public static final String SET_NOTIF_VALIDATION = "set_share_validation";
public static final String SET_NOTIF_VALIDATION_FAV = "set_share_validation_fav";
public static final String SET_WIFI_ONLY = "set_wifi_only";
@@ -531,6 +535,7 @@ public class BaseHelper {
public static final Pattern youtubePattern = Pattern.compile("(www\\.|m\\.)?(youtube\\.com|youtu\\.be|youtube-nocookie\\.com)/(((?!([\"'<])).)*)");
public static final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)");
public static final Pattern bibliogramPattern = Pattern.compile("(m\\.|www\\.)?instagram.com(/p/[\\w-/]+)");
+ public static final Pattern libredditPattern = Pattern.compile("(www\\.|m\\.)?(reddit\\.com|preview\\.redd\\.it|i\\.redd\\.it|redd\\.it)/(((?!([\"'<])).)*)");
public static final Pattern ouichesPattern = Pattern.compile("https?://ouich\\.es/tag/(\\w+)");
public static final Pattern xmppPattern = Pattern.compile("xmpp:[-a-zA-Z0-9+$&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
//Default values
diff --git a/app/src/main/res/layout/fragment_settings_privacy.xml b/app/src/main/res/layout/fragment_settings_privacy.xml
index b2cc7b203..2290a9b88 100644
--- a/app/src/main/res/layout/fragment_settings_privacy.xml
+++ b/app/src/main/res/layout/fragment_settings_privacy.xml
@@ -178,6 +178,51 @@
android:ellipsize="end"
android:hint="@string/set_bibliogram_host"
android:inputType="textWebEditText" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Bibliogram is an open source alternative Instagram front-end focused on privacy.
Enter your custom host or leave blank for using bibliogram.art
+ Replace Reddit with Libreddit
+ Libreddit is an open source alternative Reddit front-end focused on privacy.
+ Enter your custom host or leave blank for using libredd.it
+
Hide Fedilab notification bar
For hiding the remaining notification in the status bar, tap on the eye icon button then uncheck: \"Display in status bar\"
Notifications will be delayed every 30 seconds. That will allow to drain less battery.