diff --git a/app/src/dummy/java/eu/faircode/email/FFSend.java b/app/src/dummy/java/eu/faircode/email/FFSend.java
index 19a8b1e651..c74f8153ec 100644
--- a/app/src/dummy/java/eu/faircode/email/FFSend.java
+++ b/app/src/dummy/java/eu/faircode/email/FFSend.java
@@ -10,7 +10,7 @@ public class FFSend {
static final String FF_DEFAULT_SERVER = "";
static final String FF_INSTANCES = "";
- public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String server) {
+ public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host) {
return null;
}
}
diff --git a/app/src/extra/java/eu/faircode/email/FFSend.java b/app/src/extra/java/eu/faircode/email/FFSend.java
index b5665dab47..e89a3f7811 100644
--- a/app/src/extra/java/eu/faircode/email/FFSend.java
+++ b/app/src/extra/java/eu/faircode/email/FFSend.java
@@ -56,7 +56,7 @@ public class FFSend {
private static final int FF_TIMEOUT = 20 * 1000;
- public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String server) throws Throwable {
+ public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host) throws Throwable {
String result;
SecureRandom rnd = new SecureRandom();
@@ -65,7 +65,7 @@ public class FFSend {
JSONObject jupload = getMetadata(dfile, dLimit, timeLimit, secret);
- Uri uri = Uri.parse("wss://" + Uri.parse(server).getHost() + "/api/ws");
+ Uri uri = Uri.parse("wss://" + Uri.parse(host).getHost() + "/api/ws");
WebSocket ws = new WebSocketFactory().createSocket(uri.toString(), FF_TIMEOUT);
diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java
index 538e2f1107..d2a89ac60b 100644
--- a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java
+++ b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java
@@ -102,6 +102,9 @@ public class FragmentDialogInsertLink extends FragmentDialogBase {
sbTLimit = view.findViewById(R.id.sbTLimit);
Group grpUpload = view.findViewById(R.id.grpUpload);
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ boolean ffsend_enabled = prefs.getBoolean("ffsend_enabled", false);
+
etLink.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -306,7 +309,8 @@ public class FragmentDialogInsertLink extends FragmentDialogBase {
pbWait.setVisibility(View.GONE);
pbUpload.setVisibility(View.GONE);
- grpUpload.setVisibility(BuildConfig.PLAY_STORE_RELEASE ? View.GONE : View.VISIBLE);
+ grpUpload.setVisibility(ffsend_enabled && !BuildConfig.PLAY_STORE_RELEASE
+ ? View.VISIBLE : View.GONE);
return new AlertDialog.Builder(context)
.setView(view)
@@ -391,11 +395,11 @@ public class FragmentDialogInsertLink extends FragmentDialogBase {
args.putString("title", dfile.getName());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
- String server = prefs.getString("ff_send", FFSend.FF_DEFAULT_SERVER);
+ String ffsend_host = prefs.getString("ffsend_host", FFSend.FF_DEFAULT_SERVER);
ContentResolver resolver = context.getContentResolver();
try (InputStream is = resolver.openInputStream(uri)) {
- return FFSend.upload(is, dfile, dlimit, tlimit * 60 * 60, server);
+ return FFSend.upload(is, dfile, dlimit, tlimit * 60 * 60, ffsend_host);
}
}
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index b2c9aac679..68b680fed3 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -126,6 +126,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private TextView tvVirusTotalPrivacy;
private EditText etVirusTotal;
private ImageButton ibVirusTotal;
+ private SwitchCompat swFFSend;
private EditText etFFSend;
private ImageButton ibFFSend;
private SwitchCompat swUpdates;
@@ -229,7 +230,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
private final static String[] RESET_OPTIONS = new String[]{
"sort_answers", "shortcuts", "fts",
"classification", "class_min_probability", "class_min_difference",
- "language", "lt_enabled", "deepl_enabled", "vt_enabled", "vt_apikey", "ff_send",
+ "language", "lt_enabled", "deepl_enabled", "vt_enabled", "vt_apikey", "ffsend_enabled", "ffsend_host",
"updates", "weekly", "show_changelog",
"crash_reports", "cleanup_attachments",
"watchdog", "experiments", "main_log", "protocol", "log_level", "debug", "leak_canary",
@@ -320,6 +321,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
tvVirusTotalPrivacy = view.findViewById(R.id.tvVirusTotalPrivacy);
etVirusTotal = view.findViewById(R.id.etVirusTotal);
ibVirusTotal = view.findViewById(R.id.ibVirusTotal);
+ swFFSend = view.findViewById(R.id.swFFSend);
etFFSend = view.findViewById(R.id.etFFSend);
ibFFSend = view.findViewById(R.id.ibFFSend);
swUpdates = view.findViewById(R.id.swUpdates);
@@ -695,6 +697,13 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
}
});
+ swFFSend.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ prefs.edit().putBoolean("ffsend_enabled", checked).apply();
+ }
+ });
+
etFFSend.setHint(FFSend.FF_DEFAULT_SERVER);
etFFSend.addTextChangedListener(new TextWatcher() {
@Override
@@ -711,9 +720,9 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
public void afterTextChanged(Editable s) {
String apikey = s.toString().trim();
if (TextUtils.isEmpty(apikey))
- prefs.edit().remove("ff_send").apply();
+ prefs.edit().remove("ffsend_host").apply();
else
- prefs.edit().putString("ff_send", apikey).apply();
+ prefs.edit().putString("ffsend_host", apikey).apply();
}
});
@@ -1742,7 +1751,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
if ("last_cleanup".equals(key))
setLastCleanup(prefs.getLong(key, -1));
- if ("vt_apikey".equals(key) || "ff_send".equals(key))
+ if ("vt_apikey".equals(key) || "ffsend_host".equals(key))
return;
setOptions();
@@ -1889,7 +1898,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
swDeepL.setChecked(prefs.getBoolean("deepl_enabled", false));
swVirusTotal.setChecked(prefs.getBoolean("vt_enabled", false));
etVirusTotal.setText(prefs.getString("vt_apikey", null));
- etFFSend.setText(prefs.getString("ff_send", null));
+ swFFSend.setChecked(prefs.getBoolean("ffsend_enabled", false));
+ etFFSend.setText(prefs.getString("ffsend_host", null));
swUpdates.setChecked(prefs.getBoolean("updates", true));
swCheckWeekly.setChecked(prefs.getBoolean("weekly", Helper.hasPlayStore(getContext())));
swCheckWeekly.setEnabled(swUpdates.isChecked());
diff --git a/app/src/main/res/layout/fragment_options_misc.xml b/app/src/main/res/layout/fragment_options_misc.xml
index d0e033778d..c4fd02e57a 100644
--- a/app/src/main/res/layout/fragment_options_misc.xml
+++ b/app/src/main/res/layout/fragment_options_misc.xml
@@ -359,7 +359,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
- android:checked="true"
android:text="@string/title_advanced_deepl"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -439,18 +438,16 @@
app:layout_constraintTop_toBottomOf="@id/etVirusTotal"
app:srcCompat="@drawable/twotone_info_24" />
-
+ app:layout_constraintTop_toBottomOf="@id/ibVirusTotal"
+ app:switchPadding="12dp" />
+ app:layout_constraintTop_toBottomOf="@id/swFFSend" />
+ app:constraint_referenced_ids="swFFSend,etFFSend,ibFFSend" />
LanguageTool integration
DeepL integration
VirusTotal integration
+ FFSend integration
FFSend server
I want to use an sdcard
Periodically check if FairEmail is still active