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