From af23c524980d7bab72b024510708b6e5299b08a7 Mon Sep 17 00:00:00 2001 From: f41c0r Date: Fri, 24 Jul 2015 17:33:42 -0500 Subject: [PATCH 1/3] Add registration warning popup to websocket-only users with no google-play --- res/values/strings.xml | 3 + .../securesms/RegistrationActivity.java | 55 +++++++++++++------ 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 1843cd71fa9..b2e42a4ba26 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -345,11 +345,14 @@ than 4.0 must have a registered Google Account. Devices running Android 4.0 or newer do not require a Google account, but must have the Play Store app installed. + "This device setup is not officially supported, and if you experience bugs you will have to resolve them yourself." + Double-check that this is your number! We\'re about to verify it with an SMS. Continue Edit + I Understand Possible problems diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index c8d734c6f3d..f4bb9d4f68a 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -26,6 +26,7 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber; +import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.util.Dialogs; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -198,33 +199,51 @@ public void onClick(View v) { int gcmStatus = GooglePlayServicesUtil.isGooglePlayServicesAvailable(self); if (gcmStatus != ConnectionResult.SUCCESS) { - if (GooglePlayServicesUtil.isUserRecoverableError(gcmStatus)) { + if(gcmStatus == ConnectionResult.SERVICE_MISSING && BuildConfig.FORCE_WEBSOCKETS) { + AlertDialogWrapper.Builder unsupportedDialog = new AlertDialogWrapper.Builder(self); + unsupportedDialog.setTitle(getString(R.string.RegistrationActivity_unsupported)); + unsupportedDialog.setMessage(getString(R.string.RegistrationActivity_websockets_only_unsupported)); + unsupportedDialog.setPositiveButton(getString(R.string.RegistrationActivity_I_understand), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + showDoubleCheckDialog(self,e164number); + } + }); + unsupportedDialog.show(); + } else if (GooglePlayServicesUtil.isUserRecoverableError(gcmStatus)) { GooglePlayServicesUtil.getErrorDialog(gcmStatus, self, 9000).show(); + return; } else { Dialogs.showAlertDialog(self, getString(R.string.RegistrationActivity_unsupported), getString(R.string.RegistrationActivity_sorry_this_device_is_not_supported_for_data_messaging)); + return; } + } else { + showDoubleCheckDialog(self,e164number); } - - AlertDialogWrapper.Builder dialog = new AlertDialogWrapper.Builder(self); - dialog.setTitle(PhoneNumberFormatter.getInternationalFormatFromE164(e164number)); - dialog.setMessage(R.string.RegistrationActivity_we_will_now_verify_that_the_following_number_is_associated_with_your_device_s); - dialog.setPositiveButton(getString(R.string.RegistrationActivity_continue), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent intent = new Intent(self, RegistrationProgressActivity.class); - intent.putExtra("e164number", e164number); - intent.putExtra("master_secret", masterSecret); - startActivity(intent); - finish(); - } - }); - dialog.setNegativeButton(getString(R.string.RegistrationActivity_edit), null); - dialog.show(); } } + private void showDoubleCheckDialog(final RegistrationActivity self, final String e164number){ + AlertDialogWrapper.Builder dialog = new AlertDialogWrapper.Builder(self); + dialog.setTitle(PhoneNumberFormatter.getInternationalFormatFromE164(e164number)); + dialog.setMessage(R.string.RegistrationActivity_we_will_now_verify_that_the_following_number_is_associated_with_your_device_s); + dialog.setPositiveButton(getString(R.string.RegistrationActivity_continue), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(self, RegistrationProgressActivity.class); + intent.putExtra("e164number", e164number); + intent.putExtra("master_secret", masterSecret); + startActivity(intent); + finish(); + } + }); + dialog.setNegativeButton(getString(R.string.RegistrationActivity_edit), null); + dialog.show(); + } + private class CountryCodeChangedListener implements TextWatcher { @Override public void afterTextChanged(Editable s) { From 9b70345334ca43897cc1871718bd9d230192fe32 Mon Sep 17 00:00:00 2001 From: f41c0r Date: Sat, 25 Jul 2015 12:02:37 -0500 Subject: [PATCH 2/3] Doesn't matter what's wrong with GCM as long as you have websockets-only enabled? --- src/org/thoughtcrime/securesms/RegistrationActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index f4bb9d4f68a..557603af0a3 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -199,7 +199,7 @@ public void onClick(View v) { int gcmStatus = GooglePlayServicesUtil.isGooglePlayServicesAvailable(self); if (gcmStatus != ConnectionResult.SUCCESS) { - if(gcmStatus == ConnectionResult.SERVICE_MISSING && BuildConfig.FORCE_WEBSOCKETS) { + if(BuildConfig.FORCE_WEBSOCKETS) { AlertDialogWrapper.Builder unsupportedDialog = new AlertDialogWrapper.Builder(self); unsupportedDialog.setTitle(getString(R.string.RegistrationActivity_unsupported)); unsupportedDialog.setMessage(getString(R.string.RegistrationActivity_websockets_only_unsupported)); From 392996c4001186cc794b316015a73a799fb067fc Mon Sep 17 00:00:00 2001 From: JavaJens Date: Wed, 12 Aug 2015 11:27:05 +0200 Subject: [PATCH 3/3] Always show warning dialog when Websockets is used. Allow support for everyone --- .../securesms/RegistrationActivity.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index 557603af0a3..2faf89b74bd 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -198,8 +198,10 @@ public void onClick(View v) { int gcmStatus = GooglePlayServicesUtil.isGooglePlayServicesAvailable(self); - if (gcmStatus != ConnectionResult.SUCCESS) { - if(BuildConfig.FORCE_WEBSOCKETS) { + if (gcmStatus != ConnectionResult.SUCCESS || BuildConfig.FORCE_WEBSOCKETS) { + if (GooglePlayServicesUtil.isUserRecoverableError(gcmStatus)) { + GooglePlayServicesUtil.getErrorDialog(gcmStatus, self, 9000).show(); + } AlertDialogWrapper.Builder unsupportedDialog = new AlertDialogWrapper.Builder(self); unsupportedDialog.setTitle(getString(R.string.RegistrationActivity_unsupported)); unsupportedDialog.setMessage(getString(R.string.RegistrationActivity_websockets_only_unsupported)); @@ -211,14 +213,6 @@ public void onClick(DialogInterface dialog, int which) { } }); unsupportedDialog.show(); - } else if (GooglePlayServicesUtil.isUserRecoverableError(gcmStatus)) { - GooglePlayServicesUtil.getErrorDialog(gcmStatus, self, 9000).show(); - return; - } else { - Dialogs.showAlertDialog(self, getString(R.string.RegistrationActivity_unsupported), - getString(R.string.RegistrationActivity_sorry_this_device_is_not_supported_for_data_messaging)); - return; - } } else { showDoubleCheckDialog(self,e164number); }