allow editing transports

This commit is contained in:
adbenitez
2025-12-02 05:20:42 +01:00
parent 115ffae588
commit 2f05b20b0f
7 changed files with 64 additions and 12 deletions
@@ -59,6 +59,7 @@ import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.reactions.AddReactionView;
import org.thoughtcrime.securesms.reactions.ReactionsDetailsFragment;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.relay.EditRelayActivity;
import org.thoughtcrime.securesms.util.AccessibilityUtil;
import org.thoughtcrime.securesms.util.Debouncer;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
@@ -763,7 +764,9 @@ public class ConversationFragment extends MessageSelectorFragment
&& messageRecord.getText().contains(self_mail)
&& getListAdapter().getChat().isDeviceTalk()) {
// This is a device message informing the user that the password is wrong
startActivity(new Intent(getActivity(), EditTransportActivity.class));
Intent intent = new Intent(getActivity(), EditRelayActivity.class);
intent.putExtra(EditRelayActivity.EXTRA_ADDR, self_mail);
startActivity(intent);
}
}
}
@@ -49,6 +49,7 @@ import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.profiles.AvatarHelper;
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
import org.thoughtcrime.securesms.relay.EditRelayActivity;
import org.thoughtcrime.securesms.scribbles.ScribbleActivity;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.Prefs;
@@ -356,7 +357,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
signUpDialog.dismiss();
});
view.findViewById(R.id.login_button).setOnClickListener((v) -> {
startRegistrationActivity();
startActivity(new Intent(this, EditRelayActivity.class));
signUpDialog.dismiss();
});
view.findViewById(R.id.scan_qr_button).setOnClickListener((v) -> {
@@ -367,11 +368,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
signUpDialog.show();
}
private void startRegistrationActivity() {
Intent intent = new Intent(this, EditTransportActivity.class);
startActivity(intent);
}
private void updateProvider() {
if (isDcLogin) {
signUpBtn.setText(R.string.login_title);
@@ -1,4 +1,4 @@
package org.thoughtcrime.securesms;
package org.thoughtcrime.securesms.relay;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
import static org.thoughtcrime.securesms.connect.DcHelper.getContext;
@@ -10,6 +10,7 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.util.Patterns;
import android.view.Menu;
import android.view.MenuInflater;
@@ -32,6 +33,11 @@ import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcProvider;
import com.google.android.material.textfield.TextInputEditText;
import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.LogViewActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.WelcomeActivity;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.permissions.Permissions;
@@ -49,7 +55,7 @@ import chat.delta.rpc.types.EnteredCertificateChecks;
import chat.delta.rpc.types.EnteredLoginParam;
import chat.delta.rpc.types.Socket;
public class EditTransportActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
public class EditRelayActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
private enum VerificationType {
EMAIL,
@@ -57,6 +63,9 @@ public class EditTransportActivity extends BaseActionBarActivity implements DcEv
PORT,
}
private static final String TAG = EditRelayActivity.class.getSimpleName();
public final static String EXTRA_ADDR = "extra_addr";
private TextInputEditText emailInput;
private TextInputEditText passwordInput;
@@ -118,11 +127,26 @@ public class EditTransportActivity extends BaseActionBarActivity implements DcEv
startActivity(new Intent(this, ProxySettingsActivity.class));
});
String addr = getIntent().getStringExtra(EXTRA_ADDR);
EnteredLoginParam config = null;
try {
List<EnteredLoginParam> relays = rpc.listTransports(accId);
if (!relays.isEmpty()) config = relays.get(0);
} catch (RpcException ignored) {}
for (EnteredLoginParam relay : relays) {
if (addr != null && addr.equals(relay.addr)) {
config = relay;
break;
}
}
if (config == null && !relays.isEmpty()) {
Log.e(TAG, "Error got unknown address: " + addr);
finish();
return;
};
} catch (RpcException e) {
Log.e(TAG, "Error calling Rpc.listTransports()", e);
finish();
return;
}
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.relay;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
@@ -101,6 +102,13 @@ public class RelayListActivity extends BaseActionBarActivity
}
}
@Override
public void onRelayEdit(EnteredLoginParam relay) {
Intent intent = new Intent(this, EditRelayActivity.class);
intent.putExtra(EditRelayActivity.EXTRA_ADDR, relay.addr);
startActivity(intent);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
@@ -24,6 +24,7 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
public interface OnRelayClickListener {
void onRelayClick(EnteredLoginParam relay);
void onRelayEdit(EnteredLoginParam relay);
}
public RelayListAdapter(OnRelayClickListener listener) {
@@ -63,11 +64,13 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
public static class RelayViewHolder extends RecyclerView.ViewHolder {
private final TextView titleText;
private final ImageView mainIndicator;
private final ImageView editButton;
public RelayViewHolder(@NonNull View itemView) {
super(itemView);
titleText = itemView.findViewById(R.id.title);
mainIndicator = itemView.findViewById(R.id.main_indicator);
editButton = itemView.findViewById(R.id.edit_button);
}
public void bind(EnteredLoginParam relay, boolean isMain, OnRelayClickListener listener) {
@@ -79,6 +82,12 @@ public class RelayListAdapter extends RecyclerView.Adapter<RelayListAdapter.Rela
listener.onRelayClick(relay);
}
});
editButton.setOnClickListener(v -> {
if (listener != null) {
listener.onRelayEdit(relay);
}
});
}
}
}