From 9ffa5820b498e7f2efb7164e43c3175068c254e3 Mon Sep 17 00:00:00 2001 From: stom79 Date: Wed, 1 Nov 2017 13:27:40 +0100 Subject: [PATCH] Updates the lib to fit my needs --- app/build.gradle | 2 +- .../mastodon/activities/TootActivity.java | 22 ++++-- .../gouv/etalab/mastodon/helper/Helper.java | 3 + .../mastodon/translation/Translate.java | 30 ++++---- .../mastodon/translation/YandexClient.java | 1 + .../mastodon/translation/YandexQuery.java | 68 ++++++++++--------- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-pt/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 11 files changed, 76 insertions(+), 55 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index e3863a91d..3451bfe94 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'com.google.code.gson:gson:2.8.0' implementation 'org.jsoup:jsoup:1.10.3' implementation 'de.hdodenhof:circleimageview:2.2.0' - implementation 'com.github.mukeshsolanki:country-picker-android:1.1.9' + implementation 'com.github.stom79:country-picker-android:1.2.0-beta-1' safetynetImplementation 'com.google.android.gms:play-services-safetynet:11.4.2' safetynetImplementation 'io.github.kobakei:ratethisapp:1.2.0' } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java index 39312460f..9a08fdf14 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java @@ -98,6 +98,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -773,19 +774,26 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc } if( toot_content.getText().length() == 0 && toot_cw_content.getText().length() == 0) return true; + String dateString = sharedpreferences.getString(Helper.LAST_TRANSLATION_TIME, null); + if( dateString != null){ + Date date = Helper.stringToDate(getApplicationContext(), dateString); + Date dateCompare = new Date( System.currentTimeMillis() + (TimeUnit.SECONDS.toMillis(Helper.SECONDES_BETWEEN_TRANSLATE))); + if( date.before(dateCompare)) + Toast.makeText(getApplicationContext(),R.string.please_wait,Toast.LENGTH_SHORT).show(); + return true; + } picker.setListener(new CountryPickerListener() { @SuppressLint("InflateParams") @Override - public void onSelectCountry(String name, String code, String dialCode, int flagDrawableResID) { + public void onSelectCountry(String name, String code, String dialCode, String locale, int flagDrawableResID) { picker.dismiss(); AlertDialog.Builder transAlert = new AlertDialog.Builder(TootActivity.this); transAlert.setTitle(R.string.translate_toot); popup_trans = getLayoutInflater().inflate( R.layout.popup_translate, null ); transAlert.setView(popup_trans); - - new Translate(getApplicationContext(), Helper.targetField.CW, code, TootActivity.this).privacy(toot_cw_content.getText().toString()); - new Translate(getApplicationContext(), Helper.targetField.STATUS, code, TootActivity.this).privacy(toot_content.getText().toString()); + new Translate(getApplicationContext(), Helper.targetField.CW, locale, TootActivity.this).privacy(toot_cw_content.getText().toString()); + new Translate(getApplicationContext(), Helper.targetField.STATUS, locale, TootActivity.this).privacy(toot_content.getText().toString()); transAlert.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); @@ -1689,7 +1697,11 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc @Override public void onTranslated(Translate translate, Helper.targetField targetField, String translatedResult, Boolean error) { try { - String aJsonString = translate.replace(translatedResult); + String aJsonString; + if( translatedResult != null && translatedResult.length() > 0) + aJsonString = translate.replace(translatedResult); + else + aJsonString = ""; if( popup_trans != null ) { ProgressBar trans_progress_cw = popup_trans.findViewById(R.id.trans_progress_cw); ProgressBar trans_progress_toot = popup_trans.findViewById(R.id.trans_progress_toot); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index 34b3975c7..227d5fea7 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -254,6 +254,9 @@ public class Helper { public static final int MINUTES_BETWEEN_NOTIFICATIONS_REFRESH = 15; public static final int MINUTES_BETWEEN_HOME_TIMELINE = 30; + //Translate wait time + public static final String LAST_TRANSLATION_TIME = "last_translation_time"; + public static final int SECONDES_BETWEEN_TRANSLATE = 60; //Intent public static final String INTENT_ACTION = "intent_action"; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/translation/Translate.java b/app/src/main/java/fr/gouv/etalab/mastodon/translation/Translate.java index 0a0f412c5..9140e806b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/translation/Translate.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/translation/Translate.java @@ -168,19 +168,10 @@ public class Translate { } i++; } - final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - int translator = sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX); if( status == null) { - if (translator == Helper.TRANS_YANDEX) { - if (content != null) - new YandexQuery(this.listener).getYandexTranslation(this, Helper.targetField.STATUS, content, this.targetedLanguage); - if (targetField == Helper.targetField.CW) - new YandexQuery(this.listener).getYandexTranslation(this, Helper.targetField.CW, content, this.targetedLanguage); - } + new YandexQuery(this.listener).getYandexTranslation(this,targetField, content, this.targetedLanguage); }else { - if (translator == Helper.TRANS_YANDEX) { - new YandexQuery(this.listener).getYandexTextview(this, this.status, content, this.targetedLanguage); - } + new YandexQuery(this.listener).getYandexTextview(this, this.status, content, this.targetedLanguage); } } catch (JSONException e) { Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show(); @@ -250,20 +241,23 @@ public class Translate { } private String yandexTranslateToText(String text) throws JSONException, UnsupportedEncodingException{ - JSONObject translationJson = new JSONObject(text); - JSONArray aJsonArray = translationJson.getJSONArray("text"); - String aJsonString = aJsonArray.get(0).toString(); + String aJsonString = null; + if( text !=null) { + JSONObject translationJson = new JSONObject(text); + JSONArray aJsonArray = translationJson.getJSONArray("text"); + aJsonString = aJsonArray.get(0).toString(); /* The one instance where I've seen this happen, the special tag was originally a hashtag ("__t1__"), that Yandex decided to change to a "__q1 - __". */ - aJsonString = aJsonString.replaceAll("__q(\\d+) - __", "__t$1__"); + aJsonString = aJsonString.replaceAll("__q(\\d+) - __", "__t$1__"); - // Noticed this in the very same toot - aJsonString = aJsonString.replace("&", "&"); + // Noticed this in the very same toot + aJsonString = aJsonString.replace("&", "&"); - aJsonString = URLDecoder.decode(aJsonString, "UTF-8"); + aJsonString = URLDecoder.decode(aJsonString, "UTF-8"); + } return aJsonString; } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexClient.java b/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexClient.java index d42700616..ab6171ca3 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexClient.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexClient.java @@ -14,6 +14,7 @@ * see . */ package fr.gouv.etalab.mastodon.translation; + import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexQuery.java b/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexQuery.java index 8d6c597a1..4e88dd59e 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexQuery.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/translation/YandexQuery.java @@ -14,7 +14,6 @@ * see . */ package fr.gouv.etalab.mastodon.translation; - import com.loopj.android.http.AsyncHttpResponseHandler; import org.json.JSONException; import cz.msebera.android.httpclient.Header; @@ -34,45 +33,52 @@ class YandexQuery { } void getYandexTextview(final Translate translate, final Status status, final String text, final String toLanguage) throws JSONException { + if( text != null && text.length() > 0) { + YandexClient.get(text, toLanguage, new AsyncHttpResponseHandler() { + @Override + public void onStart() { - YandexClient.get(text, toLanguage, new AsyncHttpResponseHandler() { - @Override - public void onStart() { + } - } + @Override + public void onSuccess(int statusCode, Header[] headers, byte[] response) { + String str_response = new String(response); + listener.onTranslatedTextview(translate, status, str_response, false); + } - @Override - public void onSuccess(int statusCode, Header[] headers, byte[] response) { - String str_response = new String(response); - listener.onTranslatedTextview(translate, status, str_response,false); - } + @Override + public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { + listener.onTranslatedTextview(translate, status, null, true); + } - @Override - public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { - listener.onTranslatedTextview(translate, status, null, true); - } - - }); + }); + }else { + listener.onTranslatedTextview(translate, status, "", false); + } } void getYandexTranslation(final Translate translate, final Helper.targetField target, final String content, final String toLanguage) throws JSONException { + if( content != null && content.length() > 0) { + YandexClient.get(content, toLanguage, new AsyncHttpResponseHandler() { + @Override + public void onStart() { - YandexClient.get(content, toLanguage, new AsyncHttpResponseHandler() { - @Override - public void onStart() { + } - } + @Override + public void onSuccess(int statusCode, Header[] headers, byte[] response) { + String str_response = new String(response); + listener.onTranslated(translate, target, str_response, false); + } - @Override - public void onSuccess(int statusCode, Header[] headers, byte[] response) { - String str_response = new String(response); - listener.onTranslated(translate, target, str_response,false); - } + @Override + public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { + e.printStackTrace(); + listener.onTranslated(translate, target, null, true); + } - @Override - public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { - listener.onTranslated(translate, target, null, true); - } - - }); + }); + }else{ + listener.onTranslated(translate, target, "", false); + } } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b99638efa..90f6ffbc2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -428,4 +428,5 @@ Select some accounts Für Menschen mit Sehbehinderung beschreiben Translate + Please, wait few seconds before making this action. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4155ce4b1..78ac71a92 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -435,4 +435,5 @@ Sélectionnez des comptes Décrire pour les malvoyants Traduire + Veuillez patienter quelques secondes avant de faire cette action. \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d11de41c9..87de9fde3 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -432,4 +432,5 @@ Kies enkele accounts Omschrijf dit voor mensen met een visuele beperking Translate + Please, wait few seconds before making this action. diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index fc7c60700..d9431726b 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -434,4 +434,5 @@ Select some accounts Describe for the visually impaired Translate + Please, wait few seconds before making this action. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ac1865287..2514a57dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -68,6 +68,7 @@ Show replies Open in browser Translate + Please, wait few seconds before making this action. Home Local timeline