This commit is contained in:
parent
c02676ea4c
commit
875810e1c7
|
@ -39,6 +39,7 @@ import java.net.URL;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import eu.siacs.conversations.Config;
|
||||
|
@ -64,6 +65,7 @@ import eu.siacs.conversations.ui.util.StyledAttributes;
|
|||
import eu.siacs.conversations.utils.CryptoHelper;
|
||||
import eu.siacs.conversations.utils.Resolver;
|
||||
import eu.siacs.conversations.utils.SignupUtils;
|
||||
import eu.siacs.conversations.utils.TorServiceUtils;
|
||||
import eu.siacs.conversations.utils.UIHelper;
|
||||
import eu.siacs.conversations.utils.XmppUri;
|
||||
import eu.siacs.conversations.xml.Element;
|
||||
|
@ -82,7 +84,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
|
||||
private static final int REQUEST_DATA_SAVER = 0xf244;
|
||||
private static final int REQUEST_CHANGE_STATUS = 0xee11;
|
||||
private static final int REQUEST_ORBOT = 0xff22;
|
||||
private final PendingItem<PresenceTemplate> mPendingPresenceTemplate = new PendingItem<>();
|
||||
private final AtomicBoolean mPendingReconnect = new AtomicBoolean(false);
|
||||
private AlertDialog mCaptchaDialog = null;
|
||||
private Jid jidToEdit;
|
||||
private boolean mInitMode = false;
|
||||
|
@ -155,8 +159,17 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
}
|
||||
|
||||
XmppConnection connection = mAccount == null ? null : mAccount.getXmppConnection();
|
||||
boolean openRegistrationUrl = registerNewAccount && !accountInfoEdited && mAccount != null && mAccount.getStatus() == Account.State.REGISTRATION_WEB;
|
||||
boolean openPaymentUrl = mAccount != null && mAccount.getStatus() == Account.State.PAYMENT_REQUIRED;
|
||||
final boolean startOrbot = mAccount != null && mAccount.getStatus() == Account.State.TOR_NOT_AVAILABLE;
|
||||
if (startOrbot) {
|
||||
if (TorServiceUtils.isOrbotInstalled(EditAccountActivity.this)) {
|
||||
TorServiceUtils.startOrbot(EditAccountActivity.this, REQUEST_ORBOT);
|
||||
} else {
|
||||
TorServiceUtils.downloadOrbot(EditAccountActivity.this, REQUEST_ORBOT);
|
||||
}
|
||||
return;
|
||||
}
|
||||
final boolean openRegistrationUrl = registerNewAccount && !accountInfoEdited && mAccount != null && mAccount.getStatus() == Account.State.REGISTRATION_WEB;
|
||||
final boolean openPaymentUrl = mAccount != null && mAccount.getStatus() == Account.State.PAYMENT_REQUIRED;
|
||||
final boolean redirectionWorthyStatus = openPaymentUrl || openRegistrationUrl;
|
||||
URL url = connection != null && redirectionWorthyStatus ? connection.getRedirectionUrl() : null;
|
||||
if (url != null && !wasDisabled) {
|
||||
|
@ -420,6 +433,13 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
Log.d(Config.LOGTAG, "pgp result not ok");
|
||||
}
|
||||
}
|
||||
if (requestCode == REQUEST_ORBOT) {
|
||||
if (xmppConnectionService != null && mAccount != null) {
|
||||
xmppConnectionService.reconnectAccountInBackground(mAccount);
|
||||
} else {
|
||||
mPendingReconnect.set(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -456,6 +476,12 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
} else if (mAccount != null && mAccount.getStatus() == Account.State.DISABLED && !mInitMode) {
|
||||
this.binding.saveButton.setEnabled(true);
|
||||
this.binding.saveButton.setText(R.string.enable);
|
||||
} else if (torNeedsInstall(mAccount)) {
|
||||
this.binding.saveButton.setEnabled(true);
|
||||
this.binding.saveButton.setText(R.string.install_orbot);
|
||||
} else if (torNeedsStart(mAccount)) {
|
||||
this.binding.saveButton.setEnabled(true);
|
||||
this.binding.saveButton.setText(R.string.start_orbot);
|
||||
} else {
|
||||
this.binding.saveButton.setEnabled(true);
|
||||
if (!mInitMode) {
|
||||
|
@ -485,6 +511,14 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
}
|
||||
}
|
||||
|
||||
private boolean torNeedsInstall(final Account account) {
|
||||
return account != null && account.getStatus() == Account.State.TOR_NOT_AVAILABLE && !TorServiceUtils.isOrbotInstalled(this);
|
||||
}
|
||||
|
||||
private boolean torNeedsStart(final Account account) {
|
||||
return account != null && account.getStatus() == Account.State.TOR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
protected boolean accountInfoEdited() {
|
||||
if (this.mAccount == null) {
|
||||
return false;
|
||||
|
@ -685,6 +719,11 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
|||
}
|
||||
|
||||
if (mAccount != null) {
|
||||
|
||||
if (mPendingReconnect.compareAndSet(true, false)) {
|
||||
xmppConnectionService.reconnectAccountInBackground(mAccount);
|
||||
}
|
||||
|
||||
this.mInitMode |= this.mAccount.isOptionSet(Account.OPTION_REGISTER);
|
||||
this.mUsernameMode |= mAccount.isOptionSet(Account.OPTION_MAGIC_CREATE) && mAccount.isOptionSet(Account.OPTION_REGISTER);
|
||||
if (this.mAccount.getPrivateKeyAlias() != null) {
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
package eu.siacs.conversations.utils;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
|
||||
import eu.siacs.conversations.R;
|
||||
import me.drakeet.support.toast.ToastCompat;
|
||||
|
||||
public class TorServiceUtils {
|
||||
|
||||
private final static String URI_ORBOT = "org.torproject.android";
|
||||
private static final Uri ORBOT_PLAYSTORE_URI = Uri.parse("market://details?id=" + URI_ORBOT);
|
||||
private final static String ACTION_START_TOR = "org.torproject.android.START_TOR";
|
||||
|
||||
public static boolean isOrbotInstalled(Context context) {
|
||||
try {
|
||||
context.getPackageManager().getPackageInfo(URI_ORBOT, PackageManager.GET_ACTIVITIES);
|
||||
return true;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void downloadOrbot(Activity activity, int requestCode) {
|
||||
final Intent intent = new Intent(Intent.ACTION_VIEW, ORBOT_PLAYSTORE_URI);
|
||||
try {
|
||||
activity.startActivityForResult(intent, requestCode);
|
||||
} catch (ActivityNotFoundException e) {
|
||||
ToastCompat.makeText(activity, R.string.no_market_app_installed, ToastCompat.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static void startOrbot(Activity activity, int requestCode) {
|
||||
final Intent launchIntent = new Intent(URI_ORBOT);
|
||||
launchIntent.setAction(ACTION_START_TOR);
|
||||
activity.startActivityForResult(launchIntent, requestCode);
|
||||
}
|
||||
}
|
|
@ -800,4 +800,7 @@
|
|||
<string name="enter_your_name">Enter your name</string>
|
||||
<string name="no_name_set_instructions">Use the edit button to set your name.</string>
|
||||
<string name="reject_request">Reject request</string>
|
||||
<string name="install_orbot">Install Orbot</string>
|
||||
<string name="start_orbot">Start Orbot</string>
|
||||
<string name="no_market_app_installed">No market app installed.</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in New Issue