From 0772f47b13f6b144a76a8d0b9b3f54f78feb5bff Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 13 Dec 2022 18:01:14 +0100 Subject: [PATCH] Release 3.11.0 --- app/build.gradle | 4 +- app/src/main/assets/release_notes/notes.json | 5 ++ .../android/ui/drawer/ComposeAdapter.java | 59 ++++++++++++++--- .../android/ui/drawer/StatusAdapter.java | 66 +++++++++++-------- .../metadata/android/en/changelogs/446.txt | 18 +++++ 5 files changed, 113 insertions(+), 39 deletions(-) create mode 100644 src/fdroid/fastlane/metadata/android/en/changelogs/446.txt diff --git a/app/build.gradle b/app/build.gradle index 7e631fb5..d22d76ee 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,8 @@ android { defaultConfig { minSdk 21 targetSdk 32 - versionCode 445 - versionName "3.10.2" + versionCode 446 + versionName "3.11.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } flavorDimensions "default" diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json index 01903334..f3818d4c 100644 --- a/app/src/main/assets/release_notes/notes.json +++ b/app/src/main/assets/release_notes/notes.json @@ -1,4 +1,9 @@ [ + { + "version": "3.11.0", + "code": "446", + "note": "Added:\n- Display all messages in threads from remote instances (when possible)\n- Allow to unmute/unfollow/unpin a tag from tag timelines\n- Display most used accounts in header menu for an easy switch\n- Automatically add the tag when composing from a tag timeline\n- Add a translate button at the bottom of messages (default: disabled)\n- Add account role in profiles\n- Translate morse\n\nChanged:\n- Disable animations after a refresh\n\nFixed:\n- Contact not working when composing\n- Status bar for black theme\n- Message duplicated in conversations when edited\n- Color issue on Android 5\n- Several crashes" + }, { "version": "3.10.2", "code": "445", diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java index a4dd8a07..9fdeb620 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java @@ -80,8 +80,9 @@ import java.lang.ref.WeakReference; import java.text.Normalizer; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Objects; @@ -124,11 +125,52 @@ public class ComposeAdapter extends RecyclerView.Adapter ALPHA_TO_MORSE = new LinkedHashMap<>(); + for (int i = 0; i < ALPHA.length && i < MORSE.length; i++) { + ALPHA_TO_MORSE.put(MORSE[i], ALPHA[i]); + } + List MORSELIST = Arrays.asList(MORSE2); + MORSELIST.sort((s1, s2) -> s2.length() - s1.length()); + LinkedHashMap MORSE_TO_ALPHA = new LinkedHashMap<>(); + for (String s : MORSELIST) { + MORSE_TO_ALPHA.put(s, ALPHA_TO_MORSE.get(s)); + } + for (String morseCode : MORSELIST) { + if (MORSE_TO_ALPHA.containsKey(morseCode)) { + morseContent = morseContent.replaceAll(Pattern.quote(morseCode), MORSE_TO_ALPHA.get(morseCode)); + } + } + return morseContent; + } + private final List statusList; private final int TYPE_NORMAL = 0; private final BaseAccount account; @@ -540,7 +582,7 @@ public class ComposeAdapter extends RecyclerView.Adapter ALPHA_TO_MORSE = new HashMap<>(); + LinkedHashMap ALPHA_TO_MORSE = new LinkedHashMap<>(); for (int i = 0; i < ALPHA.length && i < MORSE.length; i++) { ALPHA_TO_MORSE.put(ALPHA[i], MORSE[i]); } @@ -552,7 +594,6 @@ public class ComposeAdapter extends RecyclerView.Adapter { @@ -592,7 +633,7 @@ public class ComposeAdapter extends RecyclerView.Adapter { if (focused) { - currentCursorPosition = position; + currentCursorPosition = holder.getLayoutPosition(); } }); if (statusDraft.cursorPosition <= holder.binding.content.length()) { diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java index 6e3e0d9c..41b29f4b 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java @@ -1901,42 +1901,52 @@ public class StatusAdapter extends RecyclerView.Adapter private static void translate(Context context, Status statusToDeal, StatusViewHolder holder, RecyclerView.Adapter adapter) { - MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE; - final MyTransL myTransL = MyTransL.getInstance(et); - myTransL.setObfuscation(true); - Params params = new Params(); - params.setSplit_sentences(false); - params.setFormat(Params.fType.TEXT); - params.setSource_lang("auto"); - myTransL.setLibretranslateDomain("translate.fedilab.app"); String statusToTranslate; - SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); - String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale()); - if (translate != null && translate.equalsIgnoreCase("default")) { - translate = MyTransL.getLocale(); - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) statusToTranslate = Html.fromHtml(statusToDeal.content, Html.FROM_HTML_MODE_LEGACY).toString(); else statusToTranslate = Html.fromHtml(statusToDeal.content).toString(); - myTransL.translate(statusToTranslate, translate, params, new Results() { - @Override - public void onSuccess(Translate translate) { - if (translate.getTranslatedContent() != null) { - statusToDeal.translationShown = true; - statusToDeal.translationContent = translate.getTranslatedContent(); - adapter.notifyItemChanged(holder.getBindingAdapterPosition()); - } else { - Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + + int countMorseChar = ComposeAdapter.countMorseChar(statusToTranslate); + if (countMorseChar < 4) { + MyTransL.translatorEngine et = MyTransL.translatorEngine.LIBRETRANSLATE; + final MyTransL myTransL = MyTransL.getInstance(et); + myTransL.setObfuscation(true); + Params params = new Params(); + params.setSplit_sentences(false); + params.setFormat(Params.fType.TEXT); + params.setSource_lang("auto"); + myTransL.setLibretranslateDomain("translate.fedilab.app"); + + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); + String translate = sharedpreferences.getString(context.getString(R.string.SET_LIVE_TRANSLATE), MyTransL.getLocale()); + if (translate != null && translate.equalsIgnoreCase("default")) { + translate = MyTransL.getLocale(); + } + + + myTransL.translate(statusToTranslate, translate, params, new Results() { + @Override + public void onSuccess(Translate translate) { + if (translate.getTranslatedContent() != null) { + statusToDeal.translationShown = true; + statusToDeal.translationContent = translate.getTranslatedContent(); + adapter.notifyItemChanged(holder.getBindingAdapterPosition()); + } else { + Toasty.error(context, context.getString(R.string.toast_error_translate), Toast.LENGTH_LONG).show(); + } } - } - @Override - public void onFail(HttpsConnectionException httpsConnectionException) { + @Override + public void onFail(HttpsConnectionException httpsConnectionException) { - } - }); + } + }); + } else { + statusToDeal.translationShown = true; + statusToDeal.translationContent = ComposeAdapter.morseToText(statusToTranslate); + adapter.notifyItemChanged(holder.getBindingAdapterPosition()); + } } private static void loadAndAddAttachment(Context context, LayoutMediaBinding layoutMediaBinding, diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/446.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/446.txt new file mode 100644 index 00000000..c703d706 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/446.txt @@ -0,0 +1,18 @@ +Added: +- Display all messages in threads from remote instances (when possible) +- Allow to unmute/unfollow/unpin a tag from tag timelines +- Display most used accounts in header menu for an easy switch +- Automatically add the tag when composing from a tag timeline +- Add a translate button at the bottom of messages (default: disabled) +- Add account role in profiles +- Translate morse + +Changed: +- Disable animations after a refresh + +Fixed: +- Contact not working when composing +- Status bar for black theme +- Message duplicated in conversations when edited +- Color issue on Android 5 +- Several crashes \ No newline at end of file