diff --git a/res/values/strings.xml b/res/values/strings.xml index bc14a8084..d76327d0d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -374,6 +374,8 @@ Delete account Are you sure you want to delete your account data? Switching account… + + Configuration failed. Error: %1$s diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/org/thoughtcrime/securesms/RegistrationActivity.java index 3f4f5dcc9..3c12725ff 100644 --- a/src/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/org/thoughtcrime/securesms/RegistrationActivity.java @@ -20,7 +20,6 @@ import androidx.appcompat.app.AlertDialog; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; -import android.text.util.Linkify; import android.util.Patterns; import android.view.Menu; import android.view.MenuInflater; @@ -555,19 +554,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve dcContext.maybeStartIo(); // start-io is also needed on errors to make previous config work in case of changes dcContext.endCaptureNextError(); progressDialog.dismiss(); - if (dcContext.hasCapturedError()) { - AlertDialog d = new AlertDialog.Builder(this) - .setMessage(dcContext.getCapturedError()) - .setPositiveButton(android.R.string.ok, null) - .create(); - d.show(); - try { - //noinspection ConstantConditions - Linkify.addLinks((TextView) d.findViewById(android.R.id.message), Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES); - } catch(NullPointerException e) { - e.printStackTrace(); - } - } + WelcomeActivity.maybeShowConfigurationError(this, data2); } else if (progress<1000/*progress in permille*/) { int percent = (int)progress / 10; diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/org/thoughtcrime/securesms/WelcomeActivity.java index f1b1cb59b..9b7600410 100644 --- a/src/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/org/thoughtcrime/securesms/WelcomeActivity.java @@ -2,11 +2,14 @@ package org.thoughtcrime.securesms; import android.Manifest; import android.annotation.SuppressLint; +import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.text.util.Linkify; import android.view.View; import android.widget.Button; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; @@ -159,7 +162,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen dcContext.captureNextError(); if (!dcContext.setConfigFromQr(qrCode)) { - progressError(); + progressError(dcContext.getCapturedError()); } // calling configure() results in @@ -168,15 +171,9 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen dcContext.configure(); } - private void progressError() { - dcContext.endCaptureNextError(); + private void progressError(Object data2) { progressDialog.dismiss(); - if (dcContext.hasCapturedError()) { - new AlertDialog.Builder(this) - .setMessage(dcContext.getCapturedError()) - .setPositiveButton(android.R.string.ok, null) - .show(); - } + maybeShowConfigurationError(this, data2); } private void progressUpdate(int progress) { @@ -198,12 +195,28 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen finish(); } + public static void maybeShowConfigurationError(Activity activity, Object data2) { + if (data2 instanceof String && !((String) data2).isEmpty()) { + AlertDialog d = new AlertDialog.Builder(activity) + .setMessage(((String) data2)) + .setPositiveButton(android.R.string.ok, null) + .create(); + d.show(); + try { + //noinspection ConstantConditions + Linkify.addLinks((TextView) d.findViewById(android.R.id.message), Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES); + } catch(NullPointerException e) { + e.printStackTrace(); + } + } + } + @Override public void handleEvent(int eventId, Object data1, Object data2) { if (eventId== DcContext.DC_EVENT_IMEX_PROGRESS ) { long progress = (Long)data1; if (progress==0/*error/aborted*/) { - progressError(); + progressError(dcContext.getCapturedError()); notificationController.close(); } else if (progress<1000/*progress in permille*/) { @@ -226,7 +239,7 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen else if (!manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) { long progress = (Long)data1; if (progress==0/*error/aborted*/) { - progressError(); + progressError(data2); } else if (progress<1000/*progress in permille*/) { progressUpdate((int)progress); diff --git a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java index 13726284a..e338999b4 100644 --- a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java +++ b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java @@ -135,6 +135,7 @@ public class ApplicationDcContext extends DcContext { setStockTranslation(81, context.getString(R.string.systemmsg_ephemeral_timer_four_weeks)); setStockTranslation(82, context.getString(R.string.videochat_invitation)); setStockTranslation(83, context.getString(R.string.videochat_invitation_body)); + setStockTranslation(84, context.getString(R.string.configuration_failed_with_error)); } public File getImexDir() {